在您的流程中使用 R (Rserve) 脚本
免责声明:本主题包括有关第三方产品的信息。请注意,尽管我们努力保持第三方内容的准确性,但我们在此处提供的信息可能会在 R 和 Rserve 发生变化时更改,恕不另行通知。有关最新信息,请查阅 R 和 Rserve 文档及支持。
R 是一种用于统计计算和图形的开源软件编程语言和软件环境。为了扩展 Tableau Prep Builder 的功能,您可以用 R 创建脚本以在通过 Rserve 服务器运行的流程中使用,生成可在流程中进一步处理的输出。
例如,您可能想要使用 R 语言脚本向流程中已有的数据中添加统计建模数据或预测数据,然后使用 Tableau Prep Builder 的功能清理生成的数据集以进行分析。
若要在流程中包括 R 脚本,您需要在 Tableau Prep Builder 和 Rserve 服务器之间配置连接。然后,您可以使用 R 脚本,通过 R 表达式将支持的函数应用于流程中的数据。输入配置详细信息并将 Tableau Prep Builder 指向要使用的文件和函数后,系统会将数据安全地传递到 Rserve 服务器,应用表达式,并以可根据需要清理或输出的表 (R data.frame) 的形式返回结果。
只要配置了与 Rserve 服务器的连接,就可以在 Tableau Server 中运行包含脚本步骤的流程。当前不支持在 Tableau Cloud 中运行包含脚本步骤的流程。若要配置 Tableau Server,请参见针对 Tableau Server 配置 Rserve Server。
先决条件
若要在流程中包括 R 脚本步骤,请安装 R 并配置与 Rserve 服务器的连接。
资源
- 下载并安装 R(链接在新窗口中打开):下载并安装适用于 Linux、Mac 或 Windows 的最新版本的 R。
- R 实施说明(链接在新窗口中打开)(社区帖子)。针对 Windows 安装并配置与 R 和 Rserve 的连接。
- 安装并配置 Rserve(链接在新窗口中打开):适用于所有平台的常规安装和配置说明。
Rserve for Windows(版本说明)(链接在新窗口中打开):本主题讨论在 Windows 上以本地方式安装 Rserve 时的限制。
针对 Tableau Server 配置 Rserve Server
使用以下说明配置 Rserve 服务器和 Tableau Server 之间的连接。
- 版本 2019.3 及更高版本:您可以在 Tableau Server 中运行包含脚本步骤的已发布流程。
- 版本 2020.4.1 及更高版本:您可以在 Tableau Server 中创建、编辑和运行包含脚本步骤的流程。
- Tableau Cloud:当前不支持创建或运行包含脚本步骤的流程。
- 打开 TSM 命令行。
输入以下命令以设置主机地址、端口值和连接超时:
tsm security maestro-rserve-ssl enable --connection-type {maestro-rserve-secure/maestro-rserve} --rserve-host <Rserve IP address or host name> --rserve-port <Rserve port> --rserve-username <Rserve username> --rserve-password <Rserve password> --rserve-connect-timeout-ms <RServe connect timeout>
- 选择
{maestro-rserve-secure}
以启用安全连接,或选择{maestro-rserve}
以启用不安全的连接。 - 如果选择
{maestro-rserve-secure}
,请在命令行中指定证书文件-cf<certificate file path>
。 - 以毫秒为单位指定
--rserve-connect-timeout-ms <RServe connect timeout>
。例如,--rserve-connect-timeout-ms 900000
。
- 选择
若要禁用 Rserve 连接,请输入以下命令
tsm security maestro-rserve-ssl disable
其他 Rserve 配置(可选)
您可以创建一个名为 Rserv.cfg 的文件以设置默认配置值来自定义 Rserve,并将其放在 /etc/Rserve.conf
安装位置中。为了提高 Rserve 服务器和 Tableau Prep Builder 的稳定性,您可以向 Rserve 配置中添加其他值。启动 Rserve 时,您可以引用此文件来应用配置选项。例如:
- Windows:
Rserve(args="--RS-conf C:\\folder\\Rserv.cfg")
- MacOS 和 Linux:
Rserve(args=" --no-save --RS-conf ~/Documents/Rserv.cfg")
下面的示例演示了一些可包括在 Rserve.conf
配置文件中的其他选项:
# If your data includes characters other than ASCII, make it explicit that data should be UTF8 encoded. encoding utf8 # Disable interactive behavior for Rserve or Tableau Prep Builder will stall when trying to run the script as it waits for an input response. interactive no
有关设置 Rserve.conf 文件的信息,请参见 R 实施说明(链接在新窗口中打开)(社区帖子)中的“高级 Rserve 配置”部分。
创建 R 脚本
创建脚本时,请包括一个指定数据框架作为函数参数的函数。这将从 Tableau Prep Builder 中调用您的数据。您还需要使用支持的数据类型在数据框架中返回结果。
例如:
postal_cluster <- function(df) { out <- kmeans(cbind(df$Latitude, df$Longitude), 3, iter.max=10) return(data.frame(Latitude=df$Latitude, Longitude=df$Longitude, Cluster=out$cluster)) }
支持以下数据类型:
Tableau Prep Builder 中的数据类型 | R 中的数据类型 |
---|---|
字符串 | 标准 UTF-8 字符串 |
十进制 | 双精度 |
整数 | 整数 |
布尔值 | 逻辑 |
日期 | ISO_DATE 格式“YYYY-MM-DD”的字符串,带有可选区域偏移。例如,“2011-12-03+01:00”是有效日期。 |
日期时间 | ISO_DATE_TIME 格式“YYYY-MM-DDT:HH:mm:ss”的字符串,带有可选区域偏移。例如,“2011-12-03T10:15:30+01:00”是有效日期。 |
注意:日期和日期时间必须始终以有效字符串形式返回。不支持将 R 中的本机日期(日期时间)类型作为返回值,但可在脚本中使用。
如果要返回不同于输入的字段,则需要在脚本中包含定义输出和数据类型的 getOutputSchema 函数。否则,输出将使用输入数据中的字段,这些字段是从流程中脚本步骤之前的步骤中获取的。
在 getOutputSchema 中指定字段的数据类型时,请使用以下语法:
R 中的函数 | 生成的数据类型 |
---|---|
prep_string () | 字符串 |
prep_decimal () | 十进制 |
prep_int () | 整数 |
prep_bool () | 布尔值 |
prep_date () | 日期 |
prep_datetime () | 日期时间 |
以下示例显示 postal_cluster 脚本的 getOutputSchema 函数:
getOutputSchema <- function() { return (data.frame ( Latitude = prep_decimal (), Longitude = prep_decimal (), Cluster = prep_int ())); }
连接到您的 Rserve 服务器
重要信息:从 Tableau Prep Builder 版本 2020.3.3 开始,通过顶部“帮助”菜单配置一次服务器连接,而不是通过在“脚本”步骤中单击“连接到 Rserve 服务器”并输入连接详细信息,设置每个流程的连接。对于在版本 2020.3.3 中打开的 Tableau Prep Builder 旧版本中创建的任何流程,您需要使用此新菜单重新配置连接。
- 选择“帮助”>“设置和性能”>“管理分析扩展程序连接”。
在“选择分析扩展程序”下拉列表中,选择“Rserve”。
- 输入您的凭据:
- 端口 6311 是纯文本 Rserve 服务器的默认端口。
- 端口 4912 是 SSL 加密 Rserve 服务器的默认端口。
- 如果服务器需要凭据,请输入用户名和密码。
如果服务器使用 SSL 加密,请选中“需要 SSL”复选框,然后单击“自定义配置文件”链接,为连接指定证书。
注意:Tableau Prep Builder 未提供测试连接的方式。如果连接存在问题,则会在您尝试并运行流程时显示一条错误消息。
向流程中添加脚本
启动 Rserve 服务器,然后完成以下步骤:
打开 Tableau Prep Builder 并单击“添加连接” 按钮。
在 Web 制作中,从“主页”中单击“创建”>“流程”,或从“浏览”页面中单击“新建”>“流程”。然后单击“连接到数据”。
从连接器列表中,选择文件类型或托管您的数据的服务器。如果出现提示,请输入所需的信息以登录并访问数据。
单击加号 图标,并从上下文菜单中选择“添加脚本”。
在“脚本”窗格中的“连接类型”下,选择“Rserve”。
- 在“文件名”部分,单击“浏览”选择您的脚本文件。
输入“函数名称”,然后按 Enter 运行脚本。