用户属性可为每位 Looker 用户提供量身定制的体验。Looker 管理员定义用户属性,然后将用户属性值应用于用户群组或个别用户。
管理员还可以定义用户属性,由用户自行提供值,例如密码或联系信息。Looker 中的各个位置都可以引用用户属性,以便为每位用户提供自定义体验。
Looker 会自动包含一些用户属性,例如 email
、first_name
、landing_page
、last_name
、full_name
、ID
、timezone
(如果已配置)、locale
和 number_format
。
查看用户属性
如需查看用户属性列表,请前往管理菜单的用户部分中的用户属性页面。
用户属性表会显示每个用户属性的名称、标签和类型(如需了解详情,请参阅下一部分)。此外,该表还提供了一个按钮,供您针对用户属性执行操作。某些属性会显示“系统默认值”,而不是操作按钮,这意味着 Looker 会自动为每位用户创建这些属性。系统默认用户属性由 Looker 预留,供内部使用,无法修改。
创建用户属性
如需定义用户属性,请点击管理菜单的用户部分中用户属性页面上的创建用户属性按钮。每个用户属性都有以下设置:
- 名称:用户属性的名称,适用于 LookML 等基于文本的环境(名称只能包含小写字母、数字和下划线)。
- Label:名称的用户友好版本。默认情况下,此值为属性的名称,下划线会替换为空格,并且每个字词都将采用大写形式。不过,您可以根据需要修改标签。
数据类型:此设置用于检查是否已为用户分配了此用户属性的有效值。用户属性的数据类型可以是以下任一类型:
- 字符串:选择此选项可创建与某个字符串值(例如用户名)完全匹配的用户属性。如需在用户属性值中使用多个字符串值或 Looker 过滤条件表达式,请改为选择字符串过滤条件(高级)选项。如果您希望将用户属性视为字面字符串,请务必在其语法中添加单引号
'
,如以下示例所示:none '{{ _user_attributes['name_of_attribute'] }}'
- 数字:选择此选项可指定单个数字,例如员工编号。如需使用数字范围或 Looker 过滤表达式,请改用数字过滤器(高级)。
- 日期/时间:选择此选项可指定单个日期或时间,例如用户的出生日期。如需使用日期范围或 Looker 过滤表达式,请改用日期/时间过滤器(高级)。
- 相对网址:选择此选项可指定一个相对网址(例如
/browse/boards/2
),指向 Looker 实例上的特定内容,例如面板、文件夹或 Markdown 文件(例如项目中的 README 或文档文件)。例如,landing_page
用户属性的数据类型为相对网址,可用于为用户或群组指定特定首页。 - 字符串过滤器(高级):选择此选项可允许在用户属性中使用多个字符串值或 Looker 过滤器表达式。如需查看可用于字符串的过滤表达式列表,请参阅过滤表达式文档页面。
- 数字过滤器(高级):选择此选项可允许在用户属性中使用一系列数字值或 Looker 过滤器表达式。如需查看可用于数字的过滤表达式列表,请参阅过滤表达式文档页面。
- 日期/时间过滤条件(高级):选择此选项可允许在用户属性中使用日期范围或 Looker 过滤条件表达式。如需查看可用于日期和时间的过滤表达式列表,请参阅过滤表达式文档页面。
使用字符串过滤条件(高级)、数字过滤条件(高级)和日期/时间过滤条件(高级)数据类型,通过 Looker 过滤条件表达式输入值,系统会返回用户属性的一系列值。
- 字符串:选择此选项可创建与某个字符串值(例如用户名)完全匹配的用户属性。如需在用户属性值中使用多个字符串值或 Looker 过滤条件表达式,请改为选择字符串过滤条件(高级)选项。如果您希望将用户属性视为字面字符串,请务必在其语法中添加单引号
用户访问权限:您可以选择用户对用户属性的公开范围和修改权限级别:
- 无:不会显示在用户的账号页面上。
- 查看:将显示在用户的账号页面上,但无法修改。
- 修改:将显示在用户的账号页面上,可由用户进行设置。
隐藏值:即使用户可以看到用户属性,将此选项设为 Yes 也会导致系统屏蔽用户属性值,这对于密码或其他敏感信息非常有用。如果将此值设置为 Yes,系统还会在连接设置页面上的用户属性下拉菜单中遮盖用户属性值。将此值设置为 Yes 后,便无法再将其更改为 No。将隐藏值设置为 Yes 后,您还必须指定允许用作用户属性目标的网域许可名单。
网域许可名单:隐藏新用户属性的值时,您还必须指定一个网域许可名单,其中包含可将该属性传送到的网址,例如数据库连接的主机名和项目 Git HTTPS 集成的网址。您可以使用通配符 (*) 将内容投放到同一网站上的多个网页。指定网域许可名单后,用户属性只能传送到您列出的目标位置。
为此用户属性指定网域许可名单后,如果用户属性已分配任何值(为用户、群组分配或通过设置默认值),您将无法更改许可名单以使网址的限制更少。您只能提高网址的限制级别或从许可名单中移除网址。例如,如果网域许可名单包含条目
my_domain/route/*
,您日后便无法将其更改为my_domain/*
。如果您确实需要放宽许可名单的限制,请删除分配给用户属性的所有现有值,包括默认值。设置默认值:选中此复选框可设置默认值,以防未向用户分配值。
定义用户属性后,您可以点击页面上的用户值和群组值标签页,为个别用户或用户群组分配值。
为个别用户分配价值
- 在管理菜单的用户部分中,点击用户属性页面上的用户值标签页。
- 在下拉菜单中选择要为其分配值的用户。系统随即会显示适用于该用户的值表格。
- 点击为用户设置值按钮。
- 在新值字段中输入新值。
- 点击保存。
为单个用户分配值时,该值始终优先于分配给该用户所属群组的任何值。当系统为用户属性分配了自定义值(此值会替换群组值)时,用户值标签页会显示相应信息。任何被替换的值旁边都会显示“已替换”文本,并且系统不会考虑这些值。“当前值”文本将显示在“活跃用户数”属性值旁边。
如需向用户属性分配多个值,请使用数据类型字符串过滤器(高级),并输入多个值(以英文逗号分隔)。确保值之间没有空格。例如,您可以输入字符串:Executive, Management, Contributors
。
如需向 Looker 管理员或其他用户分配所有可能的值,请在用户属性中使用通配符值:
如需向管理员或其他用户授予对字符串字段的所有值的访问权限,请将用户属性数据类型设置为字符串过滤器(高级),并使用值
%, NULL
。如需向管理员或其他用户授予对数字字段的所有值的访问权限,请将用户属性数据类型设置为数字过滤器(高级),并使用值
<0, >=0, NULL
。
为用户群组分配价值
您可以为用户群组分配用户属性的值。在管理面板的用户属性页面中,选择要设置的属性右侧的修改。然后按以下步骤操作:
- 点击分组值标签页。
- 点击 + 添加群组按钮。
- 在下拉菜单中选择要为其分配值的组。
- 在值字段中输入要为该组设置的值。
- 点击保存。
向多个群组分配值时,您需要确定哪个群组应优先(如果用户属于多个群组)。为此,请将组拖动到应应用的顺序中;每个组都优先于其下方列出的组。
例如,您可以创建“执行团队”和“管理团队”群组。高管也是经理,因此他们同时属于这两个群组。将“高管团队”组拖动到列表顶部可确保为其成员分配“高管”值,而不是“经理”值。
如果用户为用户属性设置了自定义值,则用户设置的值会覆盖为用户所属群组指定的任何值。
用户属性在哪些地方可以使用?
用户属性具有以下功能:
数据库连接数
连接的主机、端口、数据库、用户名、密码和架构都可以设置为用户属性的值。(“连接主机”字段不接受将用户访问权限级别设为可修改的用户属性。)
这些用户属性可建立特定于运行查询的用户的关联。您还可以在其他 JDBC 参数字段中引用用户属性,以自定义 JDBC 连接字符串。当用户使用关联运行查询时,系统会应用分配给用户的用户属性值,从而允许根据用户自定义关联。
配置
您可以通过 Looker 的管理部分中的连接页面,将任何连接配置为使用用户属性。(如需了解连接页面,请参阅管理设置 - 连接文档页面。)如需创建新关联,请点击添加关联。如需配置现有连接,请点击相应连接旁边的修改。
如果输入项可以设置为用户属性,Looker 会在输入项 旁边显示用户属性按钮。
点击用户属性按钮,系统随即会显示一个下拉菜单,供您选择所需的用户属性。列表中会显示用户属性名称,并在括号中显示当前用户的用户属性值。
如需在其他 JDBC 参数字段中引用用户属性,您可以使用 LookML 中提供的相同 Liquid 模板语法。用户属性通过 _user_attributes
Liquid 变量提供。例如,如需引用名为 my_jdbc_param_attribute
的用户属性,请使用以下语法:
my_jdbc_param={{ _user_attributes['name_of_attribute'] }}
使用场景:在 Looker 中应用数据库级权限
如果您的数据库中有不同账号,且这些账号具有不同的访问权限限制,您可以在 Looker 中使用数据库权限。将连接的用户名和密码设置为参数化,以便每位用户都能使用与其数据库访问权限级别相符的凭据进行连接。虽然这可确保用户不会看到他们无权访问的数据,但不会影响 Looker 中向他们显示哪些探索、维度和测量。
例如,如果用户配置为使用某个账号连接到数据库,而该账号会导致用户无法在 user
表中看到 credit_card_number
列,那么使用该数据库列的任何维度仍会显示在 Looker 中。如果他们尝试运行包含该维度的查询,则会收到数据库发送的错误消息。
用例:对多个完全相同的数据库使用一个模型
例如,如果您有多个架构完全相同的数据库(例如,出于数据安全措施 [例如 HIPAA 合规性] 的考虑,将每个客户的数据隔离到各自的数据库中),或者,您希望 LookML 开发者针对生产数据库的开发副本运行查询。
如果这些数据库位于同一数据库服务器上,则无需设置单独的连接和模型。而是将连接的数据库设置为用户属性,这样每个用户都会指向其 Database Name
用户属性值中指定的数据库。
数据操作
数据操作可配置为在其 JSON 载荷中包含特定用户属性。您可以使用此标头将特定于用户的信息(例如用户的凭据)与数据一起发送,以便对特定服务执行操作。
配置
如需在数据操作中添加用户属性,请将 user_attribute_param
代码块添加到 action
定义中。每个代码块都接受两个参数:
user_attribute
:用户属性的名称name
:要在 JSON 载荷中使用的名称
此示例使用两个用户属性(salesforce_username
和 salesforce_password
)在 Looker 中存储每位用户的 Salesforce 凭据。当用户执行“在 Salesforce 数据中更新”操作时,Looker 会将其 Salesforce 凭据随 JSON 载荷一起发送,接收服务器可使用这些凭据对 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
是管理面板的用户部分中用户属性页面上的名称字段中定义的用户属性,required: true
表示用户必须为该用户属性定义非 null 且有效的值,才能在传送数据时看到该操作;sensitive: true
表示用户属性值已加密,并且在输入后绝不会显示在 Looker 界面中。您可以指定多个用户属性子参数。
Looker 管理员必须使用用户属性配置操作的表单字段:
- 在管理面板的操作页面上,点击相应操作旁边的启用或设置按钮。
- 点击相应字段的用户属性图标 ,然后选择所需的用户属性。
请参阅通过操作中心分享数据文档页面的向自定义操作添加用户属性部分。
过滤条件
探索、外观和信息中心中的过滤条件可以设置为用户属性,以便根据运行查询的用户自定义查询。
例如,您可以创建一个名为 salesforce_username
的用户属性,并配置每个 Looker 用户,使其值为 Salesforce 用户名。然后,您可以在信息中心内将过滤条件设置为 salesforce_username
用户属性,这样每位用户都会看到系统根据其特定 Salesforce 用户名过滤后的该信息中心。
配置
在“探索”“观看”或信息中心的过滤条件部分中:
在所需过滤条件上选择与用户属性匹配选项。
右侧的选择框会自动更新为与过滤条件字段类型相同的用户属性列表,例如数字、字符串(文本)、日期等。Looker 会在括号中显示您为每个用户属性设置的值。
选择所需的用户属性。
高级过滤条件语法
如果您想对过滤条件执行比简单的等式检查更复杂的操作,请选择匹配(高级),然后使用 Liquid 变量引用用户属性:
{{ _user_attributes['name_of_attribute'] }}
例如,假设您需要对 salesforce_username
用户属性的值应用 sf_
前缀,因为值就是以这种方式存储在数据库中的。如需向用户属性值添加前缀,请使用 _user_attributes
Liquid 变量语法:
sf_{{_user_attributes['salesforce_username']}}
您可以使用相同的模式将用户属性插入 LookML 仪表板过滤条件和仪表板元素过滤条件中。
安排发布的信息中心和 Look
您可以按时间表设置信息中心和外观过滤条件,包括使用用户属性的选项。这样,您就可以为每位电子邮件收件人自定义数据传送结果。您可以自定义内容的递送,包括一次性递送和周期性递送。
例如,您可以创建一个名为 salesforce_username
的用户属性,并将其值设置为每位用户的 Salesforce 用户名。将信息中心或数据洞见时间表的过滤条件设置为 salesforce_username
用户属性,以便每个收件人都能收到按其 Salesforce 用户名的过滤信息中心。
前提条件
只有 Looker 用户可以设置用户属性值,因此数据传送的每个收件人必须拥有 Looker 账号。您可以为每个收件人运行信息中心或一次性运行 Look 来应用用户属性。
配置
在过滤条件部分,针对所需过滤条件选择与用户属性匹配选项。
右侧的选择框会自动更新为与过滤条件相同类型的用户属性列表。每个用户属性对应的自定义值会显示在括号中。
选择所需的用户属性。
勾选电子邮件选项字段旁边的以收件人身份运行时间表复选框。
访问过滤条件
您可以使用访问权限过滤器来限制用户可以访问的数据,从而实现行级安全。虽然您可以使用 access_grant
参数,但使用用户属性更容易实现和维护访问权限过滤条件。
访问权限过滤器提供了一种安全的方式来应用特定于用户的数据限制。为 LookML 探索定义一个或多个访问权限过滤条件会强制系统根据运行查询的用户过滤从探索返回的数据。因此,访问权限过滤器提供了额外的限制层,确保用户只能看到数据库连接中的数据的特定子集。
配置
- 创建用户属性:
- 将用户访问权限设置为无(推荐)或查看进行配置。(配置为可供用户修改的用户属性无法用于访问权限过滤条件。)
- 向群组或单个用户分配用户属性值。
- 在要添加访问权限过滤条件的“探索”的 LookML 定义中,添加一个包含以下参数的
access_filter
块:field
:要过滤的 LookML 字段的名称user_attribute
:存储您要用于过滤数据的值的用户属性的名称
- 对该探索运行查询。
- 检查查询的 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 账号密码的用户属性必须隐藏。创建密码属性时,选择 Hide Values(隐藏值)选项下的 Yes(是),然后在 Domain Allowlist(网域许可名单)字段中输入 Git 提供程序网址。
使用访问授权控制访问权限
您可以使用用户属性值、access_grant
参数和 required_access_grants
参数创建访问权限授予,以限制对 LookML 探索、联接、视图或字段的访问权限。
访问权限授予的工作原理如下:
- 您可以使用
access_grant
参数定义访问权限授予。在定义过程中,您可以将访问权限授予与用户属性相关联。您还可以指定哪些用户属性值可访问访问权限授予。 - 接下来,您可以在探索、联接、视图或字段级别使用
required_access_grants
参数,将该结构限制为仅供有权访问所列每个访问权限授予的用户访问。
例如,您可以使用访问权限授予功能,将对 salary
维度的访问权限限制为仅限 department
用户属性值为 payroll
的用户。
如需详细了解如何定义访问权限授予,请参阅 access_grant
参数文档页面。
Liquid 变量
LookML 支持使用多种不同的 Liquid 变量,这对于更复杂类型的自定义输出非常有用。现在,您可以在 Liquid 中添加用户的属性值。Liquid 表达式必须使用适合您数据库方言的语法。
您可以在本文档页面的连接部分以及使用用户属性进行动态架构和表名称注入最佳实践页面中查看示例。
Google BigQuery 数据限制
如果您使用 Google BigQuery 作为数据库,Google 会根据查询大小向您收取每次查询的费用。为防止用户无意中运行费用过高的查询,您可以在 BigQuery 连接的最大结算 GB 数设置中应用用户属性。您在用户属性中提供的值应为用户在单次查询中允许提取的 GB 数。
嵌入式信息中心
您可以根据用户属性值设置过滤器值,以限制嵌入式外观和信息中心中显示的数据。如需了解详情,请参阅创建概念验证嵌入式信息中心(由 Looker 提供支持) 社区帖子。
本地化
用户属性 locale
和 number_format
可为特定用户或用户群组设置数据、可视化结果和 Looker 界面的部分内容的外观。如需了解详情,请参阅本地化 Looker 文档页面。
测试用户属性和访问权限过滤条件
您可以使用 Looker 的 sudo 函数测试用户属性的影响。管理员(或同时拥有 see_users
和 sudo
权限的用户)可以以其他用户身份 sudo,以查看其他用户的 Looker 使用体验。
在开发模式下,除非您将更改部署到生产环境,否则其他用户无法看到您所做的更改。如果您尚未部署更改以供其他用户查看,则在以其他用户身份 sudo 时,您不会看到所做的更改。