SQL을 사용한 Snowflake의 시계열 예측
수요 예측, 공급망 및 재고 관리, 재무 계획은 비즈니스 운영에 중요합니다. Modelstar를 사용하면 단 한 줄의 SQL로 Snowflake에서 그렇게 할 수 있습니다.

시계열 예측이란 무엇이며 사용 사례는 무엇입니까?
시계열 예측은 과거 시간 샘플링 데이터를 기반으로 값을 예측하는 기술입니다.
예측은 비즈니스 관리
예측은 회사가 공급망 관리, 재고 관리(재입고 수량 및 시기), 재무 계획, 제품 로드맵 및 고용 전략 등에 대한 적절한 비즈니스 결정을 내리는 데 도움이 될 수 있습니다. 정확하고 시기 적절한 예측 결과를 통해 비즈니스 관리는 다음을 수행할 수 있습니다. 리소스를 할당하거나 순풍을 활용하는 방법에 대한 더 나은 이해.
예측의 기술적 과제
예측은 시계열 분석의 응용입니다. 고려해야 할 몇 가지 구성 요소가 있습니다.
- 계절성: 시간이 지남에 따라 주기적으로 변경됩니다. 예: 여름과 겨울 휴가는 매년 또는 아침에 더 많은 커피 소비는 매일입니다.
- 추세: 지속적인 비주기적 변화. 예: 지난 5년간 회사 매출 성장.
- 파괴적 사건: 갑작스러운 변화. 휴일이나 서비스 유지 관리와 같은 예측 가능한 요인과 무작위 오류 또는 버그와 같은 예측할 수 없는 문제로 인해 발생할 수 있습니다.
구현의 기술적 과제
Python에는 기계 학습 및 예측 알고리즘을 구현하기 위한 풍부한 생태계가 있습니다. Python을 데이터 웨어하우스로 가져오고 UDF를 사용하여 SQL에서 Python을 실행하는 Snowflake의 새로운 Snowpark 기능은 데이터에서 수행할 수 있는 변환에 대한 게임 체인저입니다. 그러나 예측을 수행하기 위해 종단 솔루션을 구현하려는 경우 벅차고 시간이 많이 소요될 수 있습니다. Modelstar 는 Python의 강력한 기능을 SQL에 제공하는 능률적인 솔루션을 제공하여 이 문제를 해결합니다.
Modelstar 는 오픈 소스 프로젝트이며 Snowpark와 같은 Snowflake에서 최근 출시된 기능을 기반으로 합니다. Snowflake 컴퓨팅에서 종속성, 모델 아티팩트 및 파일 I/O를 자동으로 처리합니다.
예측 을 위한 SQL 1-liner
Modelstar 를 사용하면 Snowflake 내부의 SQL 한 줄로 예측 모델을 배송 및 관리하고 모델링 결과를 시각화할 수 있습니다. 내부적으로 Modelstar는 사전 구축된 예측 알고리즘을 제공하고 이를 데이터베이스의 SQL 저장 프로시저로 노출합니다. 이 예에서는 univariate_time_series_forecast
( API 문서 )를 사용합니다. 이 API는 업계에서 가장 널리 사용되는 예측 알고리즘 중 하나인 Prophet 오픈 소스 라이브러리를 기반으로 합니다.
이 자습서에서는 시계열 예측 모델 및 보고서를 작성하는 단계를 제공합니다. 다음을 다룹니다.
- 기본 개념: 판매 예측 사용 사례 및 기술에 대해.
- Modelstar CLI 도구: Modelstar 설치 가이드
univariate_time_series_forecast
SQL 구문: 예측을 위한 SQL 1-liner- 예측 보고서: 비즈니스 팀에서 사용할 수 있는 예측 결과

SQL ML 여정
Modelstar를 처음 사용하는 경우 Modelstar를 설정하기 위한 빠른 시작 가이드입니다.
1단계: Modelstar
$ pip install modelstar
빠른 버전 확인으로 설치를 확인합니다.
$ modelstar --version
2단계: Modelstar 프로젝트
$ modelstar init forecast_project
이제 forecast_project
작업 디렉토리에 생성된 폴더가 표시됩니다.
3단계: Snowflake 세션
폴더 내 forecast_project
에서 파일을 찾아 modelstar.config.yaml
원하는 편집기로 엽니다. Snowflake 계정 정보와 자격 증명을 여기에 추가하세요. 원하는 이름으로 세션 이름을 지정할 수 있습니다. 이 예에서는 를 사용 snowflake-test
합니다. 이 파일의 자격 증명은 Snowflake 데이터 웨어하우스에 연결하는 데 사용됩니다. (참고: modelstar.config.yaml 파일을 CI/CD, 버전 제어에 커밋하지 마십시오.)
# ./modelstar.config.yaml
# MODELSTAR CONFIGURATION FILE
---
sessions:
- name: snowflake-test
connector: snowflake
config:
account: WQA*****
username: <username>
password: <password>
database: MODELSTAR_TEST
schema: PUBLIC
stage: test
warehouse: COMPUTE_WH
4단계: 핑 눈송이
이제 터미널에서 Modelstar 세션을 시작할 수 있습니다. 새로 생성된 Modelstar 프로젝트의 디렉터리(이 예에서는 ./forecast_project/
) 내에서 다음을 실행합니다.
$ modelstar use snowflake-test
ping이 성공하면 다음과 같은 결과가 나타납니다.

