Expedition | 무료 온디맨드

실무자를 위한 기술 트랙, 리더를 위한 비즈니스 세션

Snowflake for Developers/개발자 솔루션 센터/Tasty Bytes - 제로부터 Snowflake까지 - 협업
Quickstart

Tasty Bytes - 제로부터 Snowflake까지 - 협업

Jacob Kranzler

Snowflake 마켓플레이스를 통한 서드 파티 데이터에 대한 직접 액세스

개요

협업을 집중적으로 다루는 Tasty Bytes - 제로부터 Snowflake까지 Quickstart에 오신 것을 환영합니다! 이 Quickstart에서는 Snowflake 마켓플레이스를 통해 자사 데이터를 날씨 데이터로 보강하는 방법을 집중적으로 다루겠습니다. Snowflake 마켓플레이스는 그 어떠한 ETL, 데이터 파이프라인 또는 통합도 설정하지 않고 서드 파티 데이터와 앱을 찾고, 체험하고, 구매하는 장소입니다.

사전 필요 조건 및 지식

  • 시작하기 전에 평가판 계정 설정과 이 Quickstart를 완료하기 위해 필요한 Tasty Bytes 기초를 배포하는 것을 안내하는 Tasty Bytes 소개 Quickstart를 완료하십시오.

알아볼 내용

  • Snowflake 마켓플레이스에 액세스하기
  • 계정에서 라이브 Weather Source 데이터 획득하기
  • 뷰 생성하기
  • SQL 함수 생성하기
  • 시각적 인사이트를 탐색하기 위해 Snowsight 그래프 활용하기

구축할 것

  • 자사 매출 및 서드 파티 날씨 데이터 조정
  • 원활한 화씨 섭씨 변환 가능성
  • 원활한 인치 밀리미터 변환 가능성
  • Snowflake 마켓플레이스를 통해 추가 인사이트를 얻는 방법 이해

워크시트 생성 및 SQL 복사

개요

이 Quickstart에서는 Snowsight SQL 워크시트를 통해 테마가 Tasty Bytes인 스토리를 따라갈 것입니다. 이 페이지에는 추가 해설, 이미지 및 설명서 링크가 포함되어 있으며 나란히 사용할 수 있는 가이드입니다.

이 섹션은 Snowflake에 로그인하고, 새로운 워크시트를 생성하고, 워크시트의 이름을 바꾸고, SQL을 GitHub에서 복사하고, 이 Quickstart에서 활용할 SQL을 붙여넣는 방법을 안내합니다.

1단계 - URL을 통해 Snowflake에 액세스

  • 브라우저 창을 열고 Snowflake 계정 URL을 입력합니다.

2단계 - Snowflake에 로그인

  • Snowflake 계정에 로그인합니다.
    • assets/log_into_snowflake.gif

3단계 - Worksheets로 이동

  • 왼쪽 탐색 메뉴에 있는 Worksheets 탭을 클릭합니다.
    • assets/worksheet_tab.png

4단계 - 워크시트 생성

  • Worksheets 내에서 Snowsight 오른쪽 상단 모서리에 있는 ‘+’ 버튼을 클릭하고 ‘SQL Worksheet’를 선택합니다.
    • assets/+_sqlworksheet.png

5단계 - 워크시트 이름 바꾸기

  • 자동으로 생성된 Timestamp 이름을 클릭하고 ‘Tasty Bytes - Collaboration’을 입력하여 워크시트의 이름을 바꿉니다.
    • assets/rename_worksheet_tasty_bytes_setup.gif

6단계 - GitHub에서 Quickstart SQL에 액세스

  • GitHub에서 호스팅된 Tasty Bytes SQL 파일과 연결된 아래 버튼을 클릭합니다.

7단계 - GitHub에서 설정 SQL 복사

  • GitHub 내에서 오른쪽으로 이동하여 ‘Copy raw contents’를 클릭합니다. 이렇게 하면 모든 필수 SQL이 클립보드로 복사됩니다.
    • assets/github_copy_raw_contents.png

8단계 - 설정 SQL을 GitHub에서 Snowflake 워크시트로 붙여넣기

  • Snowsight 및 새롭게 생성한 워크시트로 되돌아가 방금 GitHub에서 복사한 것을 붙여넣습니다(Mac 바로 가기 키 CMD + V, Windows 바로 가기 키 CTRL + V).

