在您的流程中使用 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 Online 中运行包含脚本步骤的流程。若要配置 Tableau Server,请参见针对 Tableau Server 配置 Rserve Server

先决条件

若要在流程中包括 R 脚本步骤,请安装 R 并配置与 Rserve 服务器的连接。

资源

针对 Tableau Server 配置 Rserve Server

使用以下说明配置 Rserve 服务器和 Tableau Server 之间的连接。

  • 版本 2019.3 及更高版本:您可以在 Tableau Server 中运行包含脚本步骤的已发布流程。
  • 版本 2020.4.1 及更高版本:您可以在 Tableau Server 中创建、编辑和运行包含脚本步骤的流程。
  • Tableau Online:当前不支持创建或运行包含脚本步骤的流程。
  1. 打开 TSM 命令行。
  2. 输入以下命令以设置主机地址、端口值和连接超时:

    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
  3. 若要禁用 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 旧版本中创建的任何流程,您需要使用此新菜单重新配置连接。

  1. 选择“帮助”>“设置和性能”>“管理分析扩展程序连接”
  2. “选择分析扩展程序”下拉列表中,选择“Rserve”

  3. 输入您的凭据:
    • 端口 6311 是纯文本 Rserve 服务器的默认端口。
    • 端口 4912 是 SSL 加密 Rserve 服务器的默认端口。
    • 如果服务器需要凭据,请输入用户名和密码。
    • 如果服务器使用 SSL 加密,请选中“需要 SSL”复选框,然后单击“自定义配置文件”链接,为连接指定证书。

      注意:Tableau Prep Builder 未提供测试连接的方式。如果连接存在问题,则会在您尝试并运行流程时显示一条错误消息。

向流程中添加脚本

启动 Rserve 服务器,然后完成以下步骤:

  1. 打开 Tableau Prep Builder 并单击“添加连接” 按钮。

    在 Web 制作中,从“主页”中单击“创建”>“流程”,或从“浏览”页面中单击“新建”>“流程”。然后单击“连接到数据”

  2. 从连接器列表中,选择文件类型或托管您的数据的服务器。如果出现提示,请输入所需的信息以登录并访问数据。

  3. 单击加号 图标,并从上下文菜单中选择“添加脚本”

  4. 在“脚本”窗格中的“连接类型”下,选择“Rserve”

  5. “文件名”部分,单击“浏览”选择您的脚本文件。
  6. 输入“函数名称”,然后按 Enter 运行脚本。

感谢您的反馈!