Amazon QuickSight 前月比を確認できるテーブル(表)形式の作り方紹介

「剣を握らなければ おまえを守れない 剣を握ったままでは おまえを抱き締められない」状態のテーブル形式と向き合った記録。
2024.01.30

Amazon QuickSight で前月の値と比較するテーブル(表)形式を作成をするにはどうしたら良いのでしょうか?

以前、前年同月比を垂直棒グラフで可視化したことがあります。今回と同じ表示上の問題を抱えたのですが、垂直棒グラフのビジュアル側の設定で問題を回避しました。今回はテーブル(表)形式で表示上の問題を解決した方法を紹介します。

テーブル形式で前月の値と比較したい

前月の数値と、今月の数値を同じ行に表示し、数値の差分を表示できる表の作成を目指します。

サンプルデータとして AWS 利用費のデータを使ってテーブル作成し、QuickSight 初心者だと誰もが頭を抱える問題に触れます。

可視化に必要なデータの準備

私の環境を例に説明しますので基本となるmonthcostフィールドを説明します。

  • monthフィールドは年月が格納されたフィールド
  • costフィールドは AWS 利用費が格納されたフィールド

計算フィールドの作成

ビジュアルタイプはテーブル形式で過去 2 か月(month)と、AWS 利用費(cost)を表示しました。

なぜ 2 か月でフィルタするかというと計算フィールドを使って計算するために必要な対象月のデータをテーブルに持たせる必要があります。

periodOverPeriodLastValueと、periodOverPeriodDifference関数を利用して欲しいデータを持つ計算フィールドを作成します。

前月の値をそのまま表示できる関数

1 か月前のcostの値をそのまま表示するだけのcost_last_mont_valueフィールドを作成します。periodOverPeriodLastValue関数の仕様で集計した値である必要があったためsum()costを集計した値を引数としています。MONTH, 1は 1 か月前の値を参照する指定です。

periodOverPeriodLastValue(sum(cost), month, MONTH, 1)

前月の値と今月の値の差額を計算して表示できる関数

近月と、その 1 か月前のcostの値の差額を求めるcost_last_month_differenceフィールドを作成します。こちらも同様にperiodOverPeriodDifference関数の仕様で集計した値である必要があったためsum()costを集計した値を引数としています。

periodOverPeriodDifference(sum(cost), month, MONTH, 1)

作成した計算フィールドを追加したテーブル

1 行に必要な値をまとめることができました。

ここまでくると計算のためだけに必要だった先月(12 月 2023)のデータ(行)が邪魔です。

monthフィルタ条件を変更し直近 1 か月分にすると、計算に必要な先月(12 月分)のデータを参照できなくなり、表示したい数値が消えます。

不要な行を消すためにフィルタすると計算フィールドに必要だった値を参照できなく、1 つの行に必要だった数値を表示できなくなるジレンマを抱えました。

抱えた問題

テーブル形式の表示上、不要な月の行を消したいが不要な月でフィルタ設定すると計算もできなくなる。これが問題です。

垂直棒グラフで表示する場合は垂直棒グラフ側のビジュアルを調整し上手いこと回避できました。しかし、テーブル形式で同じ問題を回避する方法を見つけられていませんでした。

解決策

新たな日付フィールド作成し新しい列に表示して、その日付をフィルタすれば計算フィールドは計算できてかつ、計算のためだけに必要だった行を非表示にできます。

新たな日付を計算フィールドで生み出す

periodOverPeriodLastValueと、periodOverPeriodDifference関数内で使用したmonthフィールドの日付の値を再利用して、新しい日付フィールドを作成します。日付を整えるとフィルタしやすそうなので日付の最小値を返すminOver関数を使用しました。

minOver - Amazon QuickSight

minOver(min(month), [month])

フィールドを追加しました。2023/12/01 0:002024/01/01 0:00と表示された 2 つの値が表示されました。

追加したフィールドのフィルタを作成し、直近 1 か月分に絞り込みます。

すると、計算フィールドは計算できてかつ、不要な行を非表示にできます。

見た目を整える

フィルタのために作成した日付を表示する計算フィールドも表示しておく必要はないです。テーブル形式の機能で非表示にすると良いです。

あとは、列の入れ替え、列名に分かりやすい名前を付けると見やすい表になります。

おわりに

「こんな感じで可視化できれば分析に使えそうだなぁ、良し悪しは実物みて判断するかー」と思ってから実現するまでに、QuickSight 力を問われる場面がたびたび訪れます。

参考