9단계 - 다음 클릭 -->

자사 데이터에서 매출이 0인 날짜 조사

개요

Tasty Bytes 금융 분석가는 전년 대비 분석을 실행할 때 여러 도시에서 트럭 매출이 0인 설명할 수 없는 날짜가 존재한다고 알려왔습니다. 금융 분석가가 제시한 하나의 사례는 2022년 2월 독일 함부르크입니다.

1단계 - 추세를 위해 판매 시점 데이터 쿼리

초기에 역할과 웨어하우스 콘텍스트를 tasty_data_engineer 및 tasty_de_wh로 설정하기 위해 이 단계에서 3개의 쿼리를 실행하며 시작하겠습니다. 콘텍스트가 설정되면 분석 orders_v 뷰를 쿼리하여 2022년 독일 함부르크의 매출 결과 세트를 제공하겠습니다.

USE ROLE tasty_data_engineer;
USE WAREHOUSE tasty_de_wh;

SELECT 
    o.date,
    SUM(o.price) AS daily_sales
FROM frostbyte_tasty_bytes.analytics.orders_v o
WHERE 1=1
    AND o.country = 'Germany'
    AND o.primary_city = 'Hamburg'
    AND DATE(o.order_ts) BETWEEN '2022-02-10' AND '2022-02-28'
GROUP BY o.date
ORDER BY o.date ASC;
assets/3.1.orders_v.png
위에서 확인한 내용에 따르면 2월의 몇몇 날짜에 일일 매출 기록이 없다는 점에서 분석가의 의견에 동의할 수 있습니다. 따라서 분석가는 확실히 문제가 있는 부분을 지적했습니다. 다음 섹션에서는 이러한 현상이 발생한 이유를 조금 더 자세히 알아보겠습니다.

2단계 - 다음 클릭 -->

Snowflake 마켓플레이스의 Weather Source 데이터 활용

개요

이전 섹션을 보면 2월 16일부터 2월 21일까지의 독일 함부르크에서 발생한 매출이 누락된 것 같습니다. 자사 데이터 내에서는 이 부분을 조사하기 위해 사용할 수 있는 것이 거의 없습니다. 하지만 더 큰 요인이 여기에 영향을 줬을 것입니다.

Snowflake 마켓플레이스를 활용하여 바로 탐색할 수 있는 하나의 아이디어는 기상 이변과 Weather Source에서 제공한 무료 공개 목록입니다.

1단계 - Weather Source LLC: frostbyte Snowflake 마켓플레이스 목록 획득

Snowflake 마켓플레이스는 혁신적인 비즈니스 솔루션을 지원하기 위해 필요한 데이터와 애플리케이션을 찾고, 체험하고, 구매하기 가장 좋은 장소입니다. 이 단계에서는 Weather Source LLC: frostbyte 목록에 액세스하여 함부르크 매출 하락에 대한 추가 분석을 수행하는 것을 돕겠습니다.

아래 단계와 동영상에 따라 Snowflake 계정에서 이 목록을 획득합니다.

  • 클릭 -> 홈
  • 클릭 -> Marketplace
  • 검색 -> frostbyte
  • 클릭 -> Weather Source LLC: frostbyte
  • 클릭 -> Get
  • 데이터베이스 이름 바꾸기 -> FROSTBYTE_WEATHERSOURCE(전부 대문자)
  • 추가 역할에 부여 -> PUBLIC
assets/4.1.acquire_weather_source.gif

2단계 - 자사 및 서드 파티 데이터 조정

공유 frostbyte_weathersource 데이터베이스를 사용하는 상태로 이 단계의 쿼리를 실행하여 harmonized.daily_weather_v 뷰를 생성하십시오. 그러면 2개의 Weather Source 테이블과 Tasty Bytes 푸드 트럭이 운영되는 국가와 도시에 대한 국가 테이블을 결합할 수 있습니다.

CREATE OR REPLACE VIEW frostbyte_tasty_bytes.harmonized.daily_weather_v
    AS
SELECT 
    hd.*,
    TO_VARCHAR(hd.date_valid_std, 'YYYY-MM') AS yyyy_mm,
    pc.city_name AS city,
    c.country AS country_desc
