用户函数

本文介绍 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 已连接应用(链接在新窗口中打开)一起使用。用户属性函数 (USERATTRIBUTEUSERATTRIBUTEINCLUDES) 允许 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。

说明

此函数检查:

  • Tableau CloudTableau Server:已登录用户的全名
  • Tableau Desktop:用户的本地或网络全名

用户筛选器

用作筛选器时,计算字段(例如 [Username field] = FULLNAME( ))可用于创建用户筛选器,该筛选器仅显示与登录到服务器的人员相关的数据。

ISFULLNAME

语法ISFULLNAME("User Full Name")
输出布尔值
定义

如果当前用户的全名与指定的全名匹配,则返回 TRUE;如果不匹配,则返回 FALSE

示例
ISFULLNAME("Hamlin Myrer")
说明

<"User Full Name"> 参数必须是文字字符串,而非字段。

此函数检查:

  • Tableau CloudTableau Server:已登录用户的全名
  • Tableau Desktop:用户的本地或网络全名

ISMEMBEROF

语法ISMEMBEROF("Group Name")
输出布尔值或 null
定义

如果当前使用 Tableau 的用户是与给定字符串匹配的组的成员,则返回 TRUE,如果他们不是成员,则返回 FALSE,如果他们未登录,则返回 NULL

示例
ISMEMBEROF('Superstars')
ISMEMBEROF('domain.lan\Sales')
说明

<"Group Full Name"> 参数必须是文字字符串,而非字段。

如果用户已登录 Tableau CloudTableau Server,组成员身份由 Tableau 组确定。如果给定字符串是“All Users”,该函数将返回 TRUE

ISMEMBEROF( ) 函数也将接受 Active Directory 域。必须使用组名称在计算中声明 Active Directory 域。

如果对用户的组成员身份进行更改,则基于组成员身份的数据更改将反映在新会话的工作簿或视图中。现有会话将反映陈旧数据。

ISUSERNAME

语法ISUSERNAME("username")
输出布尔值
定义如果当前用户的用户名与指定的用户名匹配,则返回 TRUE;如果不匹配,则返回 FALSE
示例
ISUSERNAME("hmyrer")
说明

<"username"> 参数必须是文字字符串,而非字段。

此函数检查:

  • Tableau CloudTableau Server:已登录用户的用户名
  • Tableau Desktop:用户的本地或网络用户名

USERDOMAIN( )

语法USERDOMAIN( )
输出字符串
定义返回当前用户的域。
说明

此函数检查:

  • Tableau CloudTableau Server:登录用户的用户域
  • Tableau Desktop:如果用户在域上,则为本地域

USERNAME( )

语法USERNAME( )
输出字符串
定义返回当前用户的用户名。
示例
USERNAME( )

此函数返回已登录用户的用户名,例如“hmyrer”。

[Manager] = USERNAME( )

如果经理“hmyrer”已登录,则仅当视图中的“Manager”字段包含“hmyrern”时,此示例才会返回 TRUE。

说明

此函数检查:

  • Tableau CloudTableau Server:已登录用户的用户名
  • Tableau Desktop:用户的本地或网络用户名

用户筛选器

用作筛选器时,计算字段(例如 [Username field] = USERNAME( ))可用于创建用户筛选器,该筛选器仅显示与登录到服务器的人员相关的数据。

USERATTRIBUTE

注意:仅适用于在 Tableau Cloud 中嵌入工作流。有关详细信息,请参见身份验证和嵌入式视图(链接在新窗口中打开)

语法USERATTRIBUTE('attribute_name')
输出字符串或 null
定义

如果 <'attribute_name'> 是传递给 Tableau 的 JSON Web 令牌 (JWT) 的一部分,计算返回 <'attribute_name'> 的第一个值。

如果 <'attribute_name'> 不存在,则返回 null。

示例

假设“Region”(区域)是 JWT 中包含的用户属性,并(使用站点管理员已配置的已连接应用传递给 Tableau)。

