Tableauのパラメータを利用したパフォーマンス向上TIPS

2365 ワード

Tableauのパラメータを活用するとパフォーマンスを向上させることができるケースがいくつかあります。
パラメータは、固定の値を持つ、ユーザが自由に値を設定できる、というのは昔からある使い方ですが
- 動的パラメータ(ワークブック表示時にパラメータの値を更新する)(2020.1より追加)
- パラメータアクションでパラメータの値を更新する(2019.2より追加)
という機能が追加されたことにより、さらに活用の幅が広がりました。

そこで、いくつかパフォーマンス向上のTIPSを紹介します。

(動的パラメータ)データの最新日付をダッシュボードに表示する

利用ユーザに最新のデータの日付を表示する場合に、MAX([日付])をとってきてダッシュボードにそのシートを組み込むことがあります。
昔はこの方法しかありませんでしたが、動的パラメータによりシートを作成する必要がなくなります。

サンプルストアのデータソースで実装方法を記載します。

  1. 以下のように「最新オーダー日」という計算フィールドを作成します。
  2. パラメータを作成して、「ワークブックを開いたときの値」で「最新オーダー日」を設定します。

ポイントは、計算フィールドで{FIXED:}をつけることかと思います。MAXなどの集計値では、パラメータの「ワークブックを開いたときの値」に該当のフィールドが表示されませんので注意してください。

パラメータに設定できれば、ダッシュボードにはパラメータを使ったテキストを埋め込むことで対応可能で、わざわざシートを作成することが不要になります。
シートがなくなるということは、ダッシュボード表示で発行するクエリの数が減るのでパフォーマンスが向上します。

この応用としては、Tableauで全体的に使う変数をパラメータとして、動的に更新したいパラメータを格納したテーブル(パラメータの数のカラム)を用意します。

イメージとしては以下のような1行しかないテーブルになります。

パラメータ1 パラメータ2 パラメータ3
2022-01-01 1 パラメータ更新値

そのテーブルには1行しかないので、ワークブックを開いたときの値の処理も速くなります。
また、動的パラメータを更新するためだけの計算フィールドはパラメータ更新用のデータソースに集約されるので、チャートで作成するデータソースをきれいにすることができ、メンテナンス性も向上すると思います。

(パラメータアクション)計算の途中結果をパラメータに格納する

例えば、ダッシュボードで指定した日付が最新データの日付から何カ月前かによって処理をわける場合があります。
以下のような計算フィールドを作成して、IFやCASE文と併せて処理を実現します。

DATEDIFF('month', [ダッシュボードで指定した日付], [最新データの日付])

これを計算フィールドで実現すると、レコード数分DATEDIFFを実行することになります。そこで、上記の計算結果をパラメータアクションでパラメータに設定します。
するとDATEDIFFはパラメータアクション時の1回だけで済ますことができます。

複雑な計算フィールドがある場合は、計算フィールドをシンプルにする方法の1つとして、計算途中の結果をパラメータに格納できないかを検討するのがいいと思います。

パラメータアクションが増えるので利用シーンは限られるかと思いますが、パフォーマンス向上を図れるとともに、複雑な計算フィールドをシンプル化できるのでメンテナンス性が向上するメリットもあります。

今回は、パフォーマンス向上のためのパラメータ活用のTIPSを2つ記載しました。パラメータは動的に更新できる機能が増えたので活用シーンが増えました。
パラメータはデータソースをまたいで自由に使えるので、共通で利用する変数などは積極的にパラメータ化することを検討しましょう。

他のTableau関連の記事はこちら