データサイエンス

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