Amazon Web Services ブログ
Amazon QuickSight で表計算による高度な分析を行う
Amazon QuickSight は最近、表計算機能を公開しました。これにより、ユーザーはデータに対し複雑な計算を実行し、より意味のある洞察を得られるようになりました。このブログ記事では、これらの計算をサンプルの販売データセットに適用する例を解説し、皆さんのニーズに合わせてこの機能をすぐに活用していただけるようにします。
使用したサンプルデータセットはこちらより参照できます。
表計算とは?
Amazon QuickSight で表計算を使用すると、前期比の傾向など、メトリクスを導き出すことができます。指定したウィンドウでそのウィンドウ内のメトリクスを算出するため、または固定ウィンドウの計算に対して評価するために計算を作成することもできます。また、これらすべてのタスクをカスタマイズした詳細レベルで実行することも可能です。たとえば、各産業の売上の前年比増加分を算出したり、ある州で特定の産業の貢献度をパーセンテージで表示したりできます。また、1 年間の前月比の累積売上を算出したり、ある州で、ある産業の売上のランキングを出したりすることも可能です。
これらのメトリクスは関数を組み合わせることで算出できます。これらの関数としては、runningSum、percentOfTotal、percentDifference などのほか、ベースのパーティション関数が挙げられます。このケースで使用できるベースのパーティション関数には、sum、avg、count、distinct_count、rank および denseRank などがあります。パーティションに対し、最小および最大を計算できる minOver や maxOver もあります。
パーティション関数
これらの計算を実行する前に、パーティション関数に関する簡単な説明をご覧ください。パーティションを使用することで、計算が含まれるウィンドウの範囲を指定できるようになります。つまり、パーティションは計算が実行されるウィンドウを定義する際に役立ちます。
例として、複数の区分にまたがる各産業の平均売上を計算してみましょう。まず、図に、industry、segment、sales を追加します。通常の集計フィールド avg(sales) をテーブルに追加することで、産業内の各区分の平均売上が算出されますが、産業全体の平均ではありません。これを達成するには、avgOver 計算を使用する集計フィールドを作成します。
avgOver(aggregated measure, [partition by attribute, ...])
ここでの aggregated measure は、図の範囲ごとにグループ分けされたとき、その単位で実行する計算を意味します。この計算は各産業のパーティションに平均が適用される前に実行されます。
産業別平均 = avgOver(sum(sales), [industry])
同様に、sumOver、minOver、maxOver および countOver の関数を使用することで、それぞれ、売上の合計、売上の最低値と最高値、各産業の区分数を計算できます。
基準対実際の売上
ここでもう 1 つ別のユースケースを使って、ある州の各産業が、その州の平均売上に照らして評価したとき、どのような動きになるか見ていきましょう。
これを実行するには、テーブルの図に state、industry、sales を追加し、州ごとにソートします。基準を計算するために、avgOver 関数で集計フィールドを作成し、State の範囲でパーティションを区切ります。
avgOver(aggregated measure, [partition by attribute, ...])
州平均 = avgOver(sum(Sales), [ship_state])
テーブルに state、industry、sales を加えたことで、sum(sales) が州内の産業の売上合計額を集計します。基準からこの値の分散を判別するために、もう 1 つ別の集約フィールドを作成するだけです。
実際の数値対基準 = sum(sales) – 州平均
先の集計のように、percentOfTotal の計算を使用して、州の合計売上と比較した、ある産業の売上パーセンテージを導き出すことができます。
Sum、Difference、Percent Difference を実行する
次に、ユースケースとともに他の関数についても説明していきましょう。
ユースケース 1: セールスアナリストとして、毎年、年初から年末までの各産業の月別累積売り上げを示すレポートを作成しようと思います。
業界別に累積月次売上を出すには、産業、日付、売上が記載された表形式の図が必要です。日付フィールドを追加したあと、集計を月ごとに変更します (以下のとおり)。
runningSum 関数を使用して、分析に新しい集計フィールドを追加します。runningSum 関数の構文は次のとおりです。
runningSum(aggregated measure, [sort attribute ASC/DESC, ...], [partition by attribute, ...]
ここで aggregated measure は図に含まれる範囲ごとにグループにする際に求めたい集計を意味します。次に sort attribute は sum を実行する前にソートしておく必要のある属性を指します。前述のとおり、属性ごとにパーティションを取ることで、規模の各値に含まれる、sum を実行する範囲を指定します。
このユースケースでは、私たちの測定したい aggregate measure は sum(sales) で、日付でソートされ、産業と年でパーティションを取っています。この属性を加えると、次のような式にたどり着きます。
runningSum(sum(sales),[Date ASC],[industry, truncDate("YYYY",Date)])
ソートフィールドとパーティションリストの角括弧は必須です。次にこの集計フィールドを図に追加し、産業の順番でソートします。year のパーティションを設定しないと、runningSum は 2016 年から 2017 年までの、全月の累積合計値を集計します。
棒線グラフや他の種類のグラフを使用して累積月次売上を出すことはできます。棒線グラフでは各棒線の傾斜が、その産業の 1 年に成長した割合を示します。たとえば、テック産業の成長が 2016 年には低いものの、2017 年には急激に伸びているのが分かります。
また、合計売上と累積売り上げを複合グラフにして、産業ごとにフィルタを設定することもできます。
ユースケース 2: 今度はある年の業種別前月比売上の成長率を計算してみましょう。percentDifference 関数を使用することでこれを実現できます。この関数は前または次のメトリクスに比較したメトリクスの変動比率を計算、指定した範囲のセットでソートし、パーティションを取ります。
percentDifference(aggregated measure, [sort attribute ASC/DESC, ...], -1 or 1, [partition by attribute, ...])
この式では、-1 または 1 の値は、前または後の値で差分を計算するかどうかを示します。必須フィールドを加えると、次のような式にたどり着きます。
percentDifference(sum(sales),[Date ASC],-1,[industry, truncDate("YYYY",Date)])
差分だけを求める場合は、difference 関数を使用します。
difference(aggregated measure, [sort attribute ASC/DESC, ...], lookup index -1 or 1, [partition by attribute, ...])
ご利用状況
表計算は Standard Edition と Enterprise Edition の両方で、また、すべてのサポートされている AWS リージョンで利用可能です。詳しくは、Amazon QuickSight ドキュメントを参照してください。
今回のブログ投稿者について
Sahitya Pandiri はアマゾン ウェブ サービスでテクニカルプログラムマネージャーの職務に就いています。Sahitya は現在までの 5 年間、製造/プログラム管理に携わり、小売、ヘルスケア、アナリティクス分野なでで、複数の製品を構築してきました。彼女は問題を解決すること、プロセスを簡略化するためにテクノロジーを活用することが大好きです。