Tableau Conference 2016 at Austin [レポート] クロスデータベースやUnionのTableauクエリを理解する #data16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Tableau Conference 2016@Austinのセッション参加レポート:6本目は「Understanding Tableau Queries with Cross-Database Joins and Union」の紹介をしていきます。

title

セッションの紹介文は下記の通りです。

 Tableau recently introduced cross-database joins. Join us to take a peek under the hood to see how Tableau queries for data in multiple databases. We’ll also discuss the query implications of using the union feature in Tableau. In this session we’ll cover:

- How cross-database queries and cross-database work in Tableau

- The flow of the query pipeline in Tableau with multiple data sources

- The architecture of the underlying data model for multi-database scenarios

- How Tableau deals with data types across different data sources

- What parts of query processing is done remotely in the database versus in Tableau

- How Tableau deals with differences in functionality across different databases

- Performance impact of cross-database joins

- How to identify relevant information in the Tableau log files for cross-database joins

- How to optimize your usage of cross-database joins for optimal performance

- Plans and ideas for the future

アジェンダ

agenda

  • なぜTableauでデータインテグレーションをするのか?
  • どんな機能が使えるのか?
  • Tableauはクロスデータベースのクエリをどのように処理するのか?
  • 次の機能追加の予定は?

セッションビデオ・スライド

本セッションの録画版は、下記のサイトで公開されています。(※登録必要ですが無料で利用・アクセス可能)

http://tclive.tableau.com/Library/Video?vCode=BRK61655

Tableauを使ったインテグレーション(ETL処理)

  • データモデリングはデータ分析と結びついている
    • ユーザはデータの場所や形には無関心
    • データサイエンスのコンセプト
    • データサーバからの抽出とパブリッシュ
  • 優れたコネクティビティ
    • 50を越える接続(RDBMS、クラウド、アプリ、テキストファイル、Excel etc.)
    • SSL、SAML、Kerberosサポート
    • 分離接続のプール
  • パワフルなクエリプロセッサ
    • 統合セマンティクス
    • シングルクエリのリライター(書き換え)
    • クエリバッチの削減とパラレル実行
    • 複雑なクエリの生成
    • ケイパビリティ(できること)ベースの設定
    • 処理ユニットとしての、Tableauデータ・エンジン

スクリーンショット 2016-11-17 17.59.58

 

  • 一般的なETLツールによるデータ統合とTableauによるデータ統合

スクリーンショット 2016-11-17 18.01.57

 

どんな機能が使えるのか?

  • クロスデータベース・ジョイン
    • ライブ
      • ほとんどのデータが1つのデータソースに存在する
      • 同質で、比較的小さなデータソース(100万行未満のレコード)
    • 抽出
      • 比較的大きなデータソース、異質なデータソース
      • オフライン使用

スクリーンショット 2016-11-17 18.04.56

 

  • ユニオン
    • 手動選択
      • multi-select
      • 数個のテーブル
      • データのアクセス権は、Tableau Desktopでシミュレートされる
    • パターンベースの選択
      • 数多く(千個未満)の小さなテキストファイル、Excelファイル
      • スキーマが同じか、ほぼ同じ
      • 地理情報の場所や、時間の区切りごとに作成される

union

 

Tableauはクロスデータベースのクエリをどのように処理するのか?

  • クエリをビルド
    • データモデルに対して定義される
    • プロジェクション、セレクション、集合を含む
  • バッチクエリ
    • クエリマッチングに基づく依存関係グラフをビルドする
    • 重複を削除
    • 同じクエリを結合する
    • 必要とされているクエリを特定する
  • バッチを実行
    • 分離された接続を使う
    • 一時テーブルを作成
    • クエリを並列実行
  • 後処理
    • ジオコーディング処理
    • (圧縮による)高密度化
    • 表計算
    • 予測
    • リファレンスライン
  • 可視化

pipeline

 

  • シングルクエリを連合させる
    • 連合エンジン
      • Tableauデータ・エンジン
    • チャレンジ
      • 共通の能力
      • 共通のセマンティクス
      • データ移動のセキュリティ
      • アップロードと処理のパフォーマンス
      • 予測可能性

federating single query

 

  • Tableauログビューアー

log viewer

 

  • ログイベントとキーワード探索
    • begin-query / end-query
      • クエリの開始と完了
    • 構築プロトコル
      • データベース接続を作成
    • begin-sql-temp-table-tuples-create / end-sql-temp-table-tuples-create
      • Tableauデータエンジンの中に一時テーブルを作成する
    • 連合クエリ
      • Tableauをオプション付で起動(-DLogDetail=FederateQueryXML)
    • INSERT INTO
      • データエンジンの中で、一時テーブルのレコードを追加するイベントを探す、ハイライトする

