Tableau Bridge for Linuxやってみた

こんにちは、Tableau SEのShintaroです。
今回はTableauのバージョン2023.3で追加されたTableau BridgeをLinuxで動かす検証手順のようなものを紹介したいと思います。

前提情報は下記となります。
  • クラウド→AWS
  • OS→CentOS 7 with HVM
  • スペック→m5.xlarge (4vCPU, 16GB)
  • ストレージ→150GiB
  • 検証したデータソース→MySQL、PostgreSQL、Redshift
  • 作業PC→Macでのターミナル
また、具体的なアーキテクチャーはこのようになっています。
Bastionは踏み台のことで、Tableau DesktopからはVPNを通じて各データソースにアクセスできるよう設定しておきました。

今回はあくまでTableau BridgeをLinuxで動かすまでの手順のご紹介となりますので、AWSでの構築については割愛します。
1点重要な情報としては、Tableau Bridgeは基本的にはアウトバウンド通信しかしないので、Bridge→DB/DWH(アウトバウンド)、およびDB/DWH←Bridge(インバウンド)
の許可、およびTableau Cloudへのアクセス、つまりインターネットへのアウトバウンド許可は必須となってきます。
Tableau CloudのIPアドレスについては、Podごとに異なり、こちらに記載がありますので、ご参照ください。

なお、実際の運用では、AWSやLinuxはもちろん、Dockerの知識は必要となり、オーケストレーションしていこうとするとKubernetesの知識もあると良いかもしれません。
ただし、今回のやってみた!はそこらへんがよくわからない方に向けてもなるべく丁寧に記載していきます。

では開始!


(0) AWSで各サービスの起動
これは言わずもがななので、はしょりますが、各サーバーや、サーバーを介したDB/DWHへの接続は確認しておきましょう。

(1) 作業PCからBastion→CentOSへアクセス

ssh -i [キーパス] ec2-user@[パブリックIP] 
ssh -i [キーパス] centos@[内部IP]

これも言わずもがなでしょうか。もしここから・・・という場合はsshのコマンドの意味をインターネットでご確認ください。 

アクセスできたら、ユーザーがcentosとなります。

(2) Dockerエンジンのインストール

もし、Dockerエンジンがすでにインストールされているイメージを利用してEC2を立ち上げた場合はここはスキップで構いません。

また、 Dockerがアップデートされたらここはうまくいかなくなる可能性もあるので、ホームページでチェックしたほうが無難となります。

最初にリポジトリを設定し、

sudo yum install -y yum-utils 

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Dockerをインストールします。

sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

バージョンを指定する場合は、 yum list docker-ce --showduplicates | sort -r で確認して、docker-ceとdocker-ce-cliの後にバージョンを付けましょう。

そして、最後にDockerの開始とhello-worldイメージによるテストです。

sudo systemctl start docker

sudo docker run hello-world

これにて完了です。では次にいきましょう。

 (3) Bridgeコンテナイメージの作成

まずは、Tableau Bridgeのrpmパッケージが必要になるので、

sudo curl -OL [ダウンロードURL]

とかで持ってきましょう。ダウンロードのURLはこちらで確認できます。

続いて、作業ディレクトリを作っておき、

sudo mkdir Docker

cd Docker/

rpmファイルを移動させて、

sudo mv ./~/[Tableau Bridgeのファイル名].rpm ./

命令させるDockerfileを作ります。場所は任意です。

sudo touch Dockerfile

そして、Dockerfileには下記のような命令文をviで書きます。

# Centos 7 is the supported base image

FROM centos:7

# Update Packages

RUN yum -y update

# Copy the bridge RPM package, install it, then remove it from the image

COPY <Tableau Bridgeファイル名>.rpm/ <コンテナパス>

RUN ACCEPT_EULA=y yum install -y $(find . -name *.rpm) && rm -rf *.rpm

<コンテナパス>はコンテナ内でrpmファイルを置く場所なので/app/とかが一般的な気がします。

そしてRUN_ACCEPT_EULA=yはTableau利用規約に沿ったインストールという意味なので必ずつけましょう。

最後にイメージの構築です。

 sudo docker buildx build --platform=linux/amd64 -t bridge_base .

うまくいけばここでいうと、bridge_baseというイメージが作成されます。

ここで2つのオプションを紹介します。

・構成設定ファイル

