用量
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
的行为类似于您与用户坐着,要求其在探索界面中应用一个或多个过滤条件,然后才能运行任何查询。例如,用户可能只处理一部分客户,因此您可以要求用户应用客户名称过滤条件。
要实现访问过滤器,您应执行以下几个步骤:
- 确定哪些字段需要设置限制条件。在上面的示例中,用户的“客户探索”可能使用了名为“名称”的维度。该字段的引用方式为
customer.name
。 - 每个与相关“探索”互动的用户都需要有访问权限过滤条件值。在我们的示例中,每位用户都需要查看获得查看权限的客户名称列表。您可以使用 Looker 的用户属性功能,将这些值应用于每个用户或用户群组(请参阅用户属性文档页面)。假设我们创建一个 allowed_customers 用户属性。
- 最后,将您创建的用户属性与应该将其值用作过滤条件的字段关联起来。在此示例中,我们需要将 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
。