access_filter

コメントを無効にする:

用途


explore: explore_name {
  access_filter: {
    field: fully_scoped_field
    user_attribute: user_attribute_name
  }
}
階層
access_filter
デフォルト値
なし

許可
LookML フィールド名と関連付けられたユーザー属性

特別なルール
同じ Explore で複数の access_filter パラメータを適用できます。

定義

access_filter を使用すると、ユーザー固有のデータ制限を適用できます。ほとんどの LookML パラメータとは異なり、このパラメータを適切に機能させるには、Looker の他の設定と組み合わせて使用する必要があります。access_filter パラメータは単一の Explore に固有であるため、制限が必要な各 Explore に access_filter パラメータを適用する必要があります。

access_filter が必要なすべての Explore に access_filter を追加することを忘れないでください。access_filter を追加すべき Explore に追加し忘れると、データは制限されず、ユーザーはその Explore のすべてのデータを表示できるようになります。

access_filter の動作は、ユーザーと一緒に座って、クエリを実行する前に Explore UI で 1 つ以上のフィルタを適用するよう要求する場合と似ています。たとえば、ユーザーが一部の顧客のみを扱う場合、そのユーザーに顧客名フィルタの適用を要求します。

アクセス フィルタを実装するには、次の手順を実施する必要があります。

  1. 制限が必要なフィールドを決定します。ユーザーに顧客名のフィルタの適用を求める例では、ユーザーは [名前] というディメンションを含む [顧客] Explore を持っている可能性があります。このフィールドの参照方法は customer.name です。
  2. 問題の Explore を操作するすべてのユーザーに、アクセス フィルタの値が必要です。この例では、すべてのユーザーが、表示を許可されている顧客名のリストを必要とします。これらの値を各ユーザーまたはユーザー グループに適用するには、Looker のユーザー属性機能を使用します。この機能については、ユーザー属性のドキュメント ページをご覧ください。allowed_customers ユーザー属性を作成するとします。
  3. 最後に、作成したユーザー属性を、その値をフィルタとして使用するフィールドに接続します。この例では、allowed_customers ユーザー属性を customer.name フィールドに次のように関連付けます。
explore: customer {
  access_filter: {
    field: customer.name
    user_attribute: allowed_customers
  }
}

ユーザーが自分の販売地域の情報のみを表示できるようにする:

explore: customer {
  access_filter: {
    field: sales.region
    user_attribute: sales_region
  }
}

顧客内の特定の部門に関する情報のみをユーザーに表示するように制限します。

explore: customer {
  access_filter: {
    field: customer.name
    user_attribute: allowed_customers
  }
  access_filter: {
    field: product.department
    user_attribute: allowed_departments
  }
}

一般的な課題

access_filter には完全スコープのフィールド名が必要

ビュー名なしでフィールド名を記述すると、Looker のほとんどのパラメータは、パラメータが使用されている場所に基づいてビュー名を使用します。ただし、access_filter はこのようには機能しません。ビュー名とフィールド名の両方を記述する必要があります。

たとえば、次のように記述すると、name が顧客名として解釈されると考えるかもしれません。

explore: customer {
  access_filter: {
    field: name
    user_attribute: allowed_customers
  }
}

しかし、実際にはエラーが発生します。代わりに、次のように記述する必要があります。

explore: customer {
  access_filter: {
    field: customer.name
    user_attribute: allowed_customers
  }
}

管理者でも UI でフィルタ値を設定する必要があります

access_filter を使用する Explore にアクセスするすべてのユーザーは、参照されるユーザー属性に値を持っている必要があります。管理者のロールを持つユーザーはすべてのデータを表示できますが、この制限は管理者にも適用されます。ユーザー属性値が設定されていないユーザーが Explore を表示しようとすると、エラーが表示されます。

  • 管理者または別のユーザーに文字列フィールドのすべての値へのアクセスを許可するには、ユーザー属性のデータ型を [文字列フィルタ(詳細設定)] に設定し、値 %, NULL を使用します。

  • 管理者または別のユーザーに数値フィールドのすべての値へのアクセスを許可するには、ユーザー属性のデータ型を [数値フィルタ(詳細設定)] に設定し、値 <0, >=0, NULL を使用します。

知っておくべきこと

Explore に access_filter が含まれている場合、full_suggestions のデフォルト値が yes に切り替わる

Explore に access_filter パラメータが含まれている場合、full_suggestions のデフォルト値は yes に切り替わります。これにより、候補クエリが Explore ロジックを使用して実行されます。つまり、access_filter が適用されて返される候補が絞り込まれ、候補リストがユーザーがアクセスできるデータのみに制限されます。

full_suggestionsno に手動で設定すると、フィルタ候補クエリは実行されません。