用户函数
本文介绍 Tableau 中的用户函数及其用途。它还使用示例来演示如何创建用户计算。
为何使用用户函数
用户函数可用于创建用户筛选器或行级别安全筛选器,这些筛选器影响发布到 Tableau Server 或 Tableau Cloud 的可视化项,以便只有特定人员才能看到您的可视化项。
举例来说,如果您有一个发布到 Tableau Server 或 Tableau Cloud 的可视化项,该可视化项显示部门中每名员工的销售业绩。您可能希望只允许员工在访问该可视化项时查看自己的销售数字。
在这种情况下,您可以使用 ISMEMBEROF 函数创建一个字段,如果登录到服务器的人员的用户名是(服务器上)指定组(例如,“Managers”组)的成员,则该字段返回 true。然后,当您使用此计算字段筛选视图时,只有属于该组的人员才能看到数据。
本例中的计算可能如下所示:
ISMEMBEROF('Managers')
注意:如果组名称或用户名包含非字母数字,以使用下面的函数时,您必须为特殊字符使用 HTML URL 编码。
某些特殊字符无需 HTML URL 编码即可使用,例如下划线、括号和感叹号。 _ ( ) !
许多其他字符必须编码。
例如,函数 ISMEMBEROF("USERS+")
需要编写为 ISMEMBEROF("USERS%2B")
,因为“%2B”是“+”符号的 HTML URL 编码。有关 HTML URL 编码的信息,请参见 W3schools Web 开发者网站上的 HTML URL 编码参考(链接在新窗口中打开)。
仅适用于在 Tableau Cloud 中嵌入工作流
在用户函数中,用户属性函数的一个子集可以与 Tableau 已连接应用(链接在新窗口中打开)一起使用。用户属性函数 (USERATTRIBUTE 和 USERATTRIBUTEINCLUDES) 允许 Tableau 在运行时作为身份验证工作流的一部分捕获用户属性。当用户属性从 JSON Web 令牌 (JWT) 传递时,使用这些函数编写的嵌入内容可以控制和自定义向用户显示的数据。
注意:
查看嵌入 API v3(链接在新窗口中打开) 帮助以了解可能影响您的工作流程的已知问题。
用户属性函数可以包含在 Tableau Desktop 或 Tableau Cloud 中制作的内容中。
- 在 Tableau Desktop 或 Tableau Cloud 中进行制作时,无法预览包含这些函数的内容。用户属性函数将返回 NULL 或 FALSE 值。为确保用户属性函数按预期工作,我们建议您在嵌入外部应用程序后查看内容。有关嵌入包含这些用户函数的工作流的详细信息,请参见 嵌入 API v3(链接在新窗口中打开) 帮助。
Tableau 中的可用用户函数
FULLNAME( )
语法 | FULLNAME( ) |
输出 | 字符串 |
定义 | 返回当前用户的全名。 |
示例 | FULLNAME( ) 此函数返回当前已登录用户的全名,例如“Hamlin Myrer”。 [Manager] = FULLNAME( ) 如果经理“Hamlin Myrer”已登录,则仅当视图中的“Manager”字段包含“Dave Hallsten”时,此示例才会返回 TRUE。 |
说明 | 此函数检查:
用户筛选器 用作筛选器时,计算字段(例如 |
ISFULLNAME
语法 | ISFULLNAME("User Full Name") |
输出 | 布尔值 |
定义 | 如果当前用户的全名与指定的全名匹配,则返回 |
示例 | ISFULLNAME("Hamlin Myrer") |
说明 |
此函数检查:
|
ISMEMBEROF
语法 | ISMEMBEROF("Group Name") |
输出 | 布尔值或 null |
定义 | 如果当前使用 Tableau 的用户是与给定字符串匹配的组的成员,则返回 |
示例 | ISMEMBEROF('Superstars') ISMEMBEROF('domain.lan\Sales') |
说明 |
如果用户已登录 Tableau Cloud 或 Tableau Server,组成员身份由 Tableau 组确定。如果给定字符串是“All Users”,该函数将返回 TRUE
如果对用户的组成员身份进行更改,则基于组成员身份的数据更改将反映在新会话的工作簿或视图中。现有会话将反映陈旧数据。 |
ISUSERNAME
语法 | ISUSERNAME("username") |
输出 | 布尔值 |
定义 | 如果当前用户的用户名与指定的用户名匹配,则返回 TRUE ;如果不匹配,则返回 FALSE 。 |
示例 | ISUSERNAME("hmyrer") |
说明 |
此函数检查:
|
USERDOMAIN( )
语法 | USERDOMAIN( ) |
输出 | 字符串 |
定义 | 返回当前用户的域。 |
说明 | 此函数检查:
|
USERNAME( )
语法 | USERNAME( ) |
输出 | 字符串 |
定义 | 返回当前用户的用户名。 |
示例 | USERNAME( ) 此函数返回已登录用户的用户名,例如“hmyrer”。 [Manager] = USERNAME( ) 如果经理“hmyrer”已登录,则仅当视图中的“Manager”字段包含“hmyrern”时,此示例才会返回 TRUE。 |
说明 | 此函数检查:
用户筛选器 用作筛选器时,计算字段(例如 |
USERATTRIBUTE
注意:仅适用于在 Tableau Cloud 中嵌入工作流。有关详细信息,请参见身份验证和嵌入式视图(链接在新窗口中打开)。
语法 | USERATTRIBUTE('attribute_name') |
输出 | 字符串或 null |
定义 | 如果 如果 |
示例 | 假设“Region”(区域)是 JWT 中包含的用户属性,并(使用站点管理员已配置的已连接应用传递给 Tableau)。 作为工作簿作者,您可以将可视化项设置为根据指定区域筛选数据。在该筛选器中,您可以引用以下计算。 [Region] = USERATTRIBUTE("Region") 当来自西部地区的 User2 查看嵌入式可视化项时,Tableau 仅显示西部地区的相应数据。 |
说明 | 如果期望 <'attribute_name'> 返回多个值,您可以使用 USERATTRIBUTEINCLUDES 函数。 |
USERATTRIBUTEINCLUDES
注意:仅适用于在 Tableau Cloud 中嵌入工作流。有关详细信息,请参见身份验证和嵌入式视图(链接在新窗口中打开)。
语法 | USERATTRIBUTEINCLUDES('attribute_name', 'expected_value') |
输出 | 布尔值 |
定义 | 如果以下两个条件都成立,则返回
否则返回 |
示例 | 假设“Region”(区域)是 JWT 中包含的用户属性,并(使用站点管理员已配置的已连接应用传递给 Tableau)。 作为工作簿作者,您可以将可视化项设置为根据指定区域筛选数据。在该筛选器中,您可以引用以下计算。 USERATTRIBUTEINCLUDES('Region', [Region]) 如果来自西部地区的 User2 访问嵌入式可视化项,Tableau 会检查“Region”(区域)用户属性是否与“[Region]”(区域)字段值之一匹配。如果为 true,可视化项将显示适当的数据。 当来自北部地区的另一位 User3 访问相同的可视化项时,她无法看到任何数据,因为没有与“[Region]”(区域)字段值匹配的项。 |
创建用户计算
用户计算直接对您在 Tableau Server 或 Tableau Cloud 上设置的用户和组起作用。您可以创建用户计算来用作筛选器,以便用户只看到与其相关的数据。
举例来说,如果您有一个类似于如下的地图可视化项,其中显示 48 个美国州的销售额数据,则您可以创建一个用户计算以仅显示与每个用户相关的地图部分,例如区域经理的相关数据与全国经理的相关数据。(全国经理应能够看到全国的数据,而区域经理应该只能看到他们管理的区域的数据)。
全国经理登录后会看到以下可视化项:
西部区域经理登录后,将只会看到其区域的销售额:
若要执行所执行功能类似于此示例的用户函数,请执行下面的步骤。
开始之前
若要执行此示例的步骤,您必须具有 Tableau Server 或 Tableau Cloud 的访问权限。您还必须是服务器管理员或站点管理员。
步骤 1:创建用户和组
登录到 Tableau Server 或 Tableau Cloud。
在 Tableau Server 或 Tableau Cloud 中,添加以下用户:
Sadie Pawthorne
Chuck Magee
Fred Suzuki
Roxanne Rodriguez
有关详细信息,请参见 Tableau Server 帮助中的向站点添加用户(链接在新窗口中打开)。
创建一个名为“National Managers”(全国经理)的新组。
有关详细信息,请参见 Tableau Server 帮助中的创建本地组(链接在新窗口中打开)。
将自己添加到“National Managers”(全国经理)组。
有关详细信息,请参见 Tableau Server 帮助中的向组添加用户(链接在新窗口中打开)。
步骤 2:创建虚拟化项
打开 Tableau Desktop,并连接到 Tableau 附带的“Sample - Superstore”数据源。
在工作区的左下角,单击“数据源”选项卡。
在“数据源”页面上,从左侧的“连接”窗格中,将“People”(人员)工作表拖到联接区域。
单击联接图标,并选择“左侧”。
导航到新工作表。
在“数据”窗格中的“维度”下,双击“State”(州/省/市/自治区)。
将创建一个地图视图。
从“数据”窗格中的“度量”下,将“Sales”(销售额)拖到“标记”卡上的“颜色”。
在“列”功能区上,选择“经度”字段,并按住键盘上的 Ctrl 键(在 Mac 上为 Command 键)复制该字段。将副本拖到“列”功能区上原始字段的右侧。
在“标记”卡上,单击第二个(底部的)“经度”选项卡。
从“数据”窗格中,将“Region”(区域)拖到“标记”卡上的“颜色”。
右侧的地图视图将更新为新颜色。
在“标记”卡上,单击标记类型下拉列表,并选择“地图”。
在“标记”卡上,单击“颜色”,并在“不透明度”下将滑块调整到“50%”。
在“标记”卡上,单击第一个“经度”选项卡。
在“标记”卡上,单击“颜色”>“编辑颜色”,然后从调色板下拉列表中选择“灰色”。
左侧的地图视图将更新。
在“列”功能区上,右键单击右侧的“经度”字段,并选择“双轴”。
地图如以下所示:
步骤 3:创建用户计算
选择“分析”>“创建计算字段”。
在打开的计算编辑器中,执行以下操作:
将计算字段命名为“User Filter”(用户筛选器)。
输入以下公式:
[Regional Manager] = USERNAME() OR ISMEMBEROF("National Managers")
此计算检查某个人员是否包括在“Region (People)”(区域(人员))字段中,或者某个人员是否包括在“National Managers”(全国经理)组中。如果包括在其中,则该计算返回 true。
完成后,单击“确定”。
新的用户计算字段会显示在“数据”窗格中的“维度”下。就像其他字段一样,您可以在一个或多个可视化项中使用该字段。
步骤 4:将用户计算添加到“筛选器”功能区
从“数据”窗格中的“维度”下,将“User Filter”(用户筛选器)拖到“筛选器”功能区。
在打开的“筛选器”对话框中,选择“True”,然后单击“确定”。
注意:如果您未登录到 Tableau Server 或 Tableau Cloud,则看不到“True”选项。在 Tableau Desktop 中,登录到 Tableau Server 或 Tableau Cloud 以将其选定。有关详细信息,请参见登录 Tableau Server 或 Tableau Cloud(链接在新窗口中打开)。
步骤 5:测试计算
在 Tableau Desktop 中工作区的右下角,单击“筛选为用户”下拉列表,并将用户更改为“Sadie Pawthorne”。
地图将更新以仅显示美国的西部区域,因为已在“People”(人员)工作表中将 Sadie 分配到西部区域。
再次选择“筛选为用户”下拉列表,并将用户更改为“Roxanne Rodriguez”。
地图将更新以仅显示美国的中部区域,因为已在“People”(人员)工作表中将 Roxanne 分配到中部区域。
再次选择“筛选为用户”下拉列表,并将用户更改为“Chuck Magee”。
地图将更新以仅显示美国的东部区域,因为已在“People”(人员)工作表中将 Chuck 分配到东部区域。
再次选择“筛选为用户”下拉列表,并将用户更改为“Fred Suzuki”。
地图将更新以仅显示美国的南部区域,因为已在“People”(人员)工作表中将 Fred 分配到南部区域。
再次选择“筛选为用户”下拉列表,并将用户更改回您自己。
地图将更新为显示所有数据,因为您是服务器上“National Managers”(全国经理)组的成员。
当您将视图发布到 Tableau Server 或 Tableau Cloud 时,此行为将保留。未列在“National Managers”(全国经理)组中或“Sample Superstore”数据源的“People”(人员)工作表中的用户只会看到空白可视化项。