Tableau Bridgeの構成設定に関しては、TabBridgeClientConfiguration.txtファイルで管理しており、編集してコンテナをアップデートさせるよう設定する必要があります。

詳しくは割愛しますが、こちらに情報がまとまっています。

・ドライバー

Tableau BridgeではWindows版でもそうでしたが、MySQLやRedshiftへのアクセスにドライバーのインストールが必要になります。

ですので、例えば、ドライバーインストール用に別のDockerfileを用意して、ドライバーをインストールする命令文を記載し、

sudo touch Dockerfile_driver

sudo vi Dockerfile_driver

ここには↓書く(MySQLの場合)

# Using previously built bridge_base image

FROM bridge_base

COPY [ドライバーファイル名].rpm ./

RUN yum install -y [ドライバーファイル名].rpm

最後に先ほど作ったbridge_baseのイメージの上位レイヤーとしてイメージを作成すれば自動化できます。

sudo docker build -t bridge_final -f Dockerfile_driver .

これは結構マストの可能性高いですね。

(4) Tableau CloudのPAT作成

今回Tableau BridgeからTableau Cloudへ繋ぐ場合、PAT(パーソナルアクセストークン)が必要になりますので、あらかじめ作っておきましょう。

Tableau Cloudにログインをして、右上のユーザーアイコンから[マイアカウント設定]より、個人用アクセストークンを作成可能です。

トークン名とシークレットが必要になるので保管しましょう。

(5) Bridgeワーカー起動

これで最後です。

ただ、まずはロケールの設定ですね。特にMySQLではこれやってないとエラーになる事象は確認が取れています。

Docker側で設定を毎回するか、CentOS上で設定していまうかどちらかとなりますが、後者だと、

export LANG="en_US.utf8"
export LANGUAGE="en_US.utf8"
export LC_ALL="en_US.utf8"

を/etc/profileに追記する流れとなります。

続いて、Bridgeコンテナと対話型で繋がっていきましょう。

sudo docker container run -it bridge_final /bin/bas

でコンテナが開始され、rootでアクセスできます。

そして、先ほど作成したPAT情報をtxtファイルにJSON形式で書込み保存します。

cd /home/ touch MyTokenFile.txt

vi MyTokenFile.txt

ここでは、

{"トークン名": "シークレット"}

のような形で書き込みます。

そしてそして、セキュリティ強化のためのchmodです。

chmod 600 MyTokenFile.txt

では最後にワーカー起動です。

/opt/tableau/tableau_bridge/bin/TabBridgeClientWorker -e --patTokenId="[トークン名]" --userEmail="[ログインID]" --client="myBridgeAgent" --site=”[サイト名]" --patTokenFile="/home/MyTokenFile.txt"

TabBridgeClientWorkerのヘルプを見るのがいいですが、引数にTableau Cloudへの接続情報を入れないといけないので、間違いがないようコマンドを用意します。

無事に成功すると下記のようにService Startedとなり、終了です。

念のためTableau Cloudで左メニューの[設定]からBridgeタブに遷移すると、先ほど--clientにて設定したBridge名がコンピューター名として接続済みとなっていることが確認されました。

このページでは必要に応じて、プライベートネットワークの許可リスト(ドメイン/IP)とプールを構成して、Bridgeを割り当ててください。

また、MySQLなどDB/DWHで実際Tableau Cloudで接続確認すると、無事抽出が確認できました。

万が一できない場合は、プールの設定、もしくはネットワーク設定などを再度確認しましょう。


いかがでしたでしょうか。

私の個人的な感覚ですが、Linux慣れていたら、Windowsよりはるかに楽だと思います。また、Kubernetesで複数コンテナをオーケストレーションさせるよう構成を組んであげれば、コストパフォーマンスが著しく向上すると思います!

今後Kubernetesも挑戦していこうかと思いますので、その際は記事を投稿しようかな。

読んで頂きありがとうございました。

なお、Salesforceの公式とまではいきませんが、手順をまとめた資料がありますので、こちらもぜひご参照・ご活用くださいませ!

また、Tableauのヘルプページも参考になるかと思います。


管理ビュー for User Engagement

SalesforceでTableauのSEを担当しているShintaroです。

はじめての投稿となります。

今回はTableau Serverの管理ビューのご紹介となります。

いきなりですが、Tableau Serverの管理者の方、管理ビューはどのくらい使っていますか?

管理ビューはTableau Server内のサイトやプロジェクトにおいて、様々な種類のアクティビティをモニタリングできます。

