Amazon QuickSight 数値と null で四則演算をするための計算フィールドの作り方

ただ、引き算できればよかったんです。
2024.02.20

テーブル内の値が数値ではなく空欄(null)のときに四則演算したいのですがどうしたらいいですか?試行錯誤した結果を共有します。

結論

null を 0 に変換する計算フィールドを作成します。

計算フィールドの式

  1. isNull({フィールド}) で{フィールド}nullか否かを判定する
  2. ifelse() でnullだった場合に置き換えたい数値にを指定する
  3. nullでなかったら元の値({フィールド})を使う
# 計算フィールドの例
ifelse(isNull({フィールド}),0,{フィールド})

試行錯誤してみた

null(空欄) + 数値 = n と計算したいとき QuickSight ではどうしたらよいのかというお話です。

例題として、前月と利用費と今月の利用費の差額を求めることにします。前月の利用費が発生していなく $0 ではなく null(空欄)の場合もあります。

null(空欄) - 数値 = 差額 をするためにnullをどう扱えばよいのかを説明します。

null を 数値に置き換える

前提として計算フィールドでは null + 数値などのnullを絡めた四則演算はエラーになります。そのため、nullを何かしらの数値に置き換える必要がありました。

計算フィールドで肝となる関数は isNull と ifelse の 2 つです。

isNull と ifelse を組み合わせ以下の判定と数値に置き換えをする計算フィールドを作成します。

  1. isNull() でcostnullか否かを判定する
  2. ifelse() でnullだった場合、0 に置き換える
  3. nullでなかったら元の値(csot)を使う
# 計算フィールドの例
ifelse(isNull({cost}),0,{cost})

上記計算フィールドを表示したのがNew前月の利用費の列です。null(空欄)が数値の 0 に置き換えられました。New 差額の列は New 前月の利用費と今月の利用費の差額を求めた計算フィールドを新たに追加したものです。

null を 0 に置き換えた計算フィールドを使ってテーブルを作成すれば、四則演算できるテーブルとなります。

補足

ifelse(isNull())で作成した計算フィールドの集計はカスタムになります。四則演算する対象のフィールドの集計がカスタムであれば問題ありません。仮に集計が合計となっているフィールドと四則演算するとエラーになります。その場合は集計が合計となっているフィールドをsum()で数値は変えずに集計がカスタムとなった計算フィールドを作成して、そのフィールドと四則演算すれば問題ありません。

おわりに

QuickSight で null と数値の四則演算するにはどうしたらよいのかわからずに試行錯誤した結果をまとめました。集計方法違いで四則演算がエラーになる件もよく悩まされています。

参考