0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Amazon QuickSight の sumOver 関数を使いこなす!ビジュアルと独立した粒度での合計計算

0
Posted at

概要

Amazon QuickSight の sumOver 関数は、ビジュアルに配置したディメンションとは独立した粒度で合計を計算できるレベルアウェア計算(LAC-W)関数です。通常の sum() では実現できない「カテゴリ単位の売上合計を商品行に表示する」といった高度な分析が可能になります。


目次

  1. sumOver 関数とは?
  2. sum() との違いを理解する
  3. 構文と引数の詳細
  4. 計算レベル(PRE_FILTER / PRE_AGG / POST_AGG_FILTER)の違い
  5. 実践的なユースケース
  6. 注意点とベストプラクティス
  7. 料金の目安
  8. 終わりに
  9. 参考文献・参考サイト

1. sumOver 関数とは?

sumOver は Amazon QuickSight のレベルアウェア計算 – ウィンドウ(LAC-W)関数の一つです。AWS 公式ドキュメント ( https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/level-aware-calculations.html ) では、LAC-W 関数について『ウィンドウまたはパーティションを指定して計算を実行できる』と説明されています。

簡単にいうと、「ビジュアルに何を表示しているかに関係なく、指定したディメンションの粒度で合計を計算してくれる」 関数です。

たとえばテーブルに「商品名」「カテゴリ」「売上」を表示しているとき、通常の sum({売上}) は「商品名 × カテゴリ」の行単位で集計されます。一方 sumOver({売上}, [{カテゴリ}], PRE_AGG) を使えば、商品行に「そのカテゴリ全体の売上合計」を並べて表示できます。カテゴリ別の構成比(売上シェア)を計算したいときに非常に便利です。


2. sum() との違いを理解する

sum()sumOver() がどう違うのか、日常的なアナロジーで説明します。

想像してみてください。あなたはスーパーのレジ係です。

  • sum() の動き:レジを通った商品ごとに「その商品の合計金額」を集計する → ビジュアルの行(GROUP BY)の粒度に従う
  • sumOver() の動き:商品の種別(例:飲料・お菓子)ごとに「種別全体の合計金額」をあらかじめ計算し、それを各商品の行にメモとして書き添える → 指定したパーティションの粒度に従う
観点 sum() sumOver()
集計粒度 ビジュアルの GROUP BY と同じ 明示的に指定したディメンション
結果の配置 行ごとに異なる値 同じパーティション内は同じ値
主な用途 単純な合計 構成比・差分・クロス集計など
分類 集計関数 LAC-W(レベルアウェア計算)

image.png


3. 構文と引数の詳細

AWS 公式ドキュメント ( https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/sumOver-function.html ) に掲載されている構文は以下のとおりです。

sumOver( measure, [partition_field, ...], calculation_level )

各引数の意味は次のとおりです。

measure(メジャー):合計を計算したい数値フィールドです。calculation_levelPRE_FILTER または PRE_AGG の場合は非集計フィールドを、NULL または POST_AGG_FILTER の場合は集計済みの式(例:sum({売上}))を指定します。

[partition_field, ...](パーティションフィールド):この粒度で集計するディメンションを角括弧 [ ] で囲んで指定します。複数指定可能で、スペースを含むフィールド名は波括弧 { } で囲みます。空の [ ] を指定すると全体合計を計算します。

calculation_level(計算レベル)PRE_FILTERPRE_AGGPOST_AGG_FILTER の3種類から選びます(詳細は次節)。省略した場合は POST_AGG_FILTER がデフォルトになります。

記述例(カテゴリ単位の売上合計を事前集計レベルで計算):

sumOver( {売上金額}, [{カテゴリ}], PRE_AGG )

構成比の計算フィールド例:

sum({売上金額}) / sumOver( {売上金額}, [], PRE_AGG )

4. 計算レベルの違い

sumOver 関数では計算レベルの指定が重要です。QuickSight はクエリを評価する際に決まった順序(評価順)でフィルタや集計を処理します。どのタイミングで sumOver を実行するかによって結果が変わります。

計算レベル 実行タイミング 主な用途
PRE_FILTER データセットフィルタ適用前 フィルタの影響を受けない全体集計が必要な場合
PRE_AGG ビジュアル集計・上位N フィルタ適用前 フィルタ後のデータで指定粒度の合計を出したい場合(最も一般的)
POST_AGG_FILTER(デフォルト) ビジュアル表示時(集計後) 集計済みの値に対してウィンドウ処理を行う場合

選び方の目安:フィルタで絞り込んだ後の値を合算したい場合は PRE_AGG を、フィルタの有無に関係なく常に全データから集計したい場合は PRE_FILTER を使うと意図どおりの結果が得られます。


5. 実践的なユースケース

ユースケース1:カテゴリ別構成比の表示

商品テーブルに「カテゴリ全体に占める各商品の売上割合」を表示したい場合です。

