現在位置: ホーム / ビッグデータ ブログ / Data TanksのデータをTableau Serverでビュー表示する

Data TanksのデータをTableau Serverでビュー表示する

2015年にリリースされた「Treasure Data」のオプションサービス「Data Tanks」について、 データ投入から「Tableau Server」によるデータのビュー表示までを、 順を追って見ていきます。

Data Tankとは

トレジャーデータがホスティングするデータマートのオプションサービスです。

※オプションのため、Data Tanksのみの契約はできません。

主に以下のような特徴になります。

  • TDが保守・運用を行うPostgreSQL(9.4)に準拠したRDB(PostgreSQL用の接続方式/ドライバの利用が可能です
  • 外部データラッパ(FDW)の利用が可能
  • トリガ、ストアドプロシージャ等の作成が可能
  • テーブル単位で行指向/列指向ストレージの選択が可能
  • VPN接続が可能

Treasure Data(PlazmaDB)が苦手としていた「多数のセッションからの頻繁なアクセス」や「レコード単位での更新」を補完できるようになります。

データ投入

使用するサンプルデータは、「Tableau Desktop」付属のサンプルデータソースで「Sample - Superstore Subset (Excel).xlsx」を使用します。

こちらのエクセルに含まれるシート名「People」と「Orders」をそれぞれ、ファイルの保存によりCSVファイルへ保存し直します。

保存する際のCSVファイル名はそれぞれ、「people.csv」、「orders.csv」と小文字に統一し、データを準備しておきます。

1.Treasure Dataへの投入

WindowsのクライアントPCから、Treasure Dataに、CLIのクライアントツール「Toolbelt」を使って、前述の「orders.csv」と「people.csv」をアップロードします。

参考:CLIクライアントツールTreasureData Toolbelt

「orders.csv」をアップロードします。コマンドプロンプトにて以下のコマンドを実行します。

  1. データ格納先のテーブルを作成
    td table:create <データべース> orders 
  2. 作成したテーブルにアップロード
    td import:auto --auto-create <データべ―ス名>.orders orders.csv --format csv --column-header  --column-types long,string,string,string,string,string,string,string,string,string,string,long,string,string,string,string,string,double,long,double,double --time-value 1464620400,23 -o parts

「people.csv」も同じ要領でコマンド実行し、アップロードします。

  1. td table:create <データべース> people
  2. td import:auto --auto-create <データべ―ス名>.people people.csv --format csv --column-header  --column-types long,string,string,string,string,string,string,string,string,string,string,long,string,string,string,string,string,double,long,double,double --time-value 1464620400,23 -o parts

2.Data Tanksへの投入

2-1.コマンドラインツールによる接続

Data Tanksは、PostgreSQLのため、psqlを利用できます。

psqlにて、付与されたData Tanksの接続情報をもとに、以下のように接続できます。

$ psql -h <DataTanks IPアドレス> -p 5432 -U <DataTanks user_name>
Password for user tank_user:<DataTanks user_password>
psql (9.2.15, server 9.4.8)
WARNING: psql version 9.2, server version 9.4.
         Some psql features might not work.
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.

datatank=> 

2-2.Treasure Dataからの書き出し

Treasure DataからData Tanksへのデータ投入は「Result Export」を利用します。
「Result Export」は、Webコンソール画面でも、CLIのToolebeltでも実行できます。

Webコンソール画面については、Data Tanksをご契約頂いたお客様には、
「Favorites」にてData Tanksへの書き出し先の定義が追加されます。

ここでは、 Webコンソール画面にて、前述で作成したTreasure Dataの「orders」テーブルを
処理が高速な列指向のテーブルに書き出す手順をみていきます。

Query画面にて「Add」ボタンを押下し、Result Exportの設定画面を表示します。

画面左の書き出し先の定義「Favorites」から、列指向テーブルとして書き出す「datatank_cstore」を選択し、「Use」ボタンを押下します。(「datatank」は、行指向テーブルとして書き出す定義)
※登録済みの情報は書き換えず、そのままご利用すること。

Query画面に戻って、「Run」ボタンを押下し、書き出しを実行します。

psqlで、DataTanksに接続し、書き出しされていることを確認します。
下記のように、「orders」が表示されれば書き出されています。
参考:「datatank_cstore」で書き出すと、Typeには「foreign table」と表示されますが、
         データ自体はData TanksのDBサーバ上に存在しています。
 

$ psql -h <DataTanks IPアドレス> -p 5432 -U <DataTanks user_name>
Password for user tank_user:<DataTanks user_password>
psql (9.2.15, server 9.4.8)
WARNING: psql version 9.2, server version 9.4.
         Some psql features might not work.
SSL connection (cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256)
Type "help" for help.

datatank=> \d
                            List of relations
 Schema |          Name          |     Type      |         Owner
--------+------------------------+---------------+-----------------------
 public | orders                 | foreign table | <DataTanks user_name>
補足:CLIのToolbeltにて、「Treasureda Data」の「orders」テーブルうぃ「Data Tanks」へ書き出す場合は、
         以下のコマンドで実行します。
      • td query -w -d <DB名> --result "postgresql://<DataTanks user_name>:<DataTanks user_password>@<DataTanks IPアドレス>/datatank/orders?mode=replace&ssl=true&method=copy&fdw=cstore" "SELECT * FROM orders"

2-3.外部のリモートDBサーバ上のテーブル参照(FDW)

FDWは、PostgreSQLの機能で、外部のリモートDB上のテーブルを通常のテーブルとして
扱うことができるようになります。

ここでは、外部のDBサーバに、「Amazon RDS PostgreSQL」を使用し、Data TanksからRDS上のテーブルを照会できるよう設定します。

外部のリモートDBサーバの準備

外部リモートDBとなる「Amazon RDS PostgreSQL」を使用します。
こちらのRDSに、Treasure Data上の「people」テーブルを、Result Export の機能で、書き出します。 

過去の記事「AWS VPC内のRDSにTreasureDataからResult Outputする」の手順に従って、RDSの構築から、RDSへTreasure Data上の「people」テーブルを書き出すまで行います。

Data TanksにおけるRDS上のテーブルを参照する外部テーブルの作成

psqlにて、Data Tanksに接続し、以下3点のSQLコマンドにより外部テーブルを作成します。
外部テーブル名は「people_ft_postgres」として作成することにします。 

  • リモートサーバ(マスタ情報を持っているDBサーバ)の登録
    CREATE SERVER postgres_server 
    FOREIGN DATA WRAPPER postgres_fdw 
    OPTIONS (host '<RDSのエンドポイント>', port '5432', dbname '<DB名>' );
  • ユーザマッピング(接続情報)の登録
     CREATE USER MAPPING for public 
     SERVER postgres_server 
     OPTIONS ( user '<RDSの接続ユーザー名>', password '<RDSの接続ユーザーのパスワード>' );
  •  外部テーブルの作成
    CREATE FOREIGN TABLE people_ft_postgres 
     ( region text, 
       person text 
    ) SERVER postgres_server 
     OPTIONS (table_name '<RDS上の参照先テーブル名>' );

上記を実行すると、以下のとおり、Data TanksからRDSのPostgreSQL上の「people」テーブルに対し、参照できるようになります。

datatank=> \d people_ft_postgres
Foreign table "public.people_ft_postgres"
 Column | Type | Modifiers | FDW Options
--------+------+-----------+-------------
 region | text |           |
 person | text |           |
Server: postgres_server
FDW Options: (table_name 'people')

datatank=> select * from people_ft_postgres;
 region  |      person
---------+-------------------
 West    | Anna Andreadi
 East    | Chuck Magee
 Central | Kelly Williams
 South   | Cassandra Brandow
(4 rows)

datatank=>

Tableau Serverでビュー表示

1. Tableau Desktopでのビュー作成

Tableauを起動して接続設定を行います。Data Tanksは、[PostgreSQL]を選択します。必要な情報を入力して接続します。

データソース設定画面にて、テーブル名「people_ft_postgres」と「orders」とを結合させてのデータソースとします。画面下に「ワークシートに移動」と表示されているので「シート1」に移動します

シート1にて、以下のビューを作成します。
シ―ト名を「地域別担当者別売上粗利」とし、ファイル名は「superstore_orders.twb」でファイル保存します。

2. Tableau Serverでの表示

Tableau Desktopで作成したビューをTableau Severにパブリッシュします。
「サーバー」メニューから 「ワークブックのパブリッシュ」により、パブリッシュを実行します。
 参考:Tableau ServerのTips(Tableau Server経由でデータソースへのアクセス)
         Tableau Server で初めてのグラフ共有

ブラウザにてTableau Serverにログインすると、以下のように、パブリッシュしたビューが表示できるようになっています。

まとめ

DataTanksを利用すると、トレジャーデータ(PlazmaDB)が苦手としていた「多数のセッションからの頻繁なアクセス」をカバーできるようになります。
加えて、RDBのため、BI/クライアンツールからの接続に適し、
接続方法もPostgreSQLと同じものを利用できます。

弊社では、本記事のようなビッグデータ分析基盤導入など、ビッグデータ活用を総合的にご支援するサービス「SIOS BigData One Stop Solution」として提供させて頂いております。
ビッグデータのお困りごとについてのご相談は、以下リンクにあるお問合せフォームからお問合せください。
SIOS BigData One Stop Solution

Treasure Data

Tableau Server

執筆:斎藤@SSTD