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