在流程中使用 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 伺服器之間的連線。
資源
- 下載並安裝 R(連結在新視窗開啟)。下載和安裝適用於 Linux、Mac 或 Windows 的最新版本 R。
- R 實作注意事項(連結在新視窗開啟)(社群貼文)。安裝和設定適用於 Windows 之 R 和 Rserve 的連線。
- 安裝和設定 Rserve(連結在新視窗開啟):所有平台的一般安裝和組態說明。
適用於 Windows 的 Rserve(版本資訊)(連結在新視窗開啟):本主題涵蓋在 Windows 上本機安裝 Rserve 時的限制。
為 Tableau Server 設定 Rserve 伺服器
請使用以下說明設定 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 實作注意事項(連結在新視窗開啟)(社群貼文)。
建立 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 字串 |
Decimal | Double |
Int | 整數 |
Bool | Logical |
日期 | ISO_DATE 格式為「YYYY-MM-DD」的字串,具有可選的時區位移。例如,「2011-12-03+01:00」是有效日期。 |
DateTime | ISO_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 舊版中建立的任何流程設定連線。
- 選取「說明」>「設定與效能」>「管理 Analytics 擴充連線」。
在「選取 Analytics 擴充」下拉清單中,選取「Rserve」。
- 輸入您的認證:
- 連接埠 6311 是純文字 Rserve 伺服器的預設連接埠。
- 連接埠 4912 是 SSL 加密 Rserve 伺服器的預設連接埠。
- 如果伺服器需要認證,請輸入使用者名稱和密碼。
如果伺服器使用 SSL 加密,請選取「需要 SSL」核取方塊,然後按一下「自訂組態檔」連結,以指定連線的憑證。
附註:Tableau Prep Builder 未提供測試連線的方法。如果連線發生問題,當您嘗試執行流程時會顯示錯誤訊息。
將指令碼新增至流程
啟動您的 Rserve 伺服器,然後完成下列步驟:
開啟 Tableau Prep Builder,並按一下「新增連線」 按鈕。
在 Web 製作中,從首頁按一下「建立」 > 「流程」,或者從「瀏覽」頁面按一下「新建」 > 「流程」。然後按一下「連線到資料」。
從連線器清單中,選取檔案類型或託管您的資料的伺服器。如果出現提示,請輸入所需的資訊以登錄並存取資料。
按一下加號 圖示,並從內容功能表中選取「新增指令碼」。
在「指令碼」窗格中,在「連線類型」下,選取「Rserve」。
- 在「檔案名稱」部分中,按一下「瀏覽」以選取您的指令碼檔案。
輸入「函數名稱」,然後按 Enter 鍵以執行您的指令碼。