SQL を使用した Snowflake での時系列予測
需要予測、サプライチェーンと在庫管理、財務計画は事業運営にとって重要です。Modelstar を使用すると、たった 1 行の SQL で Snowflake でそれを実行できます。

時系列予測とそのユースケースとは?
時系列予測は、過去の時間サンプリング データに基づいて値を予測する手法です。
予測はビジネス管理
予測は、企業がサプライ チェーン管理、在庫管理 (再入荷の量と時期)、財務計画、製品ロードマップ、および採用戦略などについて適切なビジネス上の決定を下すのに役立ちます。正確でタイムリーな予測結果により、ビジネス管理はリソースの割り当て方法や追い風を利用する方法についての理解が深まります。
予測の技術的課題
予測は、時系列分析のアプリケーションです。考慮すべきコンポーネントがいくつかあります。
- 季節性: 時間の経過に伴う定期的な変化。例: 夏休みと冬休みは毎年、または朝のコーヒー消費量が多いのは毎日です。
- トレンド: 継続的で非周期的な変化。例: 過去 5 年間の会社の売上高の伸び。
- 破壊的な出来事: 突然の変化。休日やサービス メンテナンスなどの予測可能な要因と、ランダム エラーやバグなどの予測不可能な問題の両方によって引き起こされる可能性があります。
実装の技術的課題
Python には、機械学習と予測アルゴリズムを実装するための豊富なエコシステムがあります。UDF を使用して SQL で Python を実行し、データ ウェアハウスに Python をもたらす Snowflake の新しい Snowpark 機能は、データに対して実行できる変換のゲーム チェンジャーです。ただし、予測を実行するためのエンド エンド ソリューションを実装する場合は、困難で時間がかかる可能性があります。Modelstarは、Python の超能力を SQL にもたらす合理化されたソリューションを提供することで、この問題を解決します。
Modelstarはオープン ソース プロジェクトであり、Snowpark などの Snowflake から最近リリースされた機能に基づいて構築されています。Snowflake コンピューティングで依存関係、モデル アーティファクト、ファイル I/O を自動的に処理します。
予測用の SQL ワンライナー
Modelstarを使用すると、Snowflake 内の 1 行の SQL で予測モデルを出荷および管理し、モデリング結果を視覚化できます。内部では、Modelstar は事前に構築された予測アルゴリズムを提供し、それらを SQL ストアド プロシージャとしてデータベースに公開します。この例では、univariate_time_series_forecast
( API doc ) を使用します。この API は、業界で最も広く使用されている予測アルゴリズムの 1 つであるオープン ソース ライブラリProphetに基づいています。
このチュートリアルでは、時系列予測モデルとレポートを作成する手順を説明します。それはカバーします:
- 基本的な考え方:売上予測のユースケースとテクノロジーについて。
- Modelstar CLI ツール: Modelstar インストール ガイド
univariate_time_series_forecast
SQL 構文: 予測を行うための SQL ワンライナー- 予測レポート: ビジネス チームがすぐに使用できる予測結果

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 Worksheet
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 年/週にわたる周期的パターン) が含まれます。



サンプル内およびサンプル外の予測: サンプル内の予測から、予測モデルが実際のデータにどの程度適合しているかを確認できます。標本外予測は、将来の予測を示します。
不確実性間隔:上限と下限の間の帯域。これは、真の値がその間隔内に収まる確率が 80% であることを意味します。確実性の要件が高いほど、帯域幅が広くなります ( Bartosz の記事を参照)。不確実性は、将来に進むにつれて大きくなり、時間の関数として帯域が広がります。
結論
予測は、ビジネス管理の基本です。私たちの目標は、予測関数を Snowflake に送り、機械学習モデルをトレーニングし、それを使用して予測を行うことでした。これらすべてをたった 1 行の SQL で実現しました。これに伴い、実行の詳細と予測分析を含む実行レポートが生成されます。これは、モデルスター様によって可能になりました。
Modelstar のGitHub リポジトリをチェックしてください: ここで、スターを付けて最新のものに更新してください。ユースケースのバグ、問題、または機能のリクエストがある場合は、Githubで連絡するか、 GitHubで問題を開いてください。
- GitHub リポジトリ:https://github.com/modelstar-labs/modelstar
- ドキュメンテーション:https://modelstar.io/docs/quickstart/