FROM frostbyte_weathersource.onpoint_id.history_day hd
JOIN frostbyte_weathersource.onpoint_id.postal_codes pc
    ON pc.postal_code = hd.postal_code
    AND pc.country = hd.country
JOIN frostbyte_tasty_bytes.raw_pos.country c
    ON c.iso_country = hd.country
    AND c.city = hd.city_name;
assets/4.2.daily_weather_v.png
위 뷰 정의에서 확인할 수 있듯이 onpoint_id 스키마 내 2개의 frostbyte_weathersource 테이블을 결합한 다음 frostbyte_tasty_bytes 데이터베이스 및 raw_pos 스키마의 country 테이블과 이를 조정하고 있습니다.

이러한 작업은 일반적으로 조정 계층(실버 영역이라고도 함)에서 찾아볼 수 있습니다.

3단계 - 일일 기온 시각화

조정 스키마에서 daily_weather_v 뷰를 사용하는 상태로 다음 쿼리를 실행하여 2022년 2월 함부르크의 일평균 기온을 살펴보겠습니다.

이 과정에서 AVG, YEAR 및 MONTH 함수를 활용하겠습니다.

SELECT 
    dw.country_desc,
    dw.city_name,
    dw.date_valid_std,
    AVG(dw.avg_temperature_air_2m_f) AS avg_temperature_air_2m_f
FROM frostbyte_tasty_bytes.harmonized.daily_weather_v dw
WHERE 1=1
    AND dw.country_desc = 'Germany'
    AND dw.city_name = 'Hamburg'
    AND YEAR(date_valid_std) = '2022'
    AND MONTH(date_valid_std) = '2'
GROUP BY dw.country_desc, dw.city_name, dw.date_valid_std
ORDER BY dw.date_valid_std DESC;
assets/4.3.results.png

추세를 추가적으로 조사하기 위해 Snowsight 그래프 생성을 활용하여 시간의 흐름에 따른 평균 기온의 선 그래프를 생성하겠습니다.

assets/4.3.chart.png

위에서 확인한 내용에 따르면 트럭에서 매출이 없는 날짜가 발생한 명백한 이유를 아직 찾지 못했습니다. 다음 단계에서 이유를 설명할 수도 있는 다른 요인을 찾아보겠습니다.

4단계 - 바람 데이터 가져오기

이전 단계에서 확인했듯이 일평균 기온은 함부르크에서 매출이 0인 날짜가 발생한 이유가 아닌 것 같습니다. 다행히 Weather Source는 심층적으로 알아볼 수 있는 다른 날씨 지표를 제공합니다.

이제 바람 지표를 가져오기 위해 조정 뷰를 활용할 다음 쿼리를 실행하십시오. 이 쿼리에서는 MAX 함수가 사용됩니다.

SELECT 
    dw.country_desc,
    dw.city_name,
    dw.date_valid_std,
    MAX(dw.max_wind_speed_100m_mph) AS max_wind_speed_100m_mph
FROM frostbyte_tasty_bytes.harmonized.daily_weather_v dw
WHERE 1=1
    AND dw.country_desc IN ('Germany')
    AND dw.city_name = 'Hamburg'
    AND YEAR(date_valid_std) = '2022'
    AND MONTH(date_valid_std) = '2'
GROUP BY dw.country_desc, dw.city_name, dw.date_valid_std
ORDER BY dw.date_valid_std DESC;
assets/4.4.result.png

여기서도 빠른 Snowsight 그래프를 통해 이러한 데이터의 추세를 더 잘 나타낼 수 있습니다. 결과에서 그래프로 이동하기 위해 아래 스크린샷에 있는 화살표를 따르십시오.

assets/4.4.chart.png

찾았습니다! 매출이 0인 날짜에는 바람이 태풍 수준이었습니다. 이것이 바로 트럭이 이러한 날짜에 아무것도 판매할 수 없었던 더 타당한 이유인 것 같습니다. 하지만 조정에서 이 분석을 실행했기에 이제 분석가가 이러한 인사이트에 스스로 액세스할 수 있도록 분석에 이 내용을 제공하기 위한 여정을 시작하겠습니다.

5단계 - 다음 클릭 -->

데이터 인사이트 민주화

개요

이제 태풍 수준의 바람이 아마도 금융 분석가가 언급했던 매출이 0인 날짜에 영향을 준 것 같다고 판단했습니다.

