![]() |
2024年度新人の野上です。
社内業務でQuickSightを初めて利用したのですが、思い通りにデータを扱えず苦戦しました。
QuickSightの分析の中で、計算式や関数を組み合わせて「計算フィールド」を作成できるのですが、エクセルの計算式と同じように使うことはできず、QuickSight独自のルールがありました。
私が苦戦したのは「集計関数」に関するルールです。
このルールを詳しく解説しているブログは少なかったため、同様の問題に直面した初心者方の力になればと思い記事にしました。
集計関数とは
まず、「集計関数」とは何かを説明します。
集計関数とは、複数の行から集計した値を返す関数のことを言います。これはデータ分析などで一般的に用いられる数学的計算です。
表を用いた例で説明すると、以下のようになります。
ここで平均単価=avg(単価)という計算式で計算されていますが、複数行にわたる単価の値(青く囲んだ部分)の平均値を返しています。
また、1つの行レベルで計算が可能な関数は非集計関数と呼ばれます。
販売金額=販売個数×単価という計算式で計算していますが、これは1つの行レベルで計算しています。(赤く囲んだ部分)
直面した集計関数の使用ルール
私が今回直面した集計関数のルールは以下です。
- 計算フィールドには、入れ子になった集計関数を含めることができません。
上記のルールは普段エクセルを利用している方が直面する問題だと思います。
[参考]: 集計関数 – Amazon QuickSight
エラーの例
今回は、販売履歴を時系列で並べたデータセットを使用して、以下のような年度別累計販売金額を表示することを目的としていました。
ここでは、以下の手順で表示することを考えました。
- 「前年度販売金額」という計算フィールドを作成する
- 「販売金額」、「前年度販売金額」を使用して累計値を計算する「今年度累計販売金額」、「前年度累計販売金額」という計算フィールド作成
- 折れ線グラフを2本重ねて表示して、前年度と今年度を比較するグラフを作成する
しかし、2.の「前年度累計販売金額」の計算フィールド作成で、以下のようなエラーが確認できました。
ここでは、SUM関数(集計関数)と前年度販売金額が入れ子になっていました。
上記では、集計関数をSUM関数のみしか使っていないように思えますが、計算フィールドである「前年度販売金額」に集計関数が含まれていることで、入れ子になっていると判定されました。「前年度販売金額」では集計関数としてmax関数が用いられていました。
集計関数を複数使用しなければ、目的のグラフを作成することができないため、QuickSight上でグラフが作成できませんでした。
実際に対処した方法
実際には違う対処方法があるかもしれませんが、初心者なりの対処方法ですのでご容赦ください。
エクセルファイルの加工
私は手動でアップロードしたエクセルファイルをデータセットに使用していたため、エクセルファイルを加工することで対処しました。
- エクセルファイルにて、日付のセルから年度を切り出すセルを作成
- 年度ごとに累積値を表示するセルを作成
集計関数を入れ子にすることができないので、入れ子にならないようエクセルファイル上で集計関数を実装してしまうことで、Quicksight上では集計関数が入れ子にならないようにしました。
データセットの再アップロード
先ほど作成できなかった「前年度累計販売金額」の計算フィールドをエラーなく作成することができ、年度別累計販売金額を表示するグラフを作成することができました。
まとめ
今回は、Amazon QuickSightにおける「集計関数」のルールについて説明しました。
私が実際に試したように、BI製品の仕様や制約によっては、元となるデータの加工が必要になることがあります。
案件の中でも同じようなケースが往々にしてありそうだと感じました。
初めてのBI製品を使用する際には、公式のドキュメントなどを確認して仕様を十分に理解することをお勧めします。
この記事がQuickSightを初めて使う方の役に立てば嬉しいです。