// カテゴリ合計売上(計算フィールド名:category_total)
sumOver( {売上金額}, [{カテゴリ}], PRE_AGG )

// 構成比(計算フィールド名:sales_ratio)
sum({売上金額}) / {category_total}

ユースケース2:全体合計との差分比較

各商品の売上と「全商品の合計売上」との差を表示します。

// 全体合計(計算フィールド名:total_sales)
sumOver( {売上金額}, [], PRE_AGG )

// 差分
sum({売上金額}) - {total_sales}

ユースケース3:フィルタの影響を除いた全体分母の確保

ビジュアルにフィルタをかけても「フィルタ前の全データの合計」を分母にしたい場合は PRE_FILTER を使います。たとえば「全国の売上合計」を分母に、各地域の比率を計算する場合などです。

// フィルタ前の全国合計(計算フィールド名:total_before_filter)
sumOver( {売上金額}, [], PRE_FILTER )

image.png


6. 注意点とベストプラクティス

重複値への注意sumOver の結果は、同一パーティション内の行すべてに同じ値が書き込まれます。これをビジュアルのメジャーとして使うと重複してしまうため、公式ドキュメントでは『LAC-W 関数によるビジュアル集計は、デフォルトで MIN に設定される』と説明されています。必要に応じてフィールドの右クリックメニューから集計方法を変更してください。

集計関数との組み合わせPRE_AGG レベルで計算した sumOver の結果をビジュアルのメジャーとして使う場合、その上位に sum()avg() などの集計関数をネストする必要があります(LAC-A と LAC-W の組み合わせ)。

構成比計算での 0 除算sumOver の結果が 0 になる場合、割り算でエラーが発生します。ifelse({category_total} = 0, null, sum({売上}) / {category_total}) のように条件分岐を挟むと安全です。

SPICE データセットとの相性PRE_FILTER 計算レベルは SPICE インポート後のデータに対して動作します。データセットのリフレッシュタイミングによって結果が変わる可能性があることを念頭に置いてください。


7. 料金の目安

Amazon QuickSight の利用には、ユーザーロール別の月額料金が発生します。なお、料金は変動する可能性があるため、最新情報は公式料金ページ ( https://aws.amazon.com/jp/quicksight/pricing/ ) でご確認ください。

※ 以下は 2026年2月時点の公式料金ページに基づく参考値です。東京リージョン(ap-northeast-1)での利用料金は他のリージョンと共通です。

ユーザーロール 月額料金(年間契約) 備考
Author(Standard) $9/ユーザー ダッシュボード作成・共有が可能
Author(Enterprise) $18/ユーザー 暗号化・AD 統合などのエンタープライズ機能付き
Reader $3/ユーザー(上限あり) ダッシュボード閲覧専用
Amazon Q 有効化料金 $250/アカウント/月 1名以上の Pro ユーザーがいる場合に発生

sumOver などの計算フィールドは、Author 権限で誰でも作成できます。追加の料金は発生しません。


8. 終わりに

sumOver 関数は、QuickSight での高度な分析を大きく広げてくれる関数です。「ビジュアルの粒度に縛られず、任意のディメンション単位で合計を計算する」というコンセプトを理解すると、構成比・差分・クロス集計など幅広いシナリオに応用できます。

まず手始めに、既存のダッシュボードに「カテゴリ別構成比」の計算フィールドを追加してみることをおすすめします。計算レベル(PRE_AGG / PRE_FILTER)の使い分けに慣れてきたら、LAC-A 関数(sum({売上}, [{カテゴリ}]) のような書き方)と組み合わせて、さらに複雑な分析にも挑戦してみてください。


参考文献・参考サイト

「sumOver 関数」AWS Documentation, https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/sumOver-function.html

「Amazon QuickSight でのレベルアウェア計算の使用」AWS Documentation, https://docs.aws.amazon.com/ja_jp/quicksight/latest/user/level-aware-calculations.html

「Amazon クイックサイトの価格」AWS Documentation, https://aws.amazon.com/jp/quicksight/pricing/

Karthik Tharmarajan, Emily Zhu「Create advanced insights using level-aware calculations in Amazon QuickSight」AWS Business Intelligence Blog, 2025年10月, https://aws.amazon.com/blogs/business-intelligence/create-advanced-insights-using-level-aware-calculations-in-amazon-quicksight/

「Use Amazon QuickSight level-aware calculations to analyze COVID-19 datasets」AWS Business Intelligence Blog, 2025年10月, https://aws.amazon.com/blogs/business-intelligence/use-amazon-quicksight-level-aware-calculations-to-analyze-covid-19-datasets/

「Calculated fields, level-aware aggregations, and evaluation order in Amazon QuickSight」AWS Big Data Blog, 2022年10月, https://aws.amazon.com/blogs/big-data/calculated-fields-level-aware-aggregations-and-evaluation-order-in-amazon-quicksight/

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?