Tableau Cloud と Tableau Prep のノウハウまとめ。

はじめに

今回はTableau Cloud と Tableau prep を一年ほど扱ってきた中で、気を付けていきたいことを書いてみようと思います。
主に、Tableau Cloud 上でのフローを想定しています。また、Tableauバージョンは2024.2をベースに利用しています。

1.長大になってきたらフロー自体を分割しよう

データ量が少なくとも、オブジェクト数(クリーニングステップや結合、ユニオンなど)が多くなってくると、フローの編集操作が急激に悪くなっていきます。
加えて、Tableau prep の目玉(?)とも言えるデータサンプルビューが利かなくなってきます。。

また、データ量が多い × オブジェクト数が多い、がかけ合わさると、Tableau Cloud 上での実行が非常に不安定になります。
例えば単一の実行にしてもエラーが発生し実行が停止し、何回か試行すると成功するような状況を経験してきました。

上記のような場合、分割をしたことでエラーの解消を確認しています。  

2.データ量が多い時はインプットデータ量を抑えよう

Tableau Cloud やローカル端末上で Tableau prep を開いているとき、両方に有効です。
データソースオブジェクトを開くと、インプットとするデータ量を調整できる項目があります。
大抵はデータバリエーションがあると嬉しいので、Tableauにサンプルをお任せで問題ないですが、大本のデータ量が多いと数十万行を取ってこようとします。

こうすると、例えば Tableau Cloud への仮想接続をしている場合、ローカルのTableau prep であれば場合によっては数GB程度のデータダウンロードが発生してしまいます。
インターネット回線が細ければしばらく帯域を占拠してしまいますね。。
 
Tableau Cloud 上であれば、ローカルと比べI/Oはかなり早い印象ですが、素朴にフロー上の動作がもっさりしがちです。
 
避けるのであれば、以下を試してみると良いですね。
・カラムの削除
・データ量を手動で設定

3.カラムの削除やフィルターは早めに実装!

不要なカラムやフィルター設定は、可能であればフローの先端で削除しておくと良いです。
Tableau prep はフロー上で先頭から仮想のhyperを作成する都合、都度その時点である全カラムを含め処理を実施します。
ですので、不要なカラムが残っている分、無駄な計算リソースを消費することになります。
(最終的な出力に乗っていない&途中のロジックに不要だとすれば、機械的に走査して除外できそうですが、試してみたところこの点についての内部的な最適化は少なくともされていません)
 
かつ、クリーニングステップ上でカラムを削除すると、例えば元データでカラムが削除された場合にフロー上でエラーが発生してしまいます。
可能であればデータソース上や、集計でそぎ落とすようにすれば少なくとも上記エラーはなくメンテナンス性も上がります。
 

4.複数の出力を持つフローはTableau Cloud 上で負荷が高い

I/OがTableau Cloud 上にあり、データ量とフローオブジェクト数が一定以上負荷が大きくなった場合、複数出力するフローを一括実行すると失敗します。
この場合、出力ステップを一つずつ手動で実行することで回避できます。
しかし、運用上コストは増えるので、出力ステップは減らすべき or フローを分割し、ロジック用フロー+出力用フローのように分けるようにすると良いかもしれません。

5.クリーニングステップの名前と色に意味を付けよう

クリーニングステップや色は、できれば意図を持って設定した方が良いです。
特にTableau Cloud 上であれば、他の人が見る可能性があり、後から見た場合の可読性を上げるためです。
Tableau prep は元々それ自体がドキュメントとして活用できる可能性を秘めていますので、そういった意味も込めて開発すると良いかもしれません。  ※ プログラマー向かいにいえば、プログラムの変数名にちゃんと意味を付けよう!といった形ですね。
 

6.1処理1ステップを意識しよう

こちらもフローの可読性をあげる意図になります。
特定の意図を持ったロジックごとにクリーニングステップを作っていくと、名前付けもし易いと思いますし、改修をする際に辺りがつけやすくなります。
例えば、年収に対して税金補正を掛けていく源泉徴収フローを考えると、
・インプットのデータが年収
・クリーニングステップ「所得税」
・クリーニングステップ「厚生年金」
・クリーニングステップ「扶養控除」
, …
のように連結していくイメージですね。
もし特定のロジックに回収、例えば所得税の税率が改修された場合、一瞬でどこのクリーニングステップが対象が一目瞭然になる、というわけです。
 ※これは運用上、メンテナンスが発生しやすい項目ごとに分けたいところです。往々にして難しいですが。。

おわりに

パッと思いつくベストプラクティス(?)っぽいものを書き連ねてきました。
Tableau Cloud と prep はなかなかじゃじゃ馬な感じなので、上記みたいな小手先を使って上手く付き合っていけると良いですね。
他にもいろいろあったような気がするので、思いつき次第追記していこうと思います。

いいなと思ったら応援しよう!