📊

DATA Saberチャレンジ雑記2 Ord7ディスカッション会

2023/07/12に公開

はじめに

Ord6に続いて募集した、Ord7 Performance Best Practice のディスカッション会も、参加してくる方が現れて7/10に無事開催できました。はなさん、あんにん太郎師匠ありがとうございました。
前回と同じく、ディスカッションの中で出た印象に残ったことを覚えを兼ねて書きます。

※ 本記事は、読者をDATA Saberのアプレンティス以上、または、同程度のTableau利用者を想定します

抽出フィルター

自分はこの会をやるまで、抽出フィルターは「ライブでデータソース(DBやファイル)に繋ぐときにもかけられる」と誤解をしいてたことが発覚しました。
その名の通り、接続を”ライブ”じゃなくて”抽出”にするとき、すなわち、hyperファイルを作成するときにかけるフィルターだったのですね。

抽出フィルターをかけると、大元のデータソースの一部だけを、ローカルのhyperファイル内に取り込む(コピーする)。軽量化できる代わりに、「取り込まなかった情報がやっぱ欲しくなった」となると、もう一度大元データソースに繋ぎなおしてhyperを作り直さないといけないので、ややめんどくさいというもの。
(全部抽出してhyperに入れといてソースフィルターなら、「やっぱ欲しい」となってもhyper作り直さなくてもよい)

「大元データソースから抽出してhyperを作るとき用フィルター」と認識改めました。(必然的に、SnowflakeなどDB・DWH等にライブ接続で使うときは、登場しないことも)

抽出フィルターでの集計

Ord7やってるときに出た疑問について聞きました。
「データの抽出」の設定画面の集計のところでは、「集計の粒度」のカラム指定はありますが、「集計方法」の指定はなく、暗黙で合計(SUM)が使われるようです。

これだと、割引率とか気温とか、合計して使わない(使うとまずい)数量も合計されちゃいそうなので、参加者の方に聞いてみたんですが、どなたもご存じなく、どうも他の集計方法を指定できるUIはないっぽいです。(知ってる方いたら教えてください・・)

なので、使うときは合計NGな数量ないか注意必要そうです。まあ、抽出フィルターで集計というのは、あまりやらないと思うので、実害なさそうですが・・。(自分はPrepでやると思う)

シートからデータソース関係の設定ができる!

データソースの設定って、シートの画面で、データペインの上の方のデータソースの表示を右クリックでメニューを出せるんですね!

自分は知らなかったんで、いちいちデータソース画面に移ってやったんですが、切替に妙に時間がかかるときとかあってイラっとしてました。あんにん太郎師匠ありがとうございます!

ソースフィルター vs「このデータソースを使用するすべて」

フィルタシェルフの設定に、「適用先ワークシート/このデータソースを使用するすべて」がありますが、これがソースフィルターと何が違うのかという話題が出ました。

その場で実験として、

合計売上
{FIXED : SUM([売上])}

の計算フィールドを作って、カテゴリでフィルタしてみました。すると、

フィルターの種類 売上合計がどうなるか
ソースフィルター フィルターしたカテゴリの分減る
コンテキストフィルター フィルターしたカテゴリの分減る
適用先ワークシート/このデータソースを使用するすべて 減らない(全体合計と同じ)

という挙動でした。
「適用先ワークシート/このデータソースを使用するすべて」は、LODの後で効いていることになるので、「ディメンションフィルターを、このデータソースを使用するすべてにかける」というもので、ソースフィルターとは異なることがわかりました。

「なるべく標準機能を使う」と保守性

Tableauの性能を最大限引き出すために、なるべく標準機能でできることは標準機能でやるべき、というという話で、「一方で、継続的に使うVizは保守性も考慮してバランスだよね」という話をしました。自分もそう思います。

一例として、NULL除外が挙がりました。
仮に、カテゴリが NULL、家具、家電、事務用品 の4つの値をとるときに、フィルタのUIでやると、理解が浅いと素で「NULLのチェックを外す」でやりかねないよね、と。
これは、「家具、家電、事務用品だを保持する」であって、「NULLを除外する」するではないですが、UI上はそう見えなくもない。
でもこれだと、保守性の観点でみると、将来に第4のカテゴリが現れたときに、除外されてしまうので、後々問題になるかもしれない、というものです。

この例で計算フィールドにするのがいいかはなんとも言えませんが、継続的に保守しないといけないVizであれば、重要な数値や判定ロジックは、あえて標準機能を使わず、計算フィールドにして内容を明示することで、「未来の自分や後継者にわかり易くしておく」というのは考慮すべきと思います。めんどくさいですが。

終わりに

この日は設問から脱線する話も多かったのですが、その分、Ord7でやった内容に肉付けできた感じで、勉強になりました。
ご参加いただいたみなさま、ありがとうございました!!

Discussion