access_filterのいろいろ
公式ドキュメント
ケース1:各ユーザーに、自分の企業のデータしか見れないよう制限する
ユーザー属性を作る
Data Typeは「** filter (advanced)」にする
例:company_name
String Filter (advanced)
各ユーザーのユーザー属性に適切な社名を割り振る
例:ユーザー山本について、company_name = google cloudを設定
%やNULLにするとワイルドカード扱いになる(フィルタがかからない)
LookMLのExplore内にaccess_filterパラメータを設定
例:
code: sample.js
explore: <explore名> {
access_filter: {
field: company.company_name
user_attribute: company_name
}
}
ケース2:各ユーザーに、自分の所属部署のデータしか見れないよう制限する
複数部署同時に所属することがありうる
ユーザー属性を作る
Data Typeは「** filter (advanced)」にする
例:department
String Filter (advanced)
各ユーザーのユーザー属性に適切な部署名を割り振る
複数部署に所属する場合は、カンマ区切りで入力する
例:ユーザー山本について、department = Looker,Customer Engineeringを設定
%やNULLにするとワイルドカード扱いになる(フィルタがかからない)
LookMLのExplore内にaccess_filterパラメータを設定
複数部署の場合にはINを使ったフィルタが自動生成される
ケース3:各ユーザーに、自分の所属部署 または 担当製品のデータしか見れないよう制限する
複数部署同時に所属することがありうる
Yoshitake.icon複数条件のORになるとaccess_filterでは対応できないため、より柔軟な別のパラメータを使う
ユーザー属性を作る
Data Typeは「** filter (advanced)」にする
例:department、product
String Filter (advanced)
各ユーザーのユーザー属性に適切な値を割り振る
複数部署に所属する場合は、カンマ区切りで入力する
LookMLのExplore内にsql_always_whereパラメータを設定
code: sample.js
explore <explore名> {
sql_always_where:
OR ${product} IN ({{_user_attributes'product'}}) ;; }
すべてのデータにアクセスできるユーザーを作りたい場合:
さらに別のユーザー属性Xを作成する
ユーザーを以下の2種類に分け、属性値を設定する
1.すべてのデータにアクセスさせたいユーザー(例:X=0)
2.その他のユーザー(例:X=9999999999)
OR条件フィルタを追加し、以下の条件を作成する
1.についてはすべての行がヒットするような条件
2.についてはどの行もヒットしないような条件
例:ID > X