访问过滤器

用量

探索:探索名称 {
access_filter:{
字段full_scope_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. 确定哪些字段需要设置限制条件。在上面的示例中,用户的“客户探索”可能使用了名为“名称”的维度。该字段的引用方式为 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