---
schema_version: "1"
id: 98d1c4b9e1547306308f3906ee85b96c99debbe2989ba0615ae79890f1ac3ba9
title: 在流程中使用 R (Rserve) 指令碼
collection: tableau
version: current
locale: zh-tw
portal_url: https://docs.salesforce.com/tableau/current/zh-tw/prep/prep_scripts._R.md
canonical_url: https://help.tableau.com/current/prep/zh-tw/prep_scripts._R.htm
source_site: help.tableau.com
content_type: documentation
content_hash: 5c0fd25dc80c4d0735bbe3950379eb49d6dddd1d75e5d983610386668d584cc4
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_config)。

## 必要條件

若要在流程中包含 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)：所有平台的一般安裝和組態說明。
    - [適用於 Windows 的 Rserve（版本資訊）](https://www.rforge.net/Rserve/rserve-win.html)：本主題涵蓋在 Windows 上本機安裝 Rserve 時的限制。

### 為 Tableau Server 設定 Rserve 伺服器

請使用以下說明設定 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)（社群貼文）。

## 建立 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>Decimal</td><td>Double</td></tr><tr><td>Int</td><td>整數</td></tr><tr><td>Bool</td><td>Logical</td></tr><tr><td>日期</td><td>ISO_DATE 格式為「YYYY-MM-DD」的字串，具有可選的時區位移。例如，「2011-12-03+01:00」是有效日期。</td></tr><tr><td>DateTime</td><td>ISO_DATE_TIME 格式為「YYYY-MM-DDT:HH:mm:ss」的字串，具有可選的時區位移。例如，「2011-12-03T10:15:30+01:00」是有效日期。</td></tr></tbody></table>

**附註**：Date 和 DateTime 必須一律以有效字串傳回。R 中的原生日期 (DateTime) 類型不支持作為傳回值，但可以在指令碼中使用。

如果要傳回的欄位與輸入的欄位不同，您需要在定義輸出和資料類型的指令碼中，包含 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>Decimal</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>DateTime</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. 選取「說明」\>「設定與效能」\>「管理 Analytics 擴充連線」。
2. 在「選取 Analytics 擴充」下拉清單中，選取「Rserve」。
    
    ![分析擴充功能連線設定登入表單。](/tableau/current/zh-tw/prep/zh-tw/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-tw/prep/zh-tw/Img/prep_addconnection.png) 按鈕。
    
    在 Web 製作中，從首頁按一下「建立」 > 「流程」，或者從「瀏覽」頁面按一下「新建」 > 「流程」。然後按一下「連線到資料」。
2. 從連線器清單中，選取檔案類型或託管您的資料的伺服器。如果出現提示，請輸入所需的資訊以登錄並存取資料。
3. 按一下加號 ![帶有加號的按鈕。](/tableau/current/zh-tw/prep/zh-tw/Img/prep_addicon.png) 圖示，並從內容功能表中選取「新增指令碼」。
    
    ![將指令碼新增至 Tableau Prep。](/tableau/current/zh-tw/prep/zh-tw/Img/prep_script_add.png)
4. 在「指令碼」窗格中，在「連線類型」下，選取「Rserve」。
    
    ![設定連線類型設定的指令碼。](/tableau/current/zh-tw/prep/zh-tw/Img/prep_script_script_pane.png)
5. 在「檔案名稱」部分中，按一下「瀏覽」以選取您的指令碼檔案。
6. 輸入「函數名稱」，然後按 Enter 鍵以執行您的指令碼。
    
    ![設定連線類型設定的指令碼。](/tableau/current/zh-tw/prep/zh-tw/Img/prep_script_pane2.png)