データ分析において累積計算(累計)は非常に重要な分析手法です。特に時系列データを扱う際には、累積合計や累積平均などの計算が頻繁に必要になります。本記事では、Google BigQueryを使用して効率的に累積計算を行う方法について解説します。
累積計算とは?
累積計算とは、ある時点までのデータを集計する計算方法です。例えば:
- 累積合計:各時点までの値の合計
- 累積平均:各時点までの値の平均
- 累積最大/最小:各時点までの最大値または最小値
BigQueryでの累積計算の基本
BigQueryでは、ウィンドウ関数(アナリティック関数)を使用して累積計算を実装します。主に以下の関数が利用されます:
SUM() OVER()
AVG() OVER()
MAX()/MIN() OVER()
COUNT() OVER()
累積合計(Running Total)の計算方法
以下のサンプルデータを考えてみましょう:
日付 | 売上 |
---|---|
2025-01-01 | 1000 |
2025-01-02 | 1500 |
2025-01-03 | 800 |
2025-01-04 | 2000 |
2025-01-05 | 1200 |
日付ごとの累積売上を計算するクエリは次のようになります:
SELECT
日付,
売上,
SUM(売上) OVER (ORDER BY 日付 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS 累積売上
FROM
sales_table
ORDER BY
日付;
結果は以下のようになります:
日付 | 売上 | 累積売上 |
---|---|---|
2025-01-01 | 1000 | 1000 |
2025-01-02 | 1500 | 2500 |
2025-01-03 | 800 | 3300 |
2025-01-04 | 2000 | 5300 |
2025-01-05 | 1200 | 6500 |
グループごとの累積計算
例えば、複数の店舗の売上データがある場合、店舗ごとに累積売上を計算することもできます:
SELECT
店舗ID,
日付,
売上,
SUM(売上) OVER (PARTITION BY 店舗ID ORDER BY 日付) AS 店舗別累積売上
FROM
sales_table
ORDER BY
店舗ID,
日付;
移動平均の計算
直近3日間の移動平均を計算するには:
SELECT
日付,
売上,
AVG(売上) OVER (ORDER BY 日付 ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS 移動平均_3日
FROM
sales_table
ORDER BY
日付;
累積シェアの計算
全体に対する累積シェアを計算するには:
SELECT
日付,
売上,
SUM(売上) OVER (ORDER BY 日付) AS 累積売上,
SUM(売上) OVER (ORDER BY 日付) / SUM(売上) OVER () AS 累積シェア
FROM
sales_table
ORDER BY
日付;
パフォーマンス最適化のヒント
BigQueryでの累積計算を最適化するためのいくつかのヒント:
- 適切なパーティショニング: データ量が多い場合、テーブルのパーティショニングを検討しましょう
- インデックスの活用: ORDER BY句で使用するカラムにはインデックスを設定すると良いでしょう
- クラスタリング: 頻繁にフィルタリングするカラムでクラスタリングを設定すると効率的です
- 必要なデータのみを選択: 必要なカラムだけをSELECTすることでパフォーマンスが向上します
実践的な例:月次売上の累積比率
年間の月次売上データから、その年の累積売上比率を計算する例です:
WITH monthly_sales AS (
SELECT
EXTRACT(MONTH FROM 日付) AS 月,
SUM(売上) AS 月間売上
FROM
sales_table
WHERE
EXTRACT(YEAR FROM 日付) = 2025
GROUP BY
EXTRACT(MONTH FROM 日付)
)
SELECT
月,
月間売上,
SUM(月間売上) OVER (ORDER BY 月) AS 累積売上,
SUM(月間売上) OVER (ORDER BY 月) / SUM(月間売上) OVER () AS 累積売上比率
FROM
monthly_sales
ORDER BY
月;
累積計算を使った業務指標の例
- 顧客生涯価値(LTV)の計算: 顧客ごとの累積購入金額
- コホート分析: 顧客グループごとの時間経過に伴う累積行動分析
- 予算進捗管理: 月次予算に対する累積実績の比較
- 在庫推移分析: 入出庫の累積計算による在庫推移の把握
まとめ
BigQueryの累積計算機能を活用することで、時系列データに対する洞察を深めることができます。ウィンドウ関数の理解を深め、実務に適用することで、より高度なデータ分析が可能になります。
特にPARTITION BY
とORDER BY
の組み合わせ、そして適切なウィンドウフレーム指定(ROWS BETWEEN
)をマスターすることが、効率的な累積計算の鍵となります。
以上の知識を活かして、BigQueryでの累積計算を効果的に活用してください。
株式会社KUIXではただ導入・開発するだけでなく、導入後の利活用を実現することに着眼した、BIツールの選定・導入からレポート作成、運用、啓蒙・展開までトータルのコンサルテーションなどを行っています。
「BigQuery/BIツールを導入したい」
「すでに導入しているがデータ活用、展開が進んでいない」など
お困りの方は、ぜひお気軽にご連絡ください!お問い合わせはこちらから
BigQueryのSQLチートシートをダウンロード



コメント