log events

 

  • 連合の能力
    • Tableauのタイプシステム
      • INT、REAL、DATE、DATETIME、STRING
      • 他の型は適切にキャストされる
    • ファンクション
      • Tableauタイプシステム上に定義されたファンクション・ライブラリ
      • ファンクションはすべてのサポートしている(SQLの)方言で実装されている
      • 特別なファンクションはサポートされていない(MEDIAN、SPLIT)
      • 加入ソースによってサポートされているタイプのインターセクション(共通集合)を使う
    • Joinのタイプ
      • INNER、LEFT/RIGHT/FULL OUTER
      • 等価条件
      • 加入ソースによってサポートされているタイプのインターセクション(共通集合)を使う

federated capability

 

  • 連合されたセマンティクス
    • タイプのミスマッチ
      • ユーザにより解決される
      • リモートキャストに強制される
    • Collationのミスマッチ
      • 自動Collation解決ルール
      • ICU上のマップベース
      • 照合カラムを持つ一時テーブル作成を強制される
    • nullセマンティクスをJoinする
      • ANSI標準JOIN
      • フィルタのためのIs-not-distinct

federated

 

  • 連合されたパイプライン
    • 解決
    • 単純化
      • 大きな集合を外項化する
      • インターセクションを叙述する
      • 新婦リフィケーションを叙述する
      • Joinを選択する
      • 定数畳み込み
    • 連合
      • push-downを叙述する
      • remotableツリーを最大化する
      • クロスデータベースのストリーミング
      • ローカルのタイプシステムへキャストする
      • 一時テーブルを計画する
    • 実行

federated pipeline

 

  • キャッシュと連合
    • メタデータと能力のキャッシュ
      • メンバーコネクションのレベルを適用
      • クラスター内で外項化し、分散する
    • インテリジェントなクエリキャッシュ
      • ローカルの制約、フィルター、ロールアップをサポート
      • 連合コネクション全体のレベルに適用する
      • 的中は、リモートクエリとデータ移動を省略できる
      • クラスター内で外項化し、分散する
    • リテラルベースのクエリキャッシュ
      • クエリのテキストにぴったり一致する
      • 第二コネクションのレベルに適用する
      • 的中は、リモートクエリを省略できる
      • シングルプロセス、インメモリに制限される

caching

 

  • 連合の接続管理
    • メンバー接続を設定する
      • 連合なしでlikeを特定する
      • インラインで、もしくはTDCを通して、能力をセットされる
      • 外部ファイルを通して、接続の制限をセットされる
    • TDE接続は常にメンバー
      • プロセスの中のすべての連合接続は、同じ一時ディレクトリを使う
      • データは残らない。ただ、仲介のための一時テーブルが作成される

connection

 

  • 制限
    • サポートされない接続
      • Salesforce、Firebird、SAP、Splunk、Presto
      • パブリッシュされたデータソース
      • サポートされないストアドプロシージャ
      • MDXデータソース(ライブ、非正規化キューブ、Googleアナリティクス)
    • メンバーデータソースの中でインターセクション関数が利用可能
      • REGEX、RAWSQL/RAWAGGSQLはサポートされない
      • MEDIAN/PERCENTILE、SPLITはサポートされないことが多い
      • Full outer joinもサポートされないことが多い
    • 連合JOINのプライマリーキー制約、外部キー制約は使えない
    • データソース特有の、一時テーブル作成のヒューリスティックは使えない

limitation

 

  • Tableauデータエンジン(TDE)
    • メモリ・バイアスドな列指向データベース
    • ブロック相互作用
    • ベクター化ファンクション
    • 並行モデルを交換する
    • ライトウェイトのエンコーディング
    • 非可視JOINによる辞書圧縮
    • 戦略的、戦術的最適化
    • Tableauのワークロードの最適化
  • 環境
    • デスクトップ:ローカル・プロセッシング・エンジン
    • サーバー:シェアードナッシング、もしくはシェアードディスクアーキテクチャのマルチユーザーデータベース

tde

 

  • リモートの結果をTDEにストリーミングする

streaming

 

  • TEDでUNION ALLを処理する
    • ファイルデータソースの大きなファイル数
    • プレ・マテリアライズドのテキスト/ExcelテーブルのUNION
    • 仲介の一時テーブルの拡散を防ぐ
    • n変数のUnion Allはツリーをバランスする
    • ネイティブに実装されたテキスト構文解析

union in ted

次の機能追加の予定は?

  • Right、Full Outer Join(10.1でリリース)
  • 集合のpush-down
  • 仲介の並行取得
  • 新しい連合エンジン(Hyper)
  • Salesforce、Splunk、Presto、パブリッシュされたデータソースを統合する
  • Excel union 準備のストリーミング対応
  • データベース、クロスデータベースのUNION対応

next

最後に

この記事では、クロスデータベースやUnionのTableauクエリを解説したセッションをご紹介しました。裏側の仕組みを理解することで、よりTableauを深く理解することができればと思います。