access_filter

停用评论:

用法


explore: explore_name {
  access_filter: {
    field: fully_scoped_field
    user_attribute: user_attribute_name
  }
}
层次结构
access_filter
默认值

接受
LookML 字段名称和关联的用户属性

特殊规则
您可以在同一探索查询中应用多个 access_filter 参数

定义

借助 access_filter,您可以应用特定于用户的数据限制。与大多数 LookML 参数不同,它需要与 Looker 中的其他设置结合使用才能正常运行。access_filter 参数特定于单个探索,因此您需要确保将 access_filter 参数应用于每个需要限制的探索。

请务必将 access_filter 添加到需要它的每个探索中。如果您忘记向应包含 access_filter 的探索添加该标记,数据将不受限制,用户将能够查看相应探索中的所有数据。

access_filter 的行为类似于您与用户一起坐在电脑前,要求用户在探索界面中应用一个或多个过滤条件,然后才能运行任何查询。例如,用户可能只负责部分客户,因此您需要用户应用客户名称过滤条件。

您应采取以下几个步骤来实现访问过滤条件:

  1. 确定哪些字段需要设置限制。在要求用户应用客户名称过滤条件的示例中,您的用户可能有一个包含名为 Name 的维度的客户探索。该字段的引用方式为 customer.name
  2. 与相关探索互动的每位用户都需要一个访问过滤条件值。在我们的示例中,每位用户都需要他们有权查看的客户名称列表。您可以使用 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
  }
}

即使是管理员,也必须在界面中设置过滤条件值

访问使用 access_filter 的探索的每位用户都必须在所引用的用户属性中有一个值。即使是具有管理员角色的用户,也无法查看这些数据。如果用户未设置用户属性值,则在尝试查看探索时会收到错误消息。

  • 如需向管理员或其他用户授予对字符串字段所有值的访问权限,请将用户属性数据类型设置为字符串过滤条件(高级),并使用值 %, NULL

  • 如需向管理员或其他用户授予对数字字段所有值的访问权限,请将用户属性数据类型设置为数字过滤条件(高级),并使用值 <0, >=0, NULL

注意事项

如果探索包含 access_filter,则 full_suggestions 的默认值会切换为 yes

如果探索包含 access_filter 参数,full_suggestions 的默认值会切换为 yes。这会导致建议查询使用探索逻辑运行,这意味着系统会应用 access_filter 来缩小返回的建议范围,从而将建议列表限制为用户有权访问的数据。

如果您手动将 full_suggestions 设置为 no,则不会运行过滤条件建议查询。