모든 Tasty Bytes 직원이 액세스할 수 있는 분석 뷰를 배포하여 이제 이러한 연구를 조직 내 모두에게 제공하겠습니다.

1단계- SQL 함수 생성

세계적인 회사로서 우선 화씨 섭씨 변환 및 인치 밀리미터 변환을 위한 2개의 SQL 함수를 생성하며 프로세스를 시작하겠습니다.

이 단계에서는 CREATE FUNCTION 명령을 활용하는 fahrenheit_to_celsius 및 inch_to_millimeter 함수를 생성하기 위해 2개의 쿼리를 하나씩 실행하십시오.

CREATE OR REPLACE FUNCTION frostbyte_tasty_bytes.analytics.fahrenheit_to_celsius(temp_f NUMBER(35,4))
RETURNS NUMBER(35,4)
AS
$$
    (temp_f - 32) * (5/9)
$$;
assets/5.1.f_to_c.png
CREATE OR REPLACE FUNCTION frostbyte_tasty_bytes.analytics.inch_to_millimeter(inch NUMBER(35,4))
RETURNS NUMBER(35,4)
    AS
$$
    inch * 25.4
$$;
assets/5.1.inch_to_mm.png

2단계 - 뷰를 위한 SQL 생성

분석 뷰를 배포하기 전에 일일 매출과 날씨를 결합하기 위해 뷰에서 사용할 SQL을 생성하고 SQL 변환 함수를 활용하겠습니다.

독일 함부르크를 필터링하고 ZEROIFNULL, ROUND 및 DATE와 같이 아직 확인하지 않은 몇몇 함수를 활용하는 다음 쿼리를 실행하십시오.

SELECT 
    fd.date_valid_std AS date,
    fd.city_name,
    fd.country_desc,
    ZEROIFNULL(SUM(odv.price)) AS daily_sales,
    ROUND(AVG(fd.avg_temperature_air_2m_f),2) AS avg_temperature_fahrenheit,
    ROUND(AVG(frostbyte_tasty_bytes.analytics.fahrenheit_to_celsius(fd.avg_temperature_air_2m_f)),2) AS avg_temperature_celsius,
    ROUND(AVG(fd.tot_precipitation_in),2) AS avg_precipitation_inches,
    ROUND(AVG(frostbyte_tasty_bytes.analytics.inch_to_millimeter(fd.tot_precipitation_in)),2) AS avg_precipitation_millimeters,
    MAX(fd.max_wind_speed_100m_mph) AS max_wind_speed_100m_mph
FROM frostbyte_tasty_bytes.harmonized.daily_weather_v fd
LEFT JOIN frostbyte_tasty_bytes.harmonized.orders_v odv
    ON fd.date_valid_std = DATE(odv.order_ts)
    AND fd.city_name = odv.primary_city
    AND fd.country_desc = odv.country
WHERE 1=1
    AND fd.country_desc = 'Germany'
    AND fd.city = 'Hamburg'
    AND fd.yyyy_mm = '2022-02'
GROUP BY fd.date_valid_std, fd.city_name, fd.country_desc
ORDER BY fd.date_valid_std ASC;
assets/5.2.SQL.png

방금 수신한 결과가 만족스럽습니다. 이제 다음 단계에서는 뷰에서 이 SQL을 래핑할 수 있습니다.

3단계 - 분석 뷰 배포

방금 탐색한 동일한 쿼리를 사용하여 WHERE 절에서 필터를 제거하고, COMMENT를 추가하고, 이를 daily_city_metrics_v 뷰로 analytics 스키마에 전달해야 합니다.

이 작업을 수행하기 위해 이제 이 섹션의 마지막 쿼리를 실행하십시오.

CREATE OR REPLACE VIEW frostbyte_tasty_bytes.analytics.daily_city_metrics_v
COMMENT = 'Daily Weather Source Metrics and Orders Data for our Cities'
    AS
