用户属性可为每位 Looker 用户提供量身定制的体验。Looker 管理员定义用户属性,然后将用户属性值应用于用户群组或个别用户。
管理员还可以定义用户属性,由用户自行提供值,例如密码或联系信息。Looker 中的各个位置都可以引用用户属性,以便为每位用户提供个性化体验。
Looker 会自动包含一些用户属性,例如 email
、first_name
、landing_page
、last_name
、full_name
、ID
、timezone
(如果已配置)、locale
和 number_format
。
查看用户属性
如需查看用户属性列表,请前往管理菜单的用户部分中的用户属性页面。
用户属性表会显示每个用户属性的名称、标签和类型(如需了解详情,请参阅下一部分)。此外,表格中还提供了一个按钮,用于展示您可以对用户属性执行的操作。部分属性显示“系统默认设置”而不是操作按钮,这意味着 Looker 会自动为每个用户创建这些属性。系统默认用户属性由 Looker 预留,供内部使用,无法修改。
创建用户属性
如需定义用户属性,请点击管理菜单的用户部分中用户属性页面上的创建用户属性按钮。每个用户属性都有以下设置:
- 名称:用户属性的名称,适用于 LookML 等基于文本的环境(名称只能包含小写字母、数字和下划线)。
- Label:名称的用户友好版本。默认情况下,此值为属性的名称,下划线会替换为空格,并且每个字词都将采用大写形式。不过,您可以根据需要修改标签。
数据类型:此设置用于检查是否已为此用户属性为用户分配了有效值。用户属性的数据类型可以是以下类型之一:
- 字符串:选择此选项可创建与某个字符串值(例如用户名)完全匹配的用户属性。如需在用户属性值中使用多个字符串值或 Looker 过滤条件表达式,请改为选择字符串过滤条件(高级)选项。如果您希望将用户属性视为字面量字符串,请务必在其语法中添加单引号
'
,如以下示例所示:'{{ _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 载荷中包含某些用户属性。您可以使用此标头将特定于用户的信息(例如用户的凭据)与数据一起发送,以便对特定服务执行操作。
配置
如需在数据操作中添加用户属性,请在 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
}
}
}
在 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 管理员必须使用用户属性配置操作的表单字段:
- 在管理面板的操作页面上,点击该操作旁边的启用或设置按钮。
- 点击相应字段对应的用户属性图标 ,然后选择所需的用户属性。
请参阅通过操作中心共享数据文档页面的为自定义操作添加用户属性部分。
过滤条件
您可以将探索、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
您可以按时间表设置信息中心和外观过滤条件,包括使用用户属性的选项。这样,您就可以为每个电子邮件收件人自定义数据传送结果。您可以自定义内容的递送,包括一次性递送和周期性递送。
例如,您可以创建一个名为 salesforce_username
的用户属性,并将其值设置为每位用户的 Salesforce 用户名。在信息中心或 Look 时间表中为 salesforce_username
用户属性设置过滤条件,让每个收件人都能按 Salesforce 用户名过滤该信息中心。
前提条件
只有 Looker 用户设置了用户属性值,因此数据传送的每个接收者都必须拥有 Looker 账号。可通过为每个收件人运行信息中心或“查看”一次来应用用户属性。
配置
在过滤条件部分,选择所需过滤条件的与用户属性匹配选项。
右侧的选择框会自动更新为与过滤条件相同类型的用户属性列表。括号中会显示您为每个用户属性设定的值。
选择所需的用户属性。
选中电子邮件选项字段旁边的以收件人身份运行时间表复选框。
访问权限过滤条件
您可以使用访问权限过滤器限制用户可以访问的数据,从而实现行级安全。虽然您可以使用 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 账号密码的用户属性必须隐藏。创建密码属性时,请在隐藏值选项下选择是,并在网域许可名单字段中输入 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 连接的结算千兆字节设置中应用用户属性。您在用户属性中提供的值应为允许用户在单个查询中提取的千兆字节数。
嵌入式信息中心
您可以根据用户属性值设置过滤条件值,从而限制嵌入式 Look 和信息中心中显示的数据。如需了解详情,请参阅创建概念验证嵌入式信息中心(由 Looker 提供支持)社区帖子。
本地化
用户属性 locale
和 number_format
可以为特定用户或用户群组设置数据外观、可视化图表和 Looker 界面的各个部分。如需了解详情,请参阅本地化 Looker 文档页面。
测试用户属性和访问权限过滤条件
您可以使用 Looker 的 sudo 函数测试用户属性的影响。管理员(或同时拥有 see_users
和 sudo
权限的用户)可以以其他用户的身份 sudo,以查看其他用户的 Looker 使用体验。
在开发模式下,除非您将更改部署到生产环境,否则您的更改不会向其他用户显示。如果您尚未部署更改以供其他用户查看,则在以其他用户身份 sudo 时,您不会看到所做的更改。