用户属性可为每位 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 过滤表达式,请改用日期/时间过滤条件(高级)。
- 相对网址:选择此选项可指定相对网址(例如
/browse/boards/2),该网址指向 Looker 实例上的特定内容,例如面板、文件夹或 Markdown 文件(例如项目中的 README 或文档文件)。例如,landing_page用户属性的数据类型为相对网址,可用于为用户或群组指定特定首页。 - 字符串过滤条件(高级):选择此选项可允许用户属性中包含多个字符串值或 Looker 过滤条件表达式。如需查看可用于字符串的过滤条件表达式列表,请参阅过滤条件表达式文档页面。
- 数字过滤条件(高级):选择此选项可在用户属性中使用一系列数值或 Looker 过滤表达式。如需查看可用于数字的过滤条件表达式列表,请参阅过滤条件表达式文档页面。
- 日期/时间过滤条件(高级):选择此选项可在用户属性中指定日期范围或 Looker 过滤条件表达式。如需查看可用于日期和时间的过滤表达式列表,请参阅过滤表达式文档页面。
使用字符串过滤条件(高级)、数字过滤条件(高级)和日期/时间过滤条件(高级)数据类型,通过 Looker 过滤条件表达式输入值,这些表达式将返回用户属性的一系列值。
- 字符串:选择此选项可创建与一个字符串值(例如用户名)完全匹配的用户属性。如需在用户属性值中使用多个字符串值或 Looker 过滤条件表达式,请改为选择字符串过滤条件(高级)选项。如果您希望将用户属性视为字面字符串,请务必在其语法中添加单引号
用户访问权限:您可以选择用户对用户属性的查看和修改权限级别:
- 无:不会显示在用户的账号页面上。
- 查看:将显示在用户的账号页面上,但无法修改。
- 编辑:将显示在用户的账号页面上,并且可由用户自行设置。
隐藏值:即使用户属性对用户可见,将此选项设置为是也会导致用户属性值被遮盖,这对于密码或其他敏感信息非常有用。将此值设置为 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
}
}
}
操作中心内的自定义操作
您可以配置自定义操作,以包含用户属性,从而限制用户向该操作目标发送或安排 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 管理员必须使用用户属性配置操作的表单字段:
- 在管理面板的操作页面上,点击相应操作旁边的启用或设置按钮。
- 点击相应字段的用户属性图标
,然后选择所需的用户属性。
请参阅通过操作中心共享数据文档页面中的向自定义操作添加用户属性部分。
过滤条件
探索、Look 和信息中心中的过滤条件可以设置为用户属性,以便根据运行查询的用户自定义查询。
例如,您可以创建一个名为 salesforce_username 的用户属性,并将每个 Looker 用户的该属性值配置为他们的 Salesforce 用户名。然后,您可以在信息中心内针对 salesforce_username 用户属性设置过滤条件,这样每位用户都会看到根据其特定 Salesforce 用户名过滤后的信息中心。
配置
在探索、Look 或信息中心的过滤条件部分中:
在所需的过滤条件中,选择与用户属性匹配选项。
右侧的选择框会自动更新,其中会显示与过滤器的字段具有相同类型的用户属性列表,例如数字、字符串(文本)、日期等。Looker 会在圆括号中显示每个用户属性的值。
选择所需的用户属性。
高级过滤条件语法
如果您想执行比简单的等值检查更复杂的过滤操作,请选择匹配(高级),然后使用 Liquid 变量引用用户属性:
{{ _user_attributes['name_of_attribute'] }}
例如,假设您需要将 sf_ 前缀应用于 salesforce_username 用户属性的值,因为这是值在数据库中的存储方式。如需将前缀添加到用户属性值,请使用 _user_attributes Liquid 变量语法:
sf_{{_user_attributes['salesforce_username']}}
您可以使用相同的模式将用户属性插入 LookML 信息中心过滤条件和信息中心元素过滤条件中。
已安排的信息中心和 Look
您可以按时间表设置信息中心和 Look 过滤条件,包括使用用户属性的选项。这样,您就可以为每位电子邮件收件人自定义数据传送结果。您可以自定义以一次性交付和周期性交付方式发送的内容交付。
例如,您可以创建一个名为 salesforce_username 的用户属性,并将该属性的值设置为每位用户的 Salesforce 用户名。将信息中心或 Look 安排的过滤条件设置为 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 账号密码的用户属性必须为隐藏。创建密码属性时,请在隐藏值选项下选择是,然后在网域许可名单字段中输入 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 数 设置中应用用户属性。您在用户属性中提供的值应为用户在单个查询中可提取的千兆字节数。
嵌入式信息中心
您可以根据用户属性值设置过滤条件值,从而限制嵌入式 Look 和信息中心中显示的数据。如需了解详情,请参阅创建概念验证嵌入式信息中心 (Powered by Looker) 社区帖子。
本地化
用户属性 locale 和 number_format 可用于为特定用户或用户群组设置数据、可视化图表和 Looker 界面部分的外观。如需了解详情,请参阅本地化 Looker 文档页面。
访问外部 API 端点
用户属性可供 Looker 扩展框架用于通过服务器代理访问外部 API 端点。如需查看示例,请参阅扩展框架 React 和 JavaScript 代码示例文档页面。
测试用户属性和访问权限过滤条件
您可以使用 Looker 的 sudo 函数测试用户属性的效果。管理员(或同时拥有 see_users 和 sudo 权限的用户)可以以其他用户的身份执行 sudo 命令,了解对方的 Looker 体验。
当您处于开发模式时,在您将更改部署到生产环境之前,其他用户无法看到您的更改。如果您尚未部署更改以供其他用户查看,那么当您以其他用户身份执行 sudo 命令时,将不会看到您所做的更改。