https://help.tableau.com/current/server/ja-jp/adminview.htm


管理ビューにはプレビルト管理ビューとカスタム管理ビューがあり、プレビルト管理ビューはあらかじめ様々な単位のダッシュボードが用意されており、手軽に各単位のKPIをチェックすることができます。

例えば、ビューのパフォーマンスやユーザーのアクション、ロード時間や使用量の統計値などです。

https://help.tableau.com/current/server/ja-jp/adminview_bucket.htm


一方、カスタム管理ビューは、リポジトリ(あらゆるユーザーインタラクション、抽出の更新などに関するデータを格納している内部のPostgreSQL)にアクセスして、御客様自身で管理ビューを作ることができる機能となっています。

今回は後者のカスタム管理ビューについて取り上げますが、やっぱり御客様自身で・・・とはいってもリポジトリはデータ構造がやや複雑で、よくお問合せをいただきます。

リポジトリに接続して、データを見ていくのは少しハードルが高く、慣れが必要ですよね。

Tableauのコミュニティでは、様々な観点での管理ビューのテンプレートに関してインターネット上に転がっていますが、今回はユーザーエンゲージメントという観点で弊社のSEメンバーで作ったテンプレートをご紹介します。


まずTableauを通じたデータドリブン文化の醸成の道のりには、Tableauをどう社内で定着化させるか、という課題があり、Tableau Serverの使用状況を的確に把握する必要があります。

そんな中で既定のプレビルト管理ビューでは、各ユーザーのアクションは特定できるものの、どのワークブックがどのくらい見られているか、あるいはどのユーザーが積極的に活用、あるいは逆に課題感を感じ、あまり活用をしていないかを探るには使い勝手が悪いです。

今回は、そういった課題に対し、「Tableauが定着し、安定飛行ができるまで」の点で、「対象となるロール・ユーザ・部門の利用が目標に達しているか・達していない場合、利活用の濃淡により対策を打つためのドリルダウン」を意思決定としたテンプレートとなるワークブックをご用意しました。

管理ビューテンプレートの利用方法(PDF)はコチラ

テンプレートのダウンロードはコチラ

