Tableau + R 連携を使いこなそう! その1 - 簡単な足し算に挑戦

2017/02/16 23:16 Shingo 0 Comments









皆さんこんにちは bashii と申します。





今回、初めてこちらのブログに投稿させていただきます。
よろしくお願いします。

データサイエンスが注目される昨今、RとTableau連携を使いこなしたい! と考えてる方もたくさんいらっしゃると思います。

TableauRを連携させる意味や、Rをセットアップして実際にTableauから利用するところまでインストラクションについてはこちらのブログで紹介されているので、是非最初にこちらをご覧になってください。

TableauでRをつかってみよう!(準備編)

TableauでRをつかってみよう!(実践編)

Tableau Rを連携をやってみて、Rserve(Rサーバー)との接続はできた! サンプルも動いた!というところまでは簡単にできるかと思います。さて、次のステップとして実際にRのコーディングを含む計算フィールドを作成することになりますが、その際に知っておくべきポイントがいくつかありますので、今回はそのあたりをご紹介していきたいと思います。
実際にRの気持ちになって考えられるよう、Rコンソールからコマンドを打ちながら理解していきましょう。 

まず、Tableau Rを連携の基本的な仕組みについて図に表してみました。
TableauとRは以下のように連携して処理を行います。

1.TableauからRサーバーに入力データを送る
2.事前に書かれたRスクリプトにしたがってRサーバーに計算をさせる
3.TableauRサーバーから計算された結果を受け取って新しいメジャー(またはディメンジョン)とする
まずは、簡単なサンプルでTableauRのデータ入出力の仕組みを解説してみます。
Rに「足し算をさせるだけ」のサンプルです。

下のようなデータを読み込みます。


TableauからRのスクリプトを実行するには、SCRIPT_INT関数 (Rからの出力が整数型の場合)や、SCRIPT_REAL関数(Rからの出力結果が実数型の場合) を使って計算フィールドを作成します。 
さて、VALUE1とVALUE2を足すための計算フィールドを作ってみましょう。

整数の足し算なので SCRIPT_INT() 関数を使って "R_ADD_VALUE"という計算フィールドを以下のように作成します。

-------  計算式"R_ADD_VALUE"の中身 -------
















VALUE1 と VALUE2 を受け取り、それぞれ.arg1 と.arg2 に代入し、足し算した結果を返します。


結果は下の図の右端ようになります。
Tableauからの入力はRに対してベクトル(ザックリ言うと、データをいくつかまとめて並べたもの)として渡されます。

同じことを今度はRの気持ちになって、Rのコンソールからも実行してみましょう。

Rでベクトルを作成するには c(10,20,30,40,50) のように書きます。

実際にRコンソールから以下を実行してみましょう。



ここで、ポイントとして、SCRIPT_* の引数に列を指定するときは、何らかの集計を掛けるということです。この理由としてはSCRIPT_* が内部で表計算を用いていることに起因するのですが、とりあえず SUM() か ATTR()を付けてあげないといけません。入力がユニークな行であればSUM()でもATTR()でも実は結果は同じになります。

ここで、ID列を取り去ってみると、NAMESUM合計された値がRに渡されていることがわかります。
これは、ドリルダウン・アップをしたときに分析の切り口に応じてRに渡される入力値も動的に変わるので有用です。

以上、ご参考になれば幸いです。

※ ワークブックのダウンロードはこちらからどうぞ。(文末にワークブックの添付があります)
Tableau Community Japan: 
Tableau + R 連携で知っておきたいこと
https://community.tableau.com/docs/DOC-10017

※ 尚、Tableau+R連携におけるRのコードスクリプティングについては、サポートの範囲外となりますので、ご了承ください!!






0 コメント: