表扩展程序
表扩展程序允许您使用分析扩展程序脚本创建数据表。您可以编写一个自定义 TabPy 或 Rserve 脚本,并可以选择添加一个或多个输入表。Tableau Cloud、Tableau Server 和 Tableau Desktop 支持表扩展程序。本文档重点介绍 Tableau Cloud。
注意:与实时连接类似,每次打开工作簿或刷新数据源时,表扩展程序都会刷新。
好处
表扩展程序对新用户和有经验的用户都有以下好处。
轻松地将脚本或高级功能集成到 Tableau 中
轻松地将 Tableau 数据连接中的数据作为输入拖到脚本中
低代码编辑器使向数据源添加代码变得容易
- 与数据指南和“数据解释”功能集成
与 TabPy、Rserve 和其他分析扩展程序集成
- 结果可用于构建仪表板或可视化项
先决条件
必须先完成以下列表,然后才能使用表扩展程序。
- 在 Desktop 或 Web 制作中打开数据源。
- 配置分析扩展程序
- 有关配置分析扩展程序连接的步骤,请参见使用分析扩展程序传递表达式。
创建表扩展程序
若要创建表扩展程序,请完成以下步骤。
- 打开已发布工作簿。
- 打开数据源或创建数据源。
- 在“连接”下,选择“新建表扩展程序”。
- 将它拖到数据模型中。
(可选)将表从数据连接拖到表扩展程序窗格中,以用作分析扩展程序脚本或函数的输入。
默认情况下,来自 Tableau 的数据被传递到分析扩展程序并定义为
variable _arg1
,一个类似字典的结构,例如:{‘colum_name’: [1,2,3], ‘column_name_2’: [3,4,5]
Python 示例:可以使用以下方法将输入数据转换为 pandas 数据框。
import pandas as pddf = (pd.DataFrame(_arg1))
使用 RServe 时,输入数据被定义为变量 .arg1,数据类型是列表的命名列表。
对于受支持的关系数据源,您可以使用自定义 SQL 作为表扩展程序的输入。在自定义 SQL 查询中使用参数时,更改参数会导致查询重新运行并重新计算脚本。这将创建一个路径来动态更新仪表板中的参数,并筛选或以其他方式将值传递给表扩展程序脚本。
在“脚本”区域中,输入您的脚本或函数调用。该脚本必须返回字典或列表的列表,本质上是一个 JSON 对象。RServe 的脚本必须返回一个 data.frame 或命名列表的列表,而 Python 的脚本必须返回一个字典。
Python 示例:我们使用以下显式 return 命令。
return df.to_dict(orient='list')
- 选择“应用”运行脚本。
(可选)如果您将表扩展程序与数据模型中的另一个表相关联,请定义每个表中至少一个字段之间的关系。如果字段具有相同的名称,此操作可能会自动进行。
- 选择“立即更新”,结果将显示在“输出表”选项卡中。
注意:如果在 TabPy 中禁用了 TABPY_EVALUATE_ENABLE,则表扩展程序不支持直接调用 TabPy 端点。
注意:如果您没有在数据模型中定义与表的关系,则“输入表”选项卡为空,并将显示消息“数据预览不可用”。
- (可选)在“名称”字段中,输入表扩展程序的唯一名称。
- 转到“工作表”选项卡以开始探索和可视化数据。来自表扩展程序的结果将像 Tableau 中从平面文件或关系源查询的任何其他数据一样运行。
- 发布工作簿以共享。发布目标(Server 或 Tableau Cloud)必须启用和配置适当类型的分析扩展程序。
故障排除提示:如果执行脚本时出现问题,来自分析扩展程序的错误将显示在 Tableau 错误消息中。如果您的表扩展程序遇到错误,请确保所有代码和格式正确,并尝试使用位于“保存”按钮旁边的圆形“刷新数据源”按钮,或再次单击“应用”。
表扩展程序与分析扩展程序
虽然这些产品中的一些并不相关,但表扩展程序和分析扩展程序有几个共同的功能。表扩展程序功能依赖于与分析扩展程序的连接才能工作。让我们来分析一下每个功能。
仪表板扩展程序
仪表板扩展程序允许使用仪表板扩展 SDK 将自定义 Web 应用程序添加到仪表板,但是,此扩展程序类型与表扩展程序无关。
表扩展程序
表扩展程序功能允许您在数据源中创建一个表,该表可以将数据和脚本发送到您的分析扩展程序,并返回一个任意形状的完整表作为结果。返回的结果在“数据源”选项卡的数据模型中显示为表,并在工作簿中显示为度量和维度。
分析扩展程序
分析扩展程序功能允许您使用编程语言(如 Python、外部工具和外部平台)扩展 Tableau 计算。创建与分析扩展程序的连接后,您可以通过称为 SCRIPT_X 或 MODEL_EXTERNAL_X 的计算字段与外部服务器通信,其中 X 是预期返回值的数据类型。有关详细信息,请参见使用分析扩展程序传递表达式。