(組織テーブルを導入したテンプレートはコチラ


ワークブックは3つのダッシュボードで構成されています。

① ユーザーエンゲージメントの指標分析

こちらはいわゆるまとめのようなダッシュボードになっており、

・全体としてどのくらいのユーザーがいるか

・それぞれのロールでのワークブックへのアクセス率はどうか

・アクセス率の推移は計画どおりか

のような情報を知るために活用するよう設計されており、ロール別のアクセス率や推移を確認可能です。

② ワークブックの閲覧数分析

こちらはワークブック単位で着目したダッシュボードとなっており、閲覧数とユニークユーザー数をワークブック単位で追える内容になっています。

主に、

・ユーザーはワークブックにアクセスしているか

・よくアクセスされている、またはアクセスされないワークブックはどれか

などを把握でき、例えば公開してから閲覧数が伸び悩んでいるワークブックを特定し、改善を促す等の措置を施すことに使えます。

③ ワークブック所有者の貢献度分析

こちらは非常にユニークです。ワークブック所有者という軸とアクセス数という軸でパブリッシャーを4象限に分割しています。

・Creator/Explorerライセンスの中でも良く利用しているユーザー、または期待通りの利用に至っていないユーザーの把握(セグメントで定義)

・各セグメント別のユーザーに対して、より利用率を上げてもらう為に、どのようにアクションするべきか

などの利用シーンが想定され、Tableauチャンピオン候補、トレーニング育成候補、適切なKPIの設定を支援する候補のパブリッシャーを特定できるので、ユーザーエンゲージメント向上に大いに期待できる可能性があります。

また、あらかじめ下記のような組織テーブル(サンプル)を用意し、データを追加することで例えば部門別の使用状況把握や改善施策のアクションなどができるようになります。















いかがでしたでしょうか。
なお今回のものはあくまでテンプレートで、そのままご活用いただくのも結構ですし、こちらのテンプレートをもとに、カスタマイズをして管理ビューを使いこなしていただけると幸いです。



Tableau Metadata APIを使ってみよう!

 


Tableau Server/Onlineには各種API機能がありますが、今日はあまり目立たない存在のMetadata APIについて取り上げたいと思います。なかなか便利なAPIですのでTableau Server管理者やコンテンツ管理者の方はぜひご一読ください。


Tableau Metadata APIとは、こちらのヘルプに概要が書かれていますが、ワークブックやデータソースのつながりを、APIを通じて取得できるものです。データカタログの機能を持つData Management Add-onと同じタイミングでリリースされましたが、実はAdd-onライセンスがなくてもこのAPIは使えます

利用するにはサーバでの準備が必要です(Tableau Onlineは常にONなので準備不要)。まずバージョンが2019.3以上のサーバを利用していること、そしてサーバでmetadata-servicesがアクティベートされていることです。アクティベートしていないと、API呼び出し時にこんなエラーがでます。



管理者ユーザでサーバにログインし、以下のコマンドを打って機能をアクティベートしましょう。
tsm maintenance metadata-services enable

しばらくするとメタデータAPIサービスが起動されます。



GUIでAPIが有効になったかを確認しましょう。Metadata APIはGraphiQLという技術を使っており、UIも搭載しています。Tableau ServerのURLの後半を変更してUIを呼び出します(リンク等がないので手動でURL欄に打ち込んでください)

http://(またはhttps://)サーバ名/metadata/graphiql/


表示された画面でGraphQLクエリを記述することにより、メタデータ検索が行なえます。
左側のペインに試しに以下を打って再生ボタンを押してみましょう。最初に表示されているコメントは全部消してしまってOKです。

query{
  workbooks{
    name
  }
}




右側にサーバ上のワークブック名がずらっと出てくるはずです(このサーバでは2つしかブックがないため2つだけ表示)

このGUIを使って自分が欲しい情報を、GraphQLクエリを使って取ってくることができます。補完機能が充実しているので手打ちで色々試すと面白いですよ。GraphQLはオブジェクト間のつながりをもとにデータを芋づる式に取ってきますので、例えばサーバにパブリッシュされたワークブックの全カラムを取ってきて、そのカラムに紐付いているワークブックをとってきて、等をクエリとして書いていきます。参照可能なオブジェクトを補完機能が教えてくれます。例えば「workb」と打つだけで、ワークブックを取るための候補が出てきます。名前が取りたければ中括弧のあとにnameと入れれば出力されます。


試しに以下を貼り付けて実行してみてください。そのサーバにある「ワークブックの名前とオーナー」から「そのワークブックが参照しているデータソース」と「そのワークブックが参照しているデータベース」の名前を出し、さらに「データベースのテーブルの名前」も出します。

query{
  workbooks {
    id
    name
    owner {
      id
      name
    }
    upstreamDatasources {
      id
      name
    }
    upstreamDatabases {
      id
      name
      connectionType
      tables {
        name
        columns {
          name
          remoteType
        }
      }
    }
  }
}


管理者が調べたいタイミングでGUIを使って調べるのでも十分有用だと思いますが、APIを使う方はこういう作業も自動化したいと思うはずです。その場合はAPIを直接叩きましょう。動作をわかりやすくするためにCURLで叩いていきます。
まずはREST APIと同じようにサーバにログインしてトークンをもらいます。RESTのでのトークンももらい方はこちらを参照してください。



そのトークンを使ってPOSTでAPIにクエリを投げます。このとき注意が必要なのはクエリの最初に「{“query”:」をつける必要があることです。ヘルプにもあまり記載がないのですが、本家GraphQLの方に注意が書いてあったりします。curlで投げるときは必要に応じてダブルクォーテーション等をエスケープしましょう。先程GUIで使ったクエリの先頭に「{“query”:」をつけて、ボディで渡します。

curl "http://<サーバ名>/api/metadata/graphql" -X POST -H "X-Tableau-Auth: <トークン>" -d "{ \"query\": \"query { workbooks { name }}\"}"


戻り値もJSONです。「{“data”:}より後に検索結果が返ってきています。GUIと同様、2件返ってきました。

長いクエリならファイルに保存して呼び出すこともできます。別ファイルにする際にはエスケープは必要ありませんが、先頭に「{“query”:」と入れる必要があることは変わりません。上で使った長めのクエリをquery.jsonとして保存しました。

そのファイルを使ってクエリを実行してみます。さらに、結果をリダイレクトしてファイルに保存してみましょう。
curl "http://<サーバ名>/api/metadata/graphql" -X POST -H "X-Tableau-Auth: _<トークン>" -d @query.json>kekka.json


保存したJSONファイルをTableau Desktopで可視化してみます。
こんな形で可視化ができました。

可視化はおまけでやってみましたが、データソースを管理する方であれば「このテーブルを使っているワークブックを全部知りたい」等の要望が多くあると思います。Metadata APIを使えば効率的に調査や管理ができるはずです。ぜひご活用ください!





Tableau Prepで半角カナを全角カナに変換(Pythonを利用)

Tableau Prep Builderはデータクリーニングのために様々なクリーニング作業ができますが、「半角カナから全角カナに変換」というメニューは有りません(2020年2月現在)。今回のブログでは、前回作ったPython環境を使って、半角全角変換処理を実施したいと思います。



なお、今はまだTableau Prep Builderだけでは半角全角変換はできませんが、こちらの投票サイトより機能リクエストができるので、是非標準機能として搭載されるよう皆さん投票をお願いします。

では手順をご紹介します。

Tableau Prepを起動し、半角カナが含まれているファイルやデータベースを入力として定義します。

今回はサンプルスーパーストアのデータで、製品名の一部を半角にしてみました。半角にしたのは「パック」と「コンロ」だけで、その他のカナは全角です。











Pythonを呼び出すには、「スクリプト」を配置します。+をクリックして「スクリプト」を選択します。最初は赤い!アイコンが出ますが、気にせず設定を続けます。
「接続タイプ」の「Tableau Python(Tabpy) Server」を選択します。つぎに「サーバー」の「Tableau Python(Tabpy) Serverに接続」ボタンをクリックします。




「サーバー」にlocalhost、「ポート」に9004を入力します。ユーザやパスワードは空欄でかまいません。「サインイン」ボタンをクリックします。






スクリプトを準備します。下記青字を全部コピーし、メモ帳やエディタに貼り付けて保存してください。今回は「製品名」というフィールドを半角から全角に変換するスクリプトを用意しました。単純に1列のデータで半角を全角に変更するだけなら、2箇所あるdf['製品名']をご自身のデータの列名に変更するだけでOKです。任意のフォルダに名前をつけて保存します。今回私はc:\python\hankaku_zenkaku.pyという名前で保存しました。

import mojimoji
def hankaku_zenkaku(df):
    df['製品名'] = df['製品名'] .apply(mojimoji.han_to_zen, ascii=False, digit=False)
    return df



最後にPythonのスクリプトを参照します。先程保存した.pyのファイルを参照し、「関数名」には先程のスクリプトの関数名、defの後の「hankaku_zenkaku」を入力します。









すべてを入力すると自動的にスクリプトが実行され、アイコンの上の!マークが消えます。「製品名」の値を確認すると、もう全角に変換されています。





今回のテストでは少し意地悪に「パック」という文字で変換してみました。半角カナは「パ」等の文字を2文字にしてしまうため、それを全角に変換するのは処理として難しいのですが、ちゃんと1文字の「パ」に変換してくれていました。

半角全角の変換には「mojimoji」を利用しました。前回の手順でpython上にmojimojiと、mojimojiを動作させるために必要なものをインストールしていました。そうするとスクリプトを数行用意するだけで文字の変換をPythonに実行させることができました。

今回はTableau Prep BuilderとPythonを連携させ、半角カナを全角カナに変換する処理を作りました。古いシステムからデータを取ったら半角カナばっかりで困っている、という方、クリーニングのフローの途中で半角を全角に変換する、などに是非活用してみてください。



Tableau+Python連携環境(Tabpy)をDockerで作ろう

Tableau Desktop、Tableau Server、Tableau PrepとPythonを連携できる、というのをご存知の方もいらっしゃると思いますが、連携させるための環境をつくるのに尻込みされている方々、こちらの手順で簡単に環境をつくることができます。コンテナ技術のDockerを使って、Tabpyサーバを作ってみましょう。


まず、環境を作りたいマシンにDockerをインストールします。今回は私のPC(Windows 10)に環境を作ります。



Dockerのダウンロードはこちらから。

インストーラーを実行します。選択項目はすべて初期値のままでOKを押下。



再起動が完了すると以下のような画面があらわれ、Dockerの環境が整います。




再起動が完了すると以下のような画面があらわれ、Dockerの環境が整います。



次にDockerファイルを準備します。DockerファイルはDocker上につくるコンテナイメージを定義したテキストファイルです。メモ帳やエディタ等を使って作成します。



今回はCent OSにPython3とTabpy、そしてTabpyを使って全角半角の文字変換を行いたかったのでそのライブラリを入れるように書きました。よくわからなければとりあえずこのままの状態で、下記青字部分をコピーし、メモ帳に貼り付けてPC内のフォルダにDockerfileという名前で保存しましょう。

# Cent OSをベースイメージとして使用
FROM centos:latest

# Tabpyとその前提パッケージ、半角変換のためのmojimojiとその前提パッケージをインストール
RUN yum install -y python3
RUN yum install -y gcc-c++
RUN yum install -y python3-devel
RUN python3 -m pip install --upgrade pip
RUN pip install tabpy
RUN pip install pandas
RUN pip install mojimoji

# コンテナのポート9004をホストに開示
EXPOSE 9004

# Tabpyを実行
CMD ["tabpy"]
                   

私はCドライブの下にdockerというフォルダを作成し、その中にDockerfileを作成しました。




コマンドプロンプトを起動します。コマンドプロンプトはWindowsアイコンを押してcmdと入力すると候補が出てきます。コマンドプロンプトが起動されます。黒い画面にコマンドを打ちますが、もうすぐ完了ですのでめげずに頑張ってください。

Dockerファイルを保存した場所へ移動します。cd (シー、ディー、スペースキー)と入力し、保存先フォルダをドラッグ・アンド・ドロップします。フォルダの場所が自動入力されるので、キーボードのEnterキーを押します。

次に、以下の青字をコピーし、コマンドプロンプトの上で右クリックします。コマンドが貼り付けらえるのでEnterキーを押します。(最後のピリオドまでコピーします)

docker build -t tabpy/tabpy .

Dockerイメージを作成する処理が始まります。しばらく待って処理が終わると、最初の画面のようにC:\docker> 等のように入力できるようになります。



イメージが正しく作成されたか確認します。以下の青字を貼り付けます。

docker image list


tabpy/tabpyがリストの中にあればイメージ作成は成功です。


作成したイメージをつかってコンテナを起動します。以下のコマンドを貼り付けます。

docker run -it -d -p 9004:9004 tabpy/tabpy


これでTabpyサーバが起動ができました。


動作確認してみましょう。

Tableau Desktopを起動し、ヘルプメニューから「設定とパフォーマンス」>「外部サービス構成の管理」を選択します。










外部サービスはTabpyを選択し、サーバーにはlocalhostと入力、ポートには9004と入力し、左下の「テスト接続」をクリックします。












接続が成功するとこのようなメッセージが出ます。



これでご自身のPC上にTabpyが動く環境ができました。PCを再起動したりするとTabpyは停止するので、docker runコマンドで再度実行してください

今回はTabpyを動作させる環境をつくる手順をご紹介しました。次回はこの環境を使ってTableau Prepで半角文字を全角文字に変換する処理を作りたいと思います。

なお、2020.1リリースとともに、Tabpyはバージョン1.0となり、Tableauからのサポートが受けられるようになりました。より安心してお使いいただけます。


Tableau Prep Conductor を使って見よう!

みなさん、こんにちは bashii です。

Tableau 2019.1 の発表にて、Prep Conductorが発表になりました。さて、”Prep Conductor"とはいったいどのようなものなのでしょうか?

(以下資料はβ版の画面を利用しています。実際の2019.1の画面とは異なる可能性があります。当資料はTableau社の正式なレビューを受けていません。最新技術情報の共有を目的とした一技術文書としての公開となります。)

◇ Prep Conductor とは何ですか?

Tableau はTableau Prepというデータ準備のツールを提供しており、PC上で複雑なデータ前処理をフロー化してバッチ実行するプロダクトを提供しています。前処理した結果は、CSV、Tableau の抽出、またはTableau Serverにデータソースとしてパブリッシュし、Tableau Desktopから可視化、分析をすることができます。可視化をする際に複雑な前準備を完了した状態の結果に対してアクセスすることで、大元のデータソースへのアクセス処理を回避し、分析処理のパフォーマンス向上が望めます。

一言でいえば、「Prep Conductor 」はいままでPC上で実行していたPrepフローをサーバー側で一括管理、スケジュール実行する機能です。

例えば…

① 当日の売り上げを夜間に締めて、マスターデータや他のデータと結合して前処理し、分析用のデータソースを作成、パブリッシュしておく (Prep Conductorでバッチのスケジュール実行)

② 翌日の朝、ユーザーに①で前処理しておいたデータソースを提供し自由に分析してもらう (Tableau Desktop または Tableau Server の Web-Edit を利用する)といった運用を考えるとイメージが付きやすいでしょうか。



なお、Prep ConductorはTableau Server / Tableau Online のコンポーネントとして含まれます。(別途ライセンスを有効化することで利用可能となります。)ですので、Prep Conductor用の製品を別途インストールする必要はありません。


◇ Prep Builderとは何ですか?

今までのTableau Prep(デスクトップ製品) は Prep Conductorが登場したことで、Prep Builderに名称変更になります。ちょっとややこしいですが、デスクトップ環境で稼働する製品をPrep Builder、サーバーで稼働する製品をPrep Conductorと呼び方を分けることになりました。

◇ Prep Conductorの利用ケース例

Prep Conductor の利用構成として以下のようなケースが考えられます。

① フローの作成
Prep BuilderからCloud上のデータソースを入力とした前準備を行い、出来上がった結果をTableau Serverに共有のデータソースとしてパブリッシュするフローを作成。

② フローのパブリッシュ
Prep Builder から Prep Conductor (実際はTableau ServerまたはTableau Online)にフロー自体をパブリッシュする。

③ フローのスケジュール実行
Prep Conductor上で定期的にフローがスケジュール実行され、パブリッシュされたデータソースの内容が更新される。

④ データの可視化分析
ユーザーは定期的に更新される、パブリッシュされたデータソースを利用して日々の分析を行う。



◇ それでは実際に触ってみましょう

今回は、クラウド上のデータソース(Google Cloud SQL)に売上データが毎日入ってくる想定で、一日の終わりにこれを集計し、分析用のデータソースを作るフローを定期実行し、Tableau Serverにパブリッシュして分析に利用するというシナリオを考えます。

① まずはPC上のPrep Builderでフローを作成し、Tableau Server にパブリッシュします。



パブリッシュが完了するとPrep Conductor(Tableau Server上)にパブリッシュされたフローがブラウザの画面に表示されます。



Scheduleから"Every night End of the Day" のスケジュールを作成します。(午前2:00に実行するためのスケジュールを作成します。)



FlowのCreate new task で先ほど作成したSchedule(実行タイミング)でTaskを作成します。



タスクがスケジュールされたことを確認します。



ブラウザから即時実行することもできますので、動くかどうか一回確認してみます。



成功しました。



Run History でフローが実行された履歴、所用時間を確認します。




後はこのフローが定期的に実行されるのを待ちます。

ここで、Tableau Desktopに戻ってデータの分析をしてみましょう。

Tableau DesktopからTableau Serverに接続し、フローによってパブリッシュされたデー
タソースに接続します。



次に可視化を行います。この時点では2019/04/02までのデータが入っています。



この間にもトランザクションデータベースにはその日のトランザクションが更新されています。営業時間が終わり、夜中のフローが流れ、実行履歴が追加されます。ここでは疑似的にGoogle Cloud SQLのMySQLに2019/04/03 のデータを追加してみます。



夜中にTableau Server上のバッチが実行されます。



次の日の朝に、データ分析ユーザーはTableau Desktop 上でデータソースの更新を行います。



すると、夜間に更新された前日の更新を含むデータソースが参照できるようになります。以下のエリアチャートで、2019/04/03 の日付のデータが入ってきていることが分かります。



また、Server Status -> Flow Performance History より、パブリッシュされたフロー全体を見て、いつ何時にどのフローが成功、失敗したか、また処理時間にどれだけ所要したかを一覧で見ることができます。



また、ユーザーごとにフローを実行できるか、編集できるかなど異なるパーミッション設定を行えることも特徴です。




◇ Prep Conductorを使うメリット

最後に、Prep Conductorを使うメリットについて、まとめます。

① フローをサーバー側でスケジュール実行
フロー実行のためにクライアントPCを常時起動しておく必要がない

② スケーラビリティ
サーバーまたはクラウドのリソースをフロー実行時に有効活用できる
(多くの場合、クライアントPCよりリソースが潤沢)

③ フローの一括管理
個々に作成していたフロー成果物を一括管理できる

④ セキュリティ
フローの実行、ビュー、ダウンロード可否などのをユーザーごとに設定できる

⑤ フロー実行のモニタリング
フローの実行の履歴、実行時間をモニターし集中管理できる


以上、Tableau Prep Conductor を使ってみた報告でした!! 参考になれば幸いです。