Tableau Prep and R Integration
Tableau PrepとRが連携できると聞いて、ドキュメントを探したのですが、上手く見つからなかったのでベータ版のテストスクリプトを参考に設定してみました。
特に実用性のあるテスト内容ではないですが、動作確認用です。
事前準備
- Tableau Prep 2019.3以上をインストール
- Rをインストール(RStudioをインストールしておいた方が良い)
- R or RStudioでRServeライブラリをダウンロード
- R or RStudioでRServeを起動
RServeの起動
事前準備3までが終わっている前提で、下記のコマンドでRは外部からの受付を可能にします。
library("Rserve") Rserve()
シナリオ
数値データの(X列とY列)があるCSVファイル(test.csv)をPrepで読み込み、RにてX列とY列を加算してZ列を含んだデータフレームをPrepに戻す処理である、
Rスクリプトを書いておく。
シナリオを満たすために、Rのコマンドファイル(futest.R)を作っておきます。
ここでは、こんなコマンドを書いてます。
getOutputSchema <- function() { return (data.frame( x = prep_int(), y = prep_int(), z = prep_int())); } plus <- function(df){ out <- df$x + df$y return(data.frame(x=df$x, y=df$y, z=out)) }
getOutputSchemaはRからの出力のスキーマとしてdata.frameをx, y, zを全てint型で返す感じです。
また、plusはprepからデータをdfとしてRで読み込み、xとyの列を足したものをoutというベクトルで持ち、データフレームでx, y, zで返す感じです。
PrepでRスクリプトを読み込む。
Prepでtest.csvファイルを読み込み、+ボタンから「スクリプトの追加」を押します。
何もしていない状態なので、戻り値としてのxとyは何も見えない状態。
Rserveサーバに接続ボタンを押して、サーバーやポートの情報を記述して、サインインのボタンを押します。
Tableau Desktopのように接続テストボタンがないので、Tableau Desktopでテスト接続をしておくのおすすめです。
「参照」ボタンからfutest.Rファイルを選択して、関数にplusと記述します。
すると計算がいきなり走り、z列とともに計算結果が表示されます。