Tableau PrepとR連携

Tableau Prep and R Integration

Tableau PrepとRが連携できると聞いて、ドキュメントを探したのですが、上手く見つからなかったのでベータ版のテストスクリプトを参考に設定してみました 特に実用性のあるテスト内容ではないですが、動作確認用です

事前準備

  1. Tableau Prep 2019.3以上をインストール
  2. Rをインストール(RStudioをインストールしておいた方が良い)
  3. R or RStudioでRServeライブラリをダウンロード
  4. R or RStudioでRServeを起動

RServeの起動

事前準備3までが終わっている前提で、下記のコマンドでRは外部からの受付を可能にします

library("Rserve")
Rserve()

シナリオ

数値データの(X列とY列)があるCSVファイル(test.csv)をPrepで読み込み、RにてX列とY列を加算してZ列を含んだデータフレームをPrepに戻す処理

f:id:gri-blog:20190919130250j:plain

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スクリプトを読み込む

f:id:gri-blog:20190919130943j:plain

Prepでtest.csvファイルを読み込み、+ボタンから「スクリプトの追加」を押します

f:id:gri-blog:20190919131108j:plain

何もしていない状態なので、戻り値としてのxとyは何も見えない状態

f:id:gri-blog:20190919131307j:plain

Rserveサーバに接続ボタンを押して、サーバーやポートの情報を記述して、サインインのボタンを押します Tableau Desktopのように接続テストボタンがないので、Tableau Desktopでテスト接続をしておくのおすすめです

f:id:gri-blog:20190919131551j:plain

「参照」ボタンからfutest.Rファイルを選択して、関数にplusと記述します すると計算がいきなり走り、z列とともに計算結果が表示されます

Tableau Prep and Python連携の例

lovedata.main.jp

www.tableau.com

vizpainter.com