---
schema_version: "1"
id: 127c6348fe1bf93321b45e67e57e8898bb6d9fcbf6d114c164db8466156d1e1e
title: 在您的流程中使用 R (Rserve) 脚本
collection: tableau
version: current
locale: zh-cn
portal_url: https://docs.salesforce.com/tableau/current/zh-cn/prep/prep_scripts._R.md
canonical_url: https://help.tableau.com/current/prep/zh-cn/prep_scripts._R.htm
source_site: help.tableau.com
content_type: documentation
content_hash: de7c5920909a18730449821e9fc7bca3dbfc2012b7622dcb77fe1ad0799233ee
description: Use R (Rserve) scripts in a Tableau Prep flow.
---
[跳转到主要内容](#main-content)

# 在您的流程中使用 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](#server_config)。

## 先决条件

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

### 资源

- [下载并安装 R](http://cran.wustl.edu/)：下载并安装适用于 Linux、Mac 或 Windows 的最新版本的 R。
- [R 实施说明](https://community.tableau.com/s/question/0D54T00000G54v3SAB/r-implementation-notes)（社区帖子）。针对 Windows 安装并配置与 R 和 Rserve 的连接。
- [安装并配置 Rserve](http://www.rforge.net/Rserve/doc.html)：适用于所有平台的常规安装和配置说明。
    - [Rserve for Windows（版本说明）](https://www.rforge.net/Rserve/rserve-win.html)：本主题讨论在 Windows 上以本地方式安装 Rserve 时的限制。

### 针对 Tableau Server 配置 Rserve Server

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

- **版本 2019.3 及更高版本**：您可以在 Tableau Server 中运行包含脚本步骤的已发布流程。
- **版本 2020.4.1 及更高版本**：您可以在 Tableau Server 中创建、编辑和运行包含脚本步骤的流程。
- **Tableau Cloud**：当前不支持创建或运行包含脚本步骤的流程。

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 实施说明](https://community.tableau.com/s/question/0D54T00000G54v3SAB/r-implementation-notes)（社区帖子）中的“高级 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))
 }

支持以下数据类型：

<table style="width: 100%;" class="simple-table"><colgroup><col><col></colgroup><tbody><tr><th>Tableau Prep Builder 中的数据类型</th><th>R 中的数据类型</th></tr><tr><td>字符串</td><td>标准 UTF-8 字符串</td></tr><tr><td>十进制</td><td>双精度</td></tr><tr><td>整数</td><td>整数</td></tr><tr><td>布尔值</td><td>逻辑</td></tr><tr><td>日期</td><td>ISO_DATE 格式“YYYY-MM-DD”的字符串，带有可选区域偏移。例如，“2011-12-03+01:00”是有效日期。</td></tr><tr><td>日期时间</td><td>ISO_DATE_TIME 格式“YYYY-MM-DDT:HH:mm:ss”的字符串，带有可选区域偏移。例如，“2011-12-03T10:15:30+01:00”是有效日期。</td></tr></tbody></table>

**注意：**日期和日期时间必须始终以有效字符串形式返回。不支持将 R 中的本机日期（日期时间）类型作为返回值，但可在脚本中使用。

如果要返回不同于输入的字段，则需要在脚本中包含定义输出和数据类型的 getOutputSchema 函数。否则，输出将使用输入数据中的字段，这些字段是从流程中脚本步骤之前的步骤中获取的。

在 getOutputSchema 中指定字段的数据类型时，请使用以下语法：

<table style="width: 100%;" class="simple-table"><colgroup><col><col></colgroup><tbody><tr><th>R 中的函数</th><th>生成的数据类型</th></tr><tr><td>prep_string ()</td><td>字符串</td></tr><tr><td>prep_decimal ()</td><td>十进制</td></tr><tr><td>prep_int ()</td><td>整数</td></tr><tr><td>prep_bool ()</td><td>布尔值</td></tr><tr><td>prep_date ()</td><td>日期</td></tr><tr><td>prep_datetime ()</td><td>日期时间</td></tr></tbody></table>

以下示例显示 postal\_cluster 脚本的 getOutputSchema 函数：

getOutputSchema <- function() {      
  return (data.frame (
    Latitude = prep\_decimal (),
    Longitude = prep\_decimal (),
    Cluster = prep\_int ()));
}

## 连接到您的 Rserve 服务器

> [!IMPORTANT]
> 
> **重要信息：**从 Tableau Prep Builder 版本 2020.3.3 开始，通过顶部“帮助”菜单配置一次服务器连接，而不是通过在“脚本”步骤中单击“连接到 Rserve 服务器”并输入连接详细信息，设置每个流程的连接。对于在版本 2020.3.3 中打开的 Tableau Prep Builder 旧版本中创建的任何流程，您需要使用此新菜单重新配置连接。

1. 选择“帮助”\>“设置和性能”\>“管理分析扩展程序连接”。
2. 在“选择分析扩展程序”下拉列表中，选择“Rserve”。
    
    ![分析扩展程序连接设置登录表单。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_scripts_r_signin.png)
3. 输入您的凭据：
    - 端口 6311 是纯文本 Rserve 服务器的默认端口。
    - 端口 4912 是 SSL 加密 Rserve 服务器的默认端口。
    - 如果服务器需要凭据，请输入用户名和密码。
    - 如果服务器使用 SSL 加密，请选中“需要 SSL”复选框，然后单击“自定义配置文件”链接，为连接指定证书。
        
        **注意：**Tableau Prep Builder 未提供测试连接的方式。如果连接存在问题，则会在您尝试并运行流程时显示一条错误消息。

## 向流程中添加脚本

启动 Rserve 服务器，然后完成以下步骤：

1. 打开 Tableau Prep Builder 并单击“添加连接”![用于添加数据连接的按钮。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_addconnection.png) 按钮。
    
    在 Web 制作中，从“主页”中单击“创建”\>“流程”，或从“浏览”页面中单击“新建”\>“流程”。然后单击“连接到数据”。
2. 从连接器列表中，选择文件类型或托管您的数据的服务器。如果出现提示，请输入所需的信息以登录并访问数据。
3. 单击加号 ![带有加号的按钮。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_addicon.png) 图标，并从上下文菜单中选择“添加脚本”。
    
    ![向 Tableau Prep 添加脚本。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_script_add.png)
4. 在“脚本”窗格中的“连接类型”下，选择“Rserve”。
    
    ![用于设置连接类型设置的脚本。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_script_script_pane.png)
5. 在“文件名”部分，单击“浏览”选择您的脚本文件。
6. 输入“函数名称”，然后按 Enter 运行脚本。
    
    ![用于设置连接类型设置的脚本。](/tableau/current/zh-cn/prep/zh-cn/Img/prep_script_pane2.png)