作为工作簿作者,您可以将可视化项设置为根据指定区域筛选数据。在该筛选器中,您可以引用以下计算。

[Region] = USERATTRIBUTE("Region")

当来自西部地区的 User2 查看嵌入式可视化项时,Tableau 仅显示西部地区的相应数据。

说明如果期望 <'attribute_name'> 返回多个值,您可以使用 USERATTRIBUTEINCLUDES 函数。

USERATTRIBUTEINCLUDES

注意:仅适用于在 Tableau Cloud 中嵌入工作流。有关详细信息,请参见身份验证和嵌入式视图(链接在新窗口中打开)

语法USERATTRIBUTEINCLUDES('attribute_name', 'expected_value')
输出布尔值
定义

如果以下两个条件都成立,则返回 TRUE

  • <'attribute_name'> 是传递给 Tableau 的 JSON Web 令牌 (JWT) 的一部分
  • <'attribute_name'> 值之一等于 <'expected_value'>

否则返回 FALSE

示例

假设“Region”(区域)是 JWT 中包含的用户属性,并(使用站点管理员已配置的已连接应用传递给 Tableau)。

作为工作簿作者,您可以将可视化项设置为根据指定区域筛选数据。在该筛选器中,您可以引用以下计算。

USERATTRIBUTEINCLUDES('Region', [Region])

如果来自西部地区的 User2 访问嵌入式可视化项,Tableau 会检查“Region”(区域)用户属性是否与“[Region]”(区域)字段值之一匹配。如果为 true,可视化项将显示适当的数据。

当来自北部地区的另一位 User3 访问相同的可视化项时,她无法看到任何数据,因为没有与“[Region]”(区域)字段值匹配的项。

创建用户计算

用户计算直接对您在 Tableau Server 或 Tableau Cloud 上设置的用户和组起作用。您可以创建用户计算来用作筛选器,以便用户只看到与其相关的数据。

举例来说,如果您有一个类似于如下的地图可视化项,其中显示 48 个美国州的销售额数据,则您可以创建一个用户计算以仅显示与每个用户相关的地图部分,例如区域经理的相关数据与全国经理的相关数据。(全国经理应能够看到全国的数据,而区域经理应该只能看到他们管理的区域的数据)。

全国经理登录后会看到以下可视化项:

西部区域经理登录后,将只会看到其区域的销售额:

若要执行所执行功能类似于此示例的用户函数,请执行下面的步骤。

开始之前

若要执行此示例的步骤,您必须具有 Tableau Server 或 Tableau Cloud 的访问权限。您还必须是服务器管理员或站点管理员。

步骤 1:创建用户和组

  1. 登录到 Tableau Server 或 Tableau Cloud。

  2. 在 Tableau Server 或 Tableau Cloud 中,添加以下用户:

    • Sadie Pawthorne

    • Chuck Magee

    • Fred Suzuki

    • Roxanne Rodriguez

    有关详细信息,请参见 Tableau Server 帮助中的向站点添加用户(链接在新窗口中打开)

  3. 创建一个名为“National Managers”(全国经理)的新组。

    有关详细信息,请参见 Tableau Server 帮助中的创建本地组(链接在新窗口中打开)

  4. 将自己添加到“National Managers”(全国经理)组。

    有关详细信息,请参见 Tableau Server 帮助中的向组添加用户(链接在新窗口中打开)

