表拡張機能
表拡張機能はTableau 2022.3から追加された、
RやPython等で加工・分析したデータを、Tableauのデータ表として取り込むことのできる機能です。
この機能を使えば、
Tableauでは面倒な集計をRで行ったり、
Rで実行した分析結果をTableauでいい感じに可視化したりが簡単にできるはず!
というわけで、Rで表拡張機能を使う方法をまとめました。
※普段からRを使っている人向けの内容のため、Rのダウンロード方法やRコードの解説は割愛します。
TableauをRサーバーに接続する
まず、TableauでRを使えるようにセッティングをします。
手順は以下の通りです。
1. Rserveパッケージをインストール
R(Rstudioでも可)を起動し、以下のコードを実行。
install.packages("Rserve"); library(Rserve); Rserve()
2. Tableauを起動し、「分析の拡張機能接続の管理」を選択
ヘルプ > 設定とパフォーマンス > 分析の拡張機能接続の管理 で選択します。
3. 接続タイプでRserveを選択
4. ホスト名、ポートを入力し接続
ホスト名:localhost、ポート:6311と入力。
テスト接続を押してみて、「分析の拡張機能に正常に接続されました」と表示されればOK。
これで準備は完了です。
表拡張機能を使用する
今回は、表拡張機能を使ってサンプルスーパーストアのデータを加工してみようと思います。
サンプルスーパーストアのデータですが、日本語だと文字コード関係のエラーが出てしまったので、
英語版(こちらからダウンロードしました)を使用しています。
(文字コード問題、解決策をご存じの方がいらっしゃれば是非教えていただきたいです…)
1. データをTableauに接続
まずはいつも通りデータに接続します。
2. 「新しいテーブル拡張機能」をドラッグ&ドロップ
3. シートをドラッグ&ドロップ
4. スクリプトを入力
右側のスクリプトボックスの中にRのスクリプトを入力し、適用をクリックします。
今回はCategory・CityごとにSalesの和を求める集計をしてみました。
使用したスクリプトは以下の通りです。
library(dplyr)
# 元データ(.arg1)をデータフレーム型に変換
df <- data.frame(as.list(.arg1))
# Category、CityごとにSalesの和を計算
df_city_sales <- df %>%
group_by(Category, City) %>%
summarise(city_sales_sum = sum(Sales))
# 元データと結合
df_join <- df %>%
select(Order.ID, Order.Date, City, Category, Sales) %>%
left_join(df_city_sales, by = c("Category","City"))
# Tableauに取り込みたいデータを表示
df_join
Tableauからの入力データは .arg1 という名前で格納されています。
この.arg1ですが、どうやらpairlistというデータ型になっているらしく、
一度list型に直してから、データフレーム型に変換する必要があります。
5. データ確認
「出力テーブル」を確認すると、作成したテーブルを確認できる。
作成したテーブルは通常のデータソースと同様にVizに使用可能。
(ちゃんとTableau側で集計した数値とRで集計した数値が一致している)
おわりに
今回は簡単のためにTableauでもできるような集計しかさせていませんが、
複雑な前処理をR側にやらせてみたり、
Rで分析した結果をそのままTableauで可視化したりと、
使いこなせればかなり強力な機能な気がしています。
普段Rを使って分析などをされている方は、是非いろんな形でご活用いただけたらと思います。
参考URL
https://www.tableau.com/ja-jp/learn/whitepapers/using-r-and-tableau
https://www.youtube.com/watch?v=zErOzr-qUPk&t=1897s