在流程中使用 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 伺服器

必要條件

若要在流程中包含 R 指令碼,請安裝並設定與 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 實作注意事項(連結在新視窗開啟)(社群貼文)。

建立 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 字串
DecimalDouble
Int整數
BoolLogical
日期ISO_DATE 格式為「YYYY-MM-DD」的字串,具有可選的時區位移。例如,「2011-12-03+01:00」是有效日期。
DateTimeISO_DATE_TIME 格式為「YYYY-MM-DDT:HH:mm:ss」的字串,具有可選的時區位移。例如,「2011-12-03T10:15:30+01:00」是有效日期。

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

如果要傳回的欄位與輸入的欄位不同,您需要在定義輸出和資料類型的指令碼中,包含 getOutputSchema 函數。否則,輸出將會使用來自輸入資料的欄位,這些欄位取自於流程中指令碼步驟之前的步驟。

在 getOutputSchema 中為欄位指定資料類型時,請使用以下語法:

R 中的函數產生的資料類型
prep_string ()字串
prep_decimal ()Decimal
prep_int ()整數
prep_bool ()布林值
prep_date ()日期
prep_datetime ()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. 選取「說明」>「設定與效能」>「管理 Analytics 擴充連線」
  2. 「選取 Analytics 擴充」下拉清單中,選取「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 鍵以執行您的指令碼。

感謝您的意見反應!已成功提交您的意見回饋。謝謝!