SELECT 
    fd.date_valid_std AS date,
    fd.city_name,
    fd.country_desc,
    ZEROIFNULL(SUM(odv.price)) AS daily_sales,
    ROUND(AVG(fd.avg_temperature_air_2m_f),2) AS avg_temperature_fahrenheit,
    ROUND(AVG(frostbyte_tasty_bytes.analytics.fahrenheit_to_celsius(fd.avg_temperature_air_2m_f)),2) AS avg_temperature_celsius,
    ROUND(AVG(fd.tot_precipitation_in),2) AS avg_precipitation_inches,
    ROUND(AVG(frostbyte_tasty_bytes.analytics.inch_to_millimeter(fd.tot_precipitation_in)),2) AS avg_precipitation_millimeters,
    MAX(fd.max_wind_speed_100m_mph) AS max_wind_speed_100m_mph
FROM frostbyte_tasty_bytes.harmonized.daily_weather_v fd
LEFT JOIN frostbyte_tasty_bytes.harmonized.orders_v odv
    ON fd.date_valid_std = DATE(odv.order_ts)
    AND fd.city_name = odv.primary_city
    AND fd.country_desc = odv.country
WHERE 1=1
GROUP BY fd.date_valid_std, fd.city_name, fd.country_desc;
assets/5.3.view.png

이제 이러한 인사이트를 Tasty Bytes 조직을 대상으로 민주화했습니다. 다음 섹션에서 모두 결합하여 작업을 검증하겠습니다.

4단계 - 다음 클릭 -->

매출 및 마켓플레이스 날씨 데이터에서 인사이트 도출

개요

푸드 트럭이 운영되는 모든 도시에 대한 사용 가능한 매출 및 날씨 데이터를 통해 이제 금융 분석가에게 인사이트를 제공하는 데 걸리는 시간을 단축한 방법을 알아보겠습니다.

1단계 - 분석 간소화

앞서 함부르크 매출 이슈를 조사하기 위해 판매 시점 및 Weather Source 데이터를 수동으로 결합했지만, analytics.daily_city_metrics_v 뷰를 통해 이 프로세스를 크게 간소화했습니다.

단일 뷰에서 이를 단순한 SELECT 문으로 만들어 이 분석을 얼마나 더 단순하게 만들었는지를 보여주는 다음 쿼리를 실행하십시오.

SELECT 
    dcm.date,
    dcm.city_name,
    dcm.country_desc,
    dcm.daily_sales,
    dcm.avg_temperature_fahrenheit,
    dcm.avg_temperature_celsius,
    dcm.avg_precipitation_inches,
    dcm.avg_precipitation_millimeters,
    dcm.max_wind_speed_100m_mph
FROM frostbyte_tasty_bytes.analytics.daily_city_metrics_v dcm
WHERE 1=1
    AND dcm.country_desc = 'Germany'
    AND dcm.city_name = 'Hamburg'
    AND dcm.date BETWEEN '2022-02-01' AND '2022-02-26'
ORDER BY date DESC;
assets/6.1.results.png

좋습니다! 금융 분석가가 초기에 연구를 진행할 때 이것이 제공되었다면 인사이트를 바로 확인할 수 있기에 데이터 팀에 도움을 요청하지 않아도 되었을 것입니다.

이 Quickstart를 완료하면서 작업을 통해 실제 비즈니스 가치를 얼마나 빠르게 도출할 수 있는지 그리고 추가적인 데이터 인사이트를 확보하기 위해 Snowflake 마켓플레이스를 사용하는 것이 얼마나 쉬운지 확인했습니다.

2단계 - 다음 클릭 -->

종료 및 다음 단계

결론

훌륭합니다! Tasty Bytes - 제로부터 Snowflake까지 - 협업 Quickstart를 성공적으로 완료하셨습니다.

이를 완료하면서 진행한 내용은 다음과 같습니다.

  • Snowflake 마켓플레이스에 액세스
  • 계정에서 라이브 Weather Source 데이터 획득
  • 뷰 생성
  • SQL 함수 생성
  • 시각적 인사이트를 탐색하기 위해 Snowsight 그래프 활용

이 Quickstart를 다시 실행하려면 관련 워크시트 하단에 있는 초기화 스크립트를 활용하십시오.

다음 단계

Snowflake 데이터 클라우드에서의 여정을 계속하려면 이제 아래 링크를 방문하여 사용 가능한 모든 Tasty Bytes 활용 - Quickstart를 확인하십시오.

Updated 2026년 11월 12일

This content is provided as is, and is not maintained on an ongoing basis. It may be out of date with current Snowflake instances