5단계: 예측 알고리즘을 Snowflake
Modelstar는 즉시 사용 가능한 예측 알고리즘을 제공하고 이 알고리즘에 대한 종속성을 관리하므로 사용자가 그럴 필요가 없습니다. Snowflake 웨어하우스에서 이를 사용할 수 있도록 하려면 다음 명령을 실행하십시오.
$ modelstar register forecast:univariate_time_series_forecast

6단계: Snowflake에 샘플 판매 데이터 업로드(자체 데이터 세트를 사용하는 경우 선택 사항 )
샘플 판매 데이터 세트에서 예측 알고리즘을 시도하려면 이 명령을 실행하여 데이터 웨어하우스에 데이터 테이블을 생성하십시오. 자신의 데이터를 사용하려면 이 단계를 건너뛸 수 있습니다.
$ modelstar create table sample_data/time_series_data.csv:TS_DATA_TABLE
SQL 1- linear
Snowflake 워크시트
Snowflake에서 다음 명령을 사용하여 예측 모델을 구축합니다(아래 예에서는 6단계에서 업로드한 샘플 데이터를 사용함).
CALL UNIVARIATE_TIME_SERIES_FORECAST('TS_DATA_TABLE', 'DS', 'Y', 40, 'M');

자체 데이터
내부적으로 예측 알고리즘은 Snowflake 내에서 저장 프로시저로 실행됩니다. 다음 매개변수를 사용합니다.
고유한 예측 기간을 구성하려면 이 API 문서 에서 단위 별칭의 전체 목록을 확인하십시오.
결과 확인
모델 학습이 완료된 후 Snowflake 결과 창에서 성공적인 실행은 다음과 유사한 json 문자열을 출력해야 합니다.
{
"return_table": "RESULT_UNIVARIATE_TIME_SERIES_FORECAST",
"run_id": "3NvQXnHQqUdYG4Fu"
}
예측 데이터 테이블
다음을 사용하여 실행 결과 테이블을 확인하겠습니다.
SELECT * FROM RESULT_UNIVARIATE_TIME_SERIES_FORECAST;
DS
(datetime
): 날짜/시간Y_FORECAST
,YHAT_LOWER
,YHAT_UPPER
(float): 예측 값의 평균, 하한 및 상한 결합(Uncertainty Intervals
그 의미는 용어집 섹션 참조).

기계 학습 아티팩트와 함께 실행에 대한 정보를 기록하는 보고서는 Modelstar로 자동 생성됩니다. 보고서를 확인하려면 로컬 컴퓨터에서 다음 명령을 실행하기만 하면 됩니다.
$ modelstar check <run_id>

언급했듯이 브라우저에 보고서가 표시됩니다.

보고서 내용
보고서에는 3개 섹션이 포함됩니다.
- 이 실행의 메타 정보
- 예측 차트: 모델링 품질을 확인하고 결과를 예측합니다.
- 구성요소 분석: 전체 추세, 연간 및 주간 계절성(1년/주에 걸친 순환 패턴)을 포함하여 모델이 "학습"한 추세 및 계절성을 설명합니다.



In-sample 및 out-of-sample 예측: In-sample 예측에서 예측 모델이 실제 데이터에 얼마나 잘 맞는지 확인할 수 있습니다. Out-of-sample 예측은 미래에 대한 예측을 보여줍니다.
불확실성 구간: 상한과 하한 사이의 밴드. 이는 실제 값이 해당 간격에 속할 확률이 80%임을 의미합니다. 확실성에 대한 요구 사항이 높을수록 대역이 넓어집니다( Bartosz의 기사 참조 ). 불확실성은 미래로 갈수록 커져 시간의 함수로서 범위가 넓어집니다.
결론
예측은 비즈니스 관리의 기초입니다. 우리의 목표는 Snowflake에 예측 기능을 제공하여 기계 학습 모델을 훈련하고 이를 사용하여 예측하는 것이었습니다. 단 한 줄의 SQL로 이 모든 것을 달성했습니다. 이와 함께 예측 분석과 함께 실행 세부 정보가 포함된 실행 보고서가 생성됩니다. 이것은 Modelstar 에 의해 가능해졌습니다 .
Modelstar의 GitHub 리포지토리를 확인하십시오: 여기 , 최신 업데이트를 위해 별표 표시하십시오. 버그, 문제 또는 사용 사례에 대한 기능 요청이 있는 경우 Github 에 연락하거나 GitHub 에서 문제를 엽니다 .
- GitHub 저장소:https://github.com/modelstar-labs/modelstar
- 선적 서류 비치:https://modelstar.io/docs/quickstart/