
DatabricksでAI Forecastを利用したダッシュボードを作成してみた
データ事業本部のueharaです。
今回は、DatabricksでAI Forecastを利用したダッシュボードを作成してみたいと思います。
事前準備
対象のデータとして、 FRED が公開している米国小売売上データ(RSAFS: Advance Retail and Food Services Sales)を利用したいと思います。(参考)
RSAFSは 日付, 数値 のシンプルなCSVファイルになっており、簡単に扱うことができます。
このRAWデータ( fred_retail_sales_raw テーブル)を元に、今回は以下のような形でダッシュボードに利用するテーブル us_retail_sales_monthly を作成しています。
CREATE OR REPLACE TABLE workspace.forecast_demo.us_retail_sales_monthly AS
WITH clean AS (
SELECT
TO_DATE(`date`) AS sales_month,
CAST(RSAFS AS DOUBLE) AS retail_sales_million_usd
FROM workspace.forecast_demo.fred_retail_sales_raw
)
SELECT
sales_month,
retail_sales_million_usd,
retail_sales_million_usd / 1000.0 AS retail_sales_billion_usd,
YEAR(sales_month) AS sales_year,
MONTH(sales_month) AS sales_month_num,
DATE_FORMAT(sales_month, 'MMM') AS sales_month_name,
ROUND(
(
retail_sales_million_usd
/ LAG(retail_sales_million_usd) OVER (ORDER BY sales_month)
- 1
) * 100,
2
) AS mom_pct,
ROUND(
(
retail_sales_million_usd
/ LAG(retail_sales_million_usd, 12) OVER (ORDER BY sales_month)
- 1
) * 100,
2
) AS yoy_pct
FROM clean
WHERE retail_sales_million_usd IS NOT NULL;
作成されるテーブルのカラムは以下の通りです。
| カラム名 | 型 | 説明 |
|---|---|---|
sales_month |
DATE | 小売売上の対象月。CSVの date を日付型に変換した値。月次データのため、各月の1日が入る。 |
retail_sales_million_usd |
DOUBLE | FREDの RSAFS を数値型に変換した値。米国小売・外食サービス売上、単位は百万米ドル。 |
retail_sales_billion_usd |
DOUBLE | retail_sales_million_usd を1,000で割った値。ダッシュボードで見やすいよう、単位を十億米ドルに変換した列。 |
sales_year |
INT | sales_month から抽出した年。年別平均売上などの集計に使う。 |
sales_month_num |
INT | sales_month から抽出した月番号、1から12。グラフの並び順制御に使う。 |
sales_month_name |
STRING | sales_month から作成した月名。グラフの表示名に使う。 |
mom_pct |
DOUBLE | 前月比、Month over Month。前月の retail_sales_million_usd と比較した増減率、単位は%。先頭月はNULLになる。 |
yoy_pct |
DOUBLE | 前年同月比、Year over Year。12か月前の retail_sales_million_usd と比較した増減率、単位は%。最初の12か月はNULLになる。 |
実際のデータのイメージは以下の通りです。

ダッシュボードの作成
データセットの準備
メニューから『Dashboards』を選択し、『Create dashboard』を選択します。

ダッシュボード名とページ名は任意に設定します。

次に『Data』のタブに移動し、『Add dataset』を選択します。

事前準備の章で準備したテーブルを選択し、『Add』ボタンを押下します。

テーブルが追加できたら、今度は『Add SQL dataset』から、 AI_FORECAST 関数を適用したデータセットを作成します。
具体的には以下のクエリを設定します。
WITH observed AS (
SELECT
sales_month,
retail_sales_billion_usd
FROM main.forecast_demo.us_retail_sales_monthly
),
forecast AS (
SELECT
sales_month,
retail_sales_billion_usd_forecast,
retail_sales_billion_usd_upper,
retail_sales_billion_usd_lower
FROM AI_FORECAST(
TABLE(observed),
horizon => (
SELECT ADD_MONTHS(MAX(sales_month), 13)
FROM observed
),
time_col => 'sales_month',
value_col => 'retail_sales_billion_usd',
frequency => 'MS',
prediction_interval_width => 0.9,
parameters => '{"global_floor": 0}'
)
)
SELECT
sales_month,
retail_sales_billion_usd AS original,
CAST(NULL AS DOUBLE) AS prediction,
CAST(NULL AS DOUBLE) AS prediction_upper,
CAST(NULL AS DOUBLE) AS prediction_lower
FROM observed
UNION ALL
SELECT
sales_month,
CAST(NULL AS DOUBLE) AS original,
retail_sales_billion_usd_forecast AS prediction,
retail_sales_billion_usd_upper AS prediction_upper,
retail_sales_billion_usd_lower AS prediction_lower
FROM forecast;
これは、元のテーブルの日付の最大値( 2026-04-01 )から1年後( 2027-04-01 )まで予測した値を元のデータに連結したデータになっています。
prediction カラムが予測値であり、 prediction_upper, prediction_lower カラムがそれぞれ予測幅の上限。下限となります。
作成できたらこのデータセットを us_retail_sales_monthly_forecast という名前に変更します。

これでデータセットの準備は完了です。
AI Forecastを利用したグラフの作成
ダッシュボードのページに移動し、横長のグラフを作成します。

グラフの設定から『Dataset』に『us_retail_sales_monthly_forcasted』を選択し、『Visualization』は『Line (forecast)』とし、X軸・Y軸についてはそれぞれ以下のように設定します。

Y軸に設定する予測値については、先のデータ準備で AI_FORECAST 関数を用いて作成したカラムを設定しています。
この設定でグラフを作成すると、以下の通り 予測された期間の値を含むグラフ が作成されます(区間推定の形で表示)。

また、カーソルを当てると各年月の値を確認することもできます。

参考までに、元のデータをグラフ化したものと比較すると次の通りです。

その他グラフの追加
元のデータセット( us_retail_sales_monthly )も活用して、その他グラフも追加し、最終的にダッシュボードを完成させます。

これで、最新月の小売売上や、前月比、年別平均売上等も一目で確認することができるダッシュボードとなりました。
最後に
今回は、DatabricksでAI Forecastを利用したダッシュボードを作成してみました。
参考になりましたら幸いです。









