ユーザー属性は、Looker ユーザーごとにカスタマイズされたエクスペリエンスを提供します。Looker管理者がユーザー属性を定義し、ユーザー属性値をユーザーグループまたは個々のユーザーに適用します。
管理者は、ユーザーが値(ユーザー属性、パスワード、連絡先情報など)を指定するユーザー属性も定義できます。Lookerのさまざまな場所で、ユーザー属性を参照することで、ユーザーごとのカスタムエクスペリエンスを提供できます。
Looker には、email
、first_name
、landing_page
、last_name
、full_name
、ID
、timezone
(構成されている場合)、locale
、number_format
などのユーザー属性が自動的に含まれます。
デフォルトのユーザー属性
landing_page
、locale
、number_format
は編集できますが、削除しないでください。これらのユーザー属性のいずれかを削除する場合は、同じ名前で新しいユーザー属性を作成します。
ユーザー属性の表示
ユーザー属性のリストを表示するには、[管理] メニューの [ユーザー] にある [ユーザー属性] ページに移動します。
ユーザー属性の表には、各ユーザー属性の名前、ラベル、タイプが表示されます(詳細については下記をご覧ください)。また、表にはユーザー属性に使用できるアクションのボタンがあります。一部の属性では、操作ボタンの代わりに「システムのデフォルト」と表示されています。これは、Looker が各ユーザーの属性を自動的に作成することを意味します。システムデフォルトのユーザー属性は、内部使用のためにLookerによって予約されており、編集することはできません。
ユーザー属性の作成
ユーザー属性を定義するには、画面左上の [ユーザー属性を作成] ボタンをクリックします。それぞれのユーザー属性に次の設定があります。
- 名前: ユーザー属性の名前。LookML などのテキストベースの環境で使用されます(名前に使用できるのは英小文字、数字、アンダースコアのみです)。
- ラベル: わかりやすい名前。デフォルトでは、属性の名前がアンダースコアで置き換えられ、各単語は大文字になります。ただし、必要に応じてラベルを変更できます。
データの種類: そのユーザー属性について有効な値がユーザーに割り当てられていることを確認するために使用します。ユーザー属性のデータタイプには、次のいずれかを指定できます。
- 文字列: 1 つの文字列値に完全に一致するユーザー属性(ユーザー名など)を作成するには、このオプションを選択します。複数の文字列値、またはユーザー属性値の Looker フィルタ式を使用するには、代わりに [String Filter (advanced)] オプションを選択します。
- 電話番号: このオプションを選択して、従業員番号など、単一の電話番号を指定します。一連の数値または Looker のフィルタ式を使用するには、代わりに数値フィルタ(高度)を使用します。
- 日時: このオプションを選択して、ユーザーの生年月日など、単一の日付と時刻を指定します。特定の期間または Looker のフィルタ式を使用するには、代わりに日付 / 時刻フィルタ(詳細設定)を使用します。
- String Filter(advanced): このオプションを選択すると、ユーザー属性で複数の文字列値または Looker フィルタ式を使用できます。文字列に使用できるフィルタ式のリストについては、フィルタ式のドキュメントをご覧ください。
- Number Filter(advanced): このオプションを選択すると、ユーザー属性で数値の範囲または Looker フィルタ式を使用できます。数値に使用できるフィルタ式のリストについては、フィルタ式のドキュメントをご覧ください。
- Date/Time Filter(advanced): このオプションを選択すると、ユーザー属性に任意の期間または Looker のフィルタ式を指定できます。日付と時刻に使用できるフィルタ式のリストについては、フィルタ式のページをご覧ください。
データ型は [String Filter (advanced)]、[Number Filter (advanced)]、[Date/Time Filter (advanced)] データ型を使用し、Looker フィルタ式を使用して値を入力します。これにより、ユーザー属性値の範囲が返されます。
ユーザー アクセス: ユーザー属性に対するユーザーの表示レベルと編集レベルを選択できます。
- なし: ユーザー アカウントには表示されません。
- 表示: アカウントのページに表示されますが、編集できません。
- 編集: ユーザーのアカウント ページに表示され、ユーザーが設定できます。
値を非表示にする: ユーザー属性がユーザーに表示されている場合でも、このオプションを [はい] に設定すると、ユーザー属性値がマスクされます。これは、パスワードやその他の機密情報の場合に役立ちます。この値をはいに設定すると、[接続設定]ページのユーザー属性のプルダウンで、ユーザー属性値がマスクされます。この値を [Yes] に設定すると、[No] に戻すことはできません。[Hide Values] を [Yes] に設定する場合は、ユーザー属性の宛先として許可するドメインの許可リストも指定する必要があります。
ドメインの許可リスト: 新しいユーザー属性の値を非表示にする場合は、属性の提供先となる URL(データベース接続のホスト名、プロジェクト Git HTTPS 統合の URL など)で構成されたドメインの許可リストも指定する必要があります。ワイルドカード(*)を使用すると、同じサイト上の複数のページへの配信を有効にできます。ドメインの許可リストを指定したら、そのユーザー属性は、リストした宛先にのみ配信できます。
このユーザー属性のドメイン許可リストを指定し、ユーザー属性、たとえばユーザー、グループ、またはデフォルト値を割り当てた場合、許可リストを変更して URL の制限を緩めることはできません。URL の制限の厳格化と URL の削除のみが可能です。たとえば、ドメインの許可リストに
my_domain/route/*
というエントリが含まれている場合、後でmy_domain/*
に変更することはできません。許可リストの制限を緩和する必要がある場合は、デフォルト値を含め、ユーザー属性に割り当てられている既存の値をすべて削除してください。デフォルト値を設定する: ユーザーに値が割り当てられていない場合のデフォルト値を設定するには、このチェックボックスをオンにします。
ユーザー属性を定義したら、ページの上部にある [ユーザーの値] タブと [グループの値] タブをクリックして、個々のユーザーまたはユーザー グループに値を割り当てることができます。
個々のユーザーへの値の割り当て
ユーザー属性を定義したら、その値を個々のユーザーに割り当てることができます。
- [User Values] をクリックします。
- プルダウン メニューで値を割り当てるユーザーを選択します。そのユーザーに適用される値のテーブルが表示されます。
- [ユーザーの値を設定] ボタンをクリックします。
- [新しい値] にユーザーの値を入力します。
- [保存] をクリックします。
個々のユーザーに値を割り当てると、その値は、常に、そのユーザー グループに割り当てられた値よりも優先されます。[User Values] タブには、グループ値をオーバーライドするユーザー属性にカスタム値が割り当てられた日時が表示されます。
1 つのユーザー属性に複数の値を割り当てるには、データ型 [文字列フィルタ(詳細設定)] を使用し、複数の値をカンマで区切って入力します。値と値の間に空白文字を入れないでください。たとえば、「Executive, Management, Contributors
」という文字列を入力します。
使用可能なすべての値をLooker管理者またはその他のユーザーに割り当てる場合は、ユーザー属性でワイルドカード値を使用します。
管理者または別のユーザーに文字列フィールドのすべての値へのアクセスを許可するには、ユーザー属性データ型を String Filter(advanced)に設定し、値
%, NULL
を使用します。管理者または他のユーザーに数値フィールドのすべての値へのアクセスを許可するには、ユーザー属性データ型を [番号フィルタ(詳細設定)] に設定し、値
<0, >=0, NULL
を使用します。
セキュリティ上の理由から、ユーザー属性でワイルドカードまたは値の範囲を使用することは、アクセス許可ではサポートされません。詳細については、
access_grant
パラメータのドキュメント ページをご覧ください。
ユーザーグループへの値の割り当て
ユーザー属性値をユーザー グループに割り当てることができます。[管理] パネルの [ユーザー属性] ページで、設定する属性の右側にある [編集] を選択します。続いて、次の手順を実行します。
- [グループ値] をクリックします。
- [+ グループを追加] ボタンをクリックします。
- 値を割り当てるグループをドロップダウンメニューで選択します。
- グループの [値] フィールドに値を入力します。
- [保存] をクリックします。
値を複数のグループに割り当てるときは、ユーザーが複数のグループに属する場合に備えて、どのグループを優先するかを決める必要があります。そのためには、グループをドラッグして適用順に並べます。各グループは、その下にリストされているグループよりも優先されます。
上記の例では、エグゼクティブ チームとマネジメント チーム グループがあります。エグゼクティブはマネージャーでもあるため、両グループのメンバーです。エグゼクティブ チーム グループをリストの一番上にドラッグすると、そのメンバーには [マネージャー] の値ではなく [エグゼクティブ] の値が割り当てられます。
ユーザーがユーザー属性についてカスタム値を設定した場合、ユーザーが設定した値は、そのユーザーが属するグループに割り当てられているどの値よりも優先されます。
ユーザー属性を使用できる場所
ユーザー属性には次の機能があります。
データベース接続
ホスト、ポート、データベース、ユーザー名、パスワード、接続のスキーマには、それぞれユーザー属性の値が与えられます。(接続ホスト フィールドで、ユーザー アクセス レベルが [編集可能] に設定されているユーザー属性を受け入れません)。
これにより、クエリを実行するユーザーに固有の接続が確立されます。ユーザー属性は [Additional Params] フィールドで参照することもできます。このフィールドでは、JDBC 接続文字列がカスタマイズされます。ユーザーがその接続を使用してクエリを実行する際に、ユーザーに割り当てられたユーザー属性値が適用され、ユーザーに基づいて接続をカスタマイズできます。
ユーザー属性に接続パラメータを 1 つ以上設定した場合、LookML モデルで PDT を使用するには、別の永続的な派生テーブル(PDT)認証情報を定義する必要があります。(1 つの例外として、「BigQuery の最大課金ギガバイト」は、別途 PDT ユーザーを要求せずにユーザー属性に設定できます)。
構成
Looker の [Admin] セクションの [Connections] ページで、任意の接続をユーザー属性を使用するように構成できます。([接続] ページについて詳しくは、管理者設定 - 接続のドキュメントをご覧ください)。新しい接続を作成するには、[New Connection] をクリックします。既存の接続を構成するには、接続の横にある [Edit] をクリックします。
[New Connection] ページと [Edit Connection] ページでは、ユーザー属性として設定できる各入力の右側に、ユーザー属性アイコンとともにボタンが表示されています。
ユーザー属性ボタンをクリックするとドロップダウンメニューが表示され、目的のユーザー属性を選択できます。
たとえば、Database Name
というユーザー属性は、接続のデータベースをパラメータ化するために使用されます。現在のユーザー demo_db
の Database Name
ユーザー属性値はかっこ内に表示されます。
[Additional Params] フィールドでユーザー属性を参照するには、LookML で使用できる同じ Liquid テンプレート生成構文を使用します。ユーザー属性は _user_attributes
Liquid 変数を通じて利用できます。たとえば、my_jdbc_param_attribute
という名前のユーザー属性を参照するには、次の構文を使用します。
my_jdbc_param={{ _user_attributes['name_of_attribute'] }}
Looker の [Additional Params] フィールドに次のように表示されます。
ユースケース: Looker でデータベース レベルの権限を適用する
データベースに、アクセス制限の異なるアカウントが複数ある場合は、Looker でデータベースの権限を利用できます。各ユーザーが自分のデータベース アクセスレベルに適した認証情報を使用して接続できるように、接続のユーザー名とパスワードをパラメータ化します。こうすることで、ユーザーはアクセスしてはいけないデータを確認できなくなりますが、Looker でどの Explore、ディメンション、メジャーが表示されるかには影響しません。
たとえば、user
テーブルの credit_card_number
列が表示されないアカウントでデータベースに接続するように構成されているユーザーも、Looker ではそのデータベース列を使用するディメンションが表示されます。ただし、そのDimensionを含むクエリを実行しようとすると、データベースからエラーを受け取ります。
ユースケース: 複数の同一データベースに 1 つのモデルを使用する
データのセキュリティ措置(HIPAA コンプライアンスなど)のために、お客様のデータがそれぞれのデータベースにサイロ化されている場合など、まったく同じスキーマの複数のデータベースがあるとします。または、プロダクションデータベースの開発用コピーに対してLookML開発者にクエリを実行してもらうこともあります。
これらのデータベースが同じデータベース サーバーに存在する場合、個別の接続とモデルを設定する必要はありません。代わりに、接続のデータベースをユーザー属性に設定し、各ユーザーが Database Name
属性の値で指定されたデータベースを指すようにします。
接続でユーザー属性を使用すると、その接続の永続的な派生テーブルが無効になります。
データ操作
データ アクションは、JSON ペイロードに特定のユーザー属性を含めるように構成できます。これを使用して、特定のサービスに対して操作を実行するための資格情報など、ユーザー固有の情報をデータとともに送信します。
構成
データ アクションにユーザー属性を含めるには、action
定義に user_attribute_param
ブロックを追加します。これらのBlockは、それぞれ次の2つのパラメーターを取ります。
user_attribute
: ユーザー属性の名前name
: JSON ペイロードで使用する名前
この例では、salesforce_username
と salesforce_password
の 2 つのユーザー属性を使用して、各ユーザーの Salesforce の認証情報を Looker に保持しています。ユーザーがUpdate in Salesforceデータアクションを実行すると、LookerはJSONペイロードとともにSalesforce資格情報を送信し、受信側のサーバーはSalesforceへの認証でそれを使用できます。
dimension: stage_name {
type: string
sql: ${TABLE}.stage_name;;
action: {
label: "Update in Salesforce"
url: "https://example.com/my_salesforce_url"
user_attribute_param: {
user_attribute: salesforce_username
name: "username"
}
user_attribute_param: {
user_attribute: salesforce_password
name: "password"
}
form_param: {
name: "new_stage_name"
type: string
required: yes
}
}
}
Action Hubでのカスタムアクション
カスタム アクションを構成することで、そのユーザー属性値を定義していないユーザーに対するアクション デスティネーションへの Looker コンテンツの送信やスケジュール設定を制限するユーザー属性を設定できます。
構成
カスタム アクションの params
パラメータは、Looker 管理者が管理パネルのアクション リストから、アクションの有効化ページで構成する必要があるフォーム フィールドを表します。アクション ファイルの params
パラメータに以下を含めます。
params = [{
description: "A description of the param.",
label: "A label for the param.",
name: "action_param_name",
user_attribute_name: "user_attribute_name",
required: true,
sensitive: true,
}]
ここで、user_attribute_name
は、管理パネルの [Users] セクションの [Name] ページの [Name] フィールドで定義されているユーザー属性です。required: true
は、データを配信するときにアクションを確認するために、そのユーザー属性に対して null 以外の有効な値が定義されている必要があります。sensitive: true
は、ユーザー属性値が暗号化され、入力時に Looker UI に表示されることはありません。複数のユーザー属性サブパラメーターを指定できます。
Looker 管理者はユーザー属性を使ってアクション フォームのフィールドを構成する必要があります。
- [管理] パネルの [操作] ページで、操作の横にある [有効にする] または [設定] ボタンをクリックします。
- 該当するフィールドの右側にあるユーザー属性アイコン をクリックし、目的のユーザー属性を選択します。
アクションハブを介したデータの共有に関するドキュメント ページのカスタム アクションにユーザー属性を追加するをご覧ください。
フィルタ
Explore、Look、ダッシュボード、以前のダッシュボードのフィルタをユーザー属性に設定して、クエリを実行しているユーザーに応じてクエリをカスタマイズできます。
たとえば、salesforce_username
というユーザー属性を作成し、各 Looker ユーザーの値が Salesforce のユーザー名になるように構成できます。次に、ダッシュボードでフィルタを salesforce_username
ユーザー属性に設定すると、各ユーザーが特定の Salesforce ユーザー名でフィルタされたダッシュボードを確認できます。
構成
Explore、Look、ダッシュボードの [Filters] セクションで、次の操作を行います。
目的のフィルタで [ユーザー属性に一致] オプションを選択します。
右側の選択ボックスは、フィルタ、フィールドと同じ種類のユーザー属性(数値、文字列(テキスト)、日付など)のリストで自動的に更新されます。各ユーザー属性の値が括弧内に表示されます。
目的のユーザー属性を選択します。
高度なフィルタ構文
フィルタの単純な等価チェックよりも複雑な処理を行う場合は、[一致(詳細)] を選択し、Liquid 変数を使用してそのユーザー属性を参照します。
{{ _user_attributes['name_of_attribute'] }}
たとえば、salesforce_username
というユーザー属性値に sf_
接頭辞を適用する必要があるとします。この場合、値がデータベースに格納されます。ユーザー属性値に接頭辞を追加するには、_user_attributes
Liquid 変数構文を使用します。
sf_{{_user_attributes['salesforce_username']}}
同じパターンを使用して、LookML のダッシュボード フィルタとダッシュボード要素のフィルタにユーザー属性を挿入できます。
スケジュールされたダッシュボードおよびLook
ダッシュボード フィルタと Look フィルタは、ユーザー属性を使用するオプションを含む、スケジュールごとに設定できます。これにより、各メール受信者のデータ配信結果をカスタマイズできます。1 回限りの配信と定期的な配信として配信されるコンテンツの配信をカスタマイズできます。
たとえば、salesforce_username
というユーザー属性を作成し、その値を各ユーザーの Salesforce のユーザー名に設定できます。ダッシュボードまたは Look スケジュールのフィルタを salesforce_username
ユーザー属性に設定して、各受信者が Salesforce ユーザー名でダッシュボードをフィルタできるようにします。
前提条件
ユーザー属性値が設定されているのは Looker ユーザーだけであるため、データ配信のすべての受信者が Looker アカウントを持っている必要があります。ユーザー属性は、各受信者についてダッシュボードまたはLookを一度実行することによって適用されます。
構成
Look、以前のダッシュボード、または新しいダッシュボードを使用するダッシュボードのスケジューラを開きます。
[フィルタ] セクションで、目的のフィルタの [ユーザー属性に一致] オプションを選択します。
右側の選択ボックスで、フィルタと同じ種類のユーザー属性のリストが自動的に更新されます。各ユーザー属性の独自の値が括弧内に表示されます。
目的のユーザー属性を選択します。
[メール オプション] の横にある [受信者として実行スケジュールを実行する] チェックボックスをオンにします。
アクセス フィルタ
行レベル セキュリティを提供するアクセス フィルタを使用して、ユーザーがアクセスできるデータを制限できます。access_grant
パラメータを使用することもできますが、アクセス フィルタはユーザー属性を使用して簡単に実装および維持できます。
アクセス フィルタを使用すると、ユーザー固有のデータ制限を安全に適用できます。LookML Explore に 1 つ以上のアクセス フィルタを定義すると、Explore から返されるデータが、クエリを実行するユーザーに基づいてフィルタされます。つまり、アクセスフィルタによって制限が強化され、データベース接続から返されたデータの特定のサブセットのみがユーザーに表示されるようになります。
SQL 注: アクセス フィルタは、SQL
WHERE
句に条件を挿入して、行レベルのセキュリティを提供します。LookML では、別の方法でもユーザー属性を列レベルのセキュリティとして利用できます(詳細: 特定のユーザーの機密性の高い項目をマスキングする)。
構成
- ユーザー属性を作成します。
- [ユーザー アクセス] を [なし](推奨)または [表示] に設定して構成します。(ユーザーによる編集が可能として設定されたユーザー属性をアクセスフィルタに使用することはできません)。
- ユーザー属性値をグループまたは個々のユーザーに割り当てます。
- アクセス フィルタを追加する Explore の LookML 定義に、次のパラメータを指定して
access_filter
ブロックを追加します。field
: フィルタリングする LookML フィールドの名前user_attribute
: データのフィルタリングに使用する値を保存するユーザー属性の名前
- そのExploreに対してクエリを実行します。
- クエリの SQL の
WHERE
句で、ユーザー属性値に基づいてデータがフィルタされていることを確認します。
この LookML は、注文に関するクエリをブランドでフィルタリングし、特定のブランドが company
という名前のユーザー属性に割り当てられた値に基づいてフィルタされるようにします。
explore: orders {
view_name: orders
access_filter: {
field: products.brand_name
user_attribute: company
}
join: products {
foreign_key: orders.product_id
}
}
Gitプロバイダーへの接続
LookML プロジェクトの場合は、HTTPS 経由の Git 認証を構成できます。HTTPS Git 認証を使用するプロジェクトでは、ユーザー属性を使用して、デベロッパーの Git オペレーションを実行するときに個々のデベロッパーの Git アカウントにログインできます。
Git アカウントのパスワードのユーザー属性は非表示にする必要があります。パスワード属性を作成する際は、[値を非表示] オプションで [はい] を選択し、[ドメインの許可リスト] に Git プロバイダの URL を入力します。
アクセス権限によるアクセスの制御
ユーザー属性値、access_grant
パラメータ、および required_access_grants
パラメータを使用して、LookML の Explore、結合、ビュー、フィールドへのアクセスを制限するアクセス許可を作成できます。
アクセス権限は次のように機能します。
- アクセス許可は、
access_grant
パラメータを使用して定義します。定義の一環として、アクセス許可をユーザー属性に関連付けます。アクセス権限へのアクセスを提供するユーザー属性値も指定します。 - 次に、Explore、join、view、field レベルで
required_access_grants
パラメータを使用し、リストされたすべてのアクセス許可にアクセスできるユーザーだけに構造を制限します。
たとえば、アクセス許可を使用して、salary
ディメンションへのアクセスを、department
属性の値が payroll
のユーザーに限定できます。
アクセス許可を定義する方法について詳しくは、access_grant
パラメータのドキュメント ページをご覧ください。
セキュリティ上の理由から、ユーザー属性でワイルドカードまたは値の範囲を使用することは、アクセス許可ではサポートされません。詳細については、
access_grant
パラメータのドキュメント ページをご覧ください。
Liquid変数
LookML では、さまざまな Liquid 変数を使用できます。これは、より複雑なタイプのカスタム出力に役立ちます。ユーザー属性値を Liquid に含めることができるようになりました。
例については、このドキュメント ページの接続セクションと、動的スキーマとテーブル名挿入のためのユーザー属性の使用に関するヘルプセンター記事をご覧ください。
Google BigQueryのデータ制限
Google BigQuery をデータベースとして使用する場合、Google はクエリのサイズに基づいてクエリごとに課金されます。ユーザーが誤ってクエリを実行して高額なクエリを実行しないように、BigQuery の [接続] の [課金の最大ギガバイト] 設定でユーザー属性を適用できます。ユーザー属性で指定する値は、ユーザーが1つのクエリで取得できるギガバイト数である必要があります。
埋め込みダッシュボード
ユーザー属性値に基づいてフィルタ値を指定することで、埋め込み Look とダッシュボードに表示されるデータを制限できます。詳しくは、こちらのコミュニティ トピックをご覧ください。
Localization
ユーザー属性 locale
と number_format
を使用すると、特定のユーザーまたはユーザー グループについて、データ、ビジュアリゼーション、Looker ユーザー インターフェースの一部の外観を設定できます。詳細については、Looker のローカライズのドキュメントをご覧ください。
ユーザー属性とアクセスフィルタのテスト
ユーザー属性の効果は、Looker の sudo 関数でテストできます。管理者(または see_users
と sudo
の両方の権限を持つユーザー)は、別のユーザーとして sudo し、Looker の使用経験を確認できます。
開発モードの場合、本番環境に変更内容をデプロイするまで、他のユーザーには変更が表示されません。他のユーザーに表示するために変更をデプロイしていない場合は、別のユーザーとして sudo しても変更内容は表示されません。