步骤 2:创建虚拟化项

  1. 打开 Tableau Desktop,并连接到 Tableau 附带的“Sample - Superstore”数据源。

  2. 在工作区的左下角,单击“数据源”选项卡。

  3. 在“数据源”页面上,从左侧的“连接”窗格中,将“People”(人员)工作表拖到联接区域。

  4. 单击联接图标,并选择“左侧”

  5. 导航到新工作表。

  6. 在“数据”窗格中的“维度”下,双击“State”(州/省/市/自治区)

    将创建一个地图视图。

  7. “数据”窗格中的“度量”下,将“Sales”(销售额)拖到“标记”卡上的“颜色”

  8. 在“列”功能区上,选择“经度”字段,并按住键盘上的 Ctrl 键(在 Mac 上为 Command 键)复制该字段。将副本拖到“列”功能区上原始字段的右侧。

  9. 在“标记”卡上,单击第二个(底部的)“经度”选项卡。

  10. “数据”窗格中,将“Region”(区域)拖到“标记”卡上的“颜色”

    右侧的地图视图将更新为新颜色。

  11. 在“标记”卡上,单击标记类型下拉列表,并选择“地图”

  12. 在“标记”卡上,单击“颜色”,并在“不透明度”下将滑块调整到“50%”

  13. 在“标记”卡上,单击第一个“经度”选项卡。

  14. 在“标记”卡上,单击“颜色”>“编辑颜色”,然后从调色板下拉列表中选择“灰色”。

    左侧的地图视图将更新。

  15. 在“列”功能区上,右键单击右侧的“经度”字段,并选择“双轴”

地图如以下所示:

步骤 3:创建用户计算

  1. 选择“分析”>“创建计算字段”

  2. 在打开的计算编辑器中,执行以下操作:

    • 将计算字段命名为“User Filter”(用户筛选器)。

    • 输入以下公式:

      [Regional Manager] = USERNAME() OR ISMEMBEROF("National Managers")

      此计算检查某个人员是否包括在“Region (People)”(区域(人员))字段中,或者某个人员是否包括在“National Managers”(全国经理)组中。如果包括在其中,则该计算返回 true。

    • 完成后,单击“确定”

    新的用户计算字段会显示在“数据”窗格中的“维度”下。就像其他字段一样,您可以在一个或多个可视化项中使用该字段。

步骤 4:将用户计算添加到“筛选器”功能区

  1. 从“数据”窗格中的“维度”下,将“User Filter”(用户筛选器)拖到“筛选器”功能区。

  2. 在打开的“筛选器”对话框中,选择“True”,然后单击“确定”

    注意:如果您未登录到 Tableau Server 或 Tableau Cloud,则看不到“True”选项。在 Tableau Desktop 中,登录到 Tableau Server 或 Tableau Cloud 以将其选定。有关详细信息,请参见登录到 Tableau Server 或 Tableau Cloud(链接在新窗口中打开)

步骤 5:测试计算

  1. 在 Tableau Desktop 中工作区的右下角,单击“筛选为用户”下拉列表,并将用户更改为“Sadie Pawthorne”

    地图将更新以仅显示美国的西部区域,因为已在“People”(人员)工作表中将 Sadie 分配到西部区域。

  2. 再次选择“筛选为用户”下拉列表,并将用户更改为“Roxanne Rodriguez”。

    地图将更新以仅显示美国的中部区域,因为已在“People”(人员)工作表中将 Roxanne 分配到中部区域。

  3. 再次选择“筛选为用户”下拉列表,并将用户更改为“Chuck Magee”。

    地图将更新以仅显示美国的东部区域,因为已在“People”(人员)工作表中将 Chuck 分配到东部区域。

  4. 再次选择“筛选为用户”下拉列表,并将用户更改为“Fred Suzuki”。

    地图将更新以仅显示美国的南部区域,因为已在“People”(人员)工作表中将 Fred 分配到南部区域。

  5. 再次选择“筛选为用户”下拉列表,并将用户更改回您自己。

    地图将更新为显示所有数据,因为您是服务器上“National Managers”(全国经理)组的成员。

当您将视图发布到 Tableau Server 或 Tableau Cloud 时,此行为将保留。未列在“National Managers”(全国经理)组中或“Sample Superstore”数据源的“People”(人员)工作表中的用户只会看到空白可视化项。

另请参见

Tableau 中的函数

Tableau 函数(按类别)

Tableau 函数(按字母顺序)

感谢您的反馈!您的反馈已成功提交。谢谢!