
<背景>
100 個近くのシートで作られた、Tableau ダッシュボードがあります。これらのシートのデータソースは全て Snowflake を向いており、20 個程度の mart view を参照しています。
- 1 つの Tableau ダッシュボード
- 100 個近くの Tableau シート
- 20 個程度の Tableau データソース
- 20 個程度の Snowflake mart view
今回のダッシュボードは複数の store に提供します。現在の store は 1 つだけなので、Snowflake の mart view 内で、特定の store_id だけ表示されるように SQL を定義しています。
ただ、この実装だと「store の数だけ mart view が増える」課題があります。
<調査したこと>
Tableau 行レベルセキュリティ (RLS) のドキュメントで、5 種類が紹介されていたので、全部確認しました。各 RLS の比較も確認しました。
- (1) 手動ユーザーフィルター
- (2) 動的ユーザーフィルター
- (3) データポリシー
- (4) データベース内の RLS
- (5) ユーザー属性
今回は (1) の手動ユーザーフィルターに注目しました。
Tableau のグループと store_id を紐づけた手動ユーザーフィルターを作れば「store の数だけ mart view が増える」課題は解決できそうですが、前述の RLS の比較でも言及されているとおり、メンテナンスに手がかかります。今回だと、100 個近くのシートをメンテナンスする必要があると思います。
<質問>
今回のようなケースに使えそうな、Tableau の RLS はありますでしょうか?
<蛇足>
「手動ユーザーフィルター」は Looker のユーザー属性に近いと思いました。Looker のユーザー属性はお手軽且つ安全に RLS を設定できたので、それに近いものを探しています。

本当ですね!
手動ユーザーフィルターは、シートまたはデータソース単位で設定できることを確認しました。
> また手動・動的を問わずパーミッション管理も組み合わせて行わなければならず、気を付けないといけない点があるので(人間が間違えずに設定できるのかという意味で)安全性に若干不安があります。
こちらもそのとおりですので、総合的に判断していきますね。