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