Atsushi2022の日記

データエンジニアリングに関連する記事を投稿してます

「Tableau徹底入門」を読んでみた

概要

「Tableau徹底入門」を読み、内容をまとめる。でも、第1章全体と第5章の一部のみしか読んでないです。。

第1章 データソースの作成

第5章 Tableauをさらに活用するための機能

読んでみての感想

表やグラフを作成する前段階のデータソース作成に関して、結構ページ数が割かれていて嬉しかった。

あとはパフォーマンスチューニングや通知機能についても触れられていて良かった。

リレーションシップの仕組みについてはもうちょっと知りたかった。

Tableau 製品

以下のような製品スイートがある。細かい製品はもっといっぱいある。

Tableau製品と価格体系について

  • Tableau Prep
  • Tableau Desktop
  • Tableau Sever & Tableau Cloud
  • Tableau Mobile

Tableau Prepでデータの前処理を行って、それをTableau DesktopないしTableau Sever & Tableau Cloudで可視化して、Tableau Sever & Tableau Cloudで共有するという感じ。Tableau Mobile使うと、スマホダッシュボードが見られる。

用語

  • データソース (.tdsファイル)
    • データの接続先から読み込んだデータ(接続先の情報、フィールドのデータ型、計算フィールドの定義、テーブル結合処理などが含まれる)
  • 抽出 (.hyperファイル)
    • データソースの接続タイプを抽出にした際に作成される接続先のデータのコピー
  • ワークブック (.twbファイル)
    • 1つあるいは複数のデータソースをもとにグラフを作る作業スペースのこと。データソース、ワークシートやダッシュボードの情報が含まれる。
  • ワークシート
    • ワークブック内で表やグラフを作成する画面
  • ダッシュボード
    • 複数のワークシートをもとに表やグラフを1つの画面上に表示するもの
  • ストーリー
    • 情報を伝達するために連携して機能する一連の視覚化、らしい
  • ビュー
    • ワークシートで作成した単一の表やグラフを表示するもの
  • プロジェクト
    • 数の子プロジェクトやワークブックを束ねたもの
  • パッケージドデータソース (.tdsxファイル)
    • 抽出とデータソースを一体にしたファイル形式
  • パッケージドワークブック
    • ワークブックに加えて抽出や、画像ファイル等のワークブックで利用されたローカルファイルを含むファイル

マイTableauリポジトリ

Tableau Desktop に関連するファイルが配置されるフォルダのこと。Tableau Desktopで利用するワークブック、データソースなどのファイルが格納される。Tableau Desktop をインストールすると自動的に作成される。

NULLについて

  • DIV関数で任意の数を0で割ると、エラーにはならずNULLが返ってくる。Tableauでは計算不可能な場合はNULLを返す。
  • 値がデータ型で許容されない場合にもNULLになる。例えば、日本語文字列をINT型に型変換する。
  • ZN関数はNULLを0に変換する
  • IFNULL関数でNULLを任意の値に変換することもできる。

集計、グループ化

特に忘れそうな点もないのでスキップする。

【コラム】ファントラップ (Fan Trap)

例えば売上明細テーブルを商品テーブルと紐づけるとする。紐づけには商品コードを使用する。

商品テーブルに同一の商品コードが複数あった場合、つまり商品コードが重複していた場合、結合した結果、元の売上明細テーブルよりもレコード数が増えてしまうことがある。この状態で、売上合計を計算すると、実際より売上が多く計算されてしまう。

関係(リレーションシップ)という機能を利用するとファントラップを避けながら結合を行うことができる。

カスタムSQL

データベースにあるテーブルやビューを読み込むのではなく、Tableau上で定義したSQLの実行結果に対して接続する機能。

データガバナンスの観点から非推奨。ベストプラクティスとしては、データベース側でテーブルやマテリアライズドビューを作成し、それに対して接続する。

リレーションシップ(関係)

複数のテーブルをスマートに統合するTableauの機能らしい。

  • リレーションシップは定義された時点では結合は行わない。統合が行われるのはワークシートで両方のテーブルのフィールドが利用された場合。片方のテーブルだけでビューが作成可能な場合は、テーブルの統合は行われない。

  • 「結合前の状態」の集計結果に対して統合を行うので、ファントラップを避けられる。「結合前の状態」の集計結果に対して統合を行うというのがどういうことかというと、条件となる値でそれぞれのテーブルを集計し、その集計結果を結合するようなイメージらしい。ファントラップは結合によって行が複製された集計していたため行が増えてしまっていたが、それが防げる。

  • リレーションシップでは結合タイプがディメンションとメジャーによって動的に変わる。

パフォーマンスオプションを利用したリレーションシップの最適化

パフォーマンスオプションを変更することで、リレーションシップの処理を最適化し、パフォーマンスを改善することができる。

  • カーディナリティ
    • テーブル間の結合条件を満たす行数の関係。デフォルト&推奨設定は「多数:多数」。
  • 参照整合性
    • すべてのレコードが一致:テーブルのフィールドが持つすべての値が、もう片方のテーブルのフィールド値に必ず一致する
    • 一部のレコードが一致:デフォルト&推奨設定。テーブルのフィールドが持つ値が、もう片方のテーブルのフィールド値に一部しか一致しない。あるいは、一致する程度が不明。

論理レイヤーと物理レイヤー

  • 論理レイヤ― 論理テーブル間をリレーションシップで統合する。

  • 物理レイヤー 物理テーブルの「結合」や「ユニオン」を定義する。 複数の物理テーブルを結合&ユニオンし、1つの論理テーブルを作る。

クロスデータベース結合

BigqueryやExcelなど異なる接続先のテーブルを統合することができる。

データソースを設定する画面で「接続」の横にある「追加」ボタンをクリックすれば、新しい接続先を追加することができる。

接続タイプ

「ライブ接続」と「抽出接続」の2種類がある。パフォーマンスや利用できる関数に影響するので重要。

抽出接続ではTableauの環境でインメモリ処理を行う。そのため処理速度が早いケースが多い。さらに、抽出を頻繁に行うことでリアルタイムに近づけることはできる。以上のことから、一般的にライブ接続より抽出接続が選ばれることが多い。

さらに抽出接続だとTableauの関数をすべて利用できる。

また、抽出接続は接続先のサーバーに負荷をかけることもない。

  • ライブ接続 データソースが接続先に常時接続するため、最新のデータが取得できる。また、集計や結合といった処理のほとんどが接続先の環境で実行される。

  • 抽出接続 接続先のデータをコピーして、Tableau上に抽出ファイルを作成する。データソースは、Tableau上の抽出ファイルに接続する。抽出はTableauに最適化されたフォーマットであるため、処理の高速化が期待できる。

※ 接続先がExcelJson、PDF等の場合、ライブ接続と抽出接続はパフォーマンス面で大きな違いはない。ライブ接続を設定したとしても「シャドー抽出」と呼ばれるファイルを使って処理を高速化するため。

増分更新と完全更新

別投稿で触れてるのでスキップ。

抽出フィルターとデータソースフィルター

抽出フィルターで不要なデータを除外しておくことで、抽出ファイルのサイズを小さくすることができる。

データソースフィルターは、抽出ファイル作成後にフィルタリングを行うため、データソースフィルターでは抽出ファイルのサイズを小さくすることはできないことに注意。

パフォーマンスチューニング

一般的には、Webページの読み込み時間に3秒かかるとユーザーがストレスを感じるらしい。

パフォーマンスに問題がある場合はデータソース、ワークシート、ダッシュボードの順で調べていくのが良い。

  • データソース
    • 理由もないのにライブ接続になっている
    • 抽出接続のデータ量が大きすぎる
      • Tableau Cloudでは抽出の行数が1,000行を超えたあたりから徐々にパフォーマンスに影響が出てくる
      • 1億行を超えると3秒以内のレスポンスはかなり難しくなる
      • 対策としては抽出フィルターで不要なデータを除く。データソースの粒度が細かくなりすぎないようにする(例:日時→日付)
  • ワークシート
    • ビュー上のセル(点、マーク)の数が多すぎて、計算や描画に時間がかかる
    • 結合対象が極端に多いリレーションシップ
      • 対策としては論理レイヤーでのリレーションシップによる統合を少なくして、事前に物理レイヤーで結合をしておく
  • ダッシュボード
    • ダッシュボードに表示するワークシートが多すぎる
      • ワークシートの数が20枚を超えると描画に数秒かかるようになる
    • ダッシュボードのサイズが固定になってない
      • サイズを固定することでTableau Cloud上でキャッシュが使用されやすくなる

パフォーマンスの記録

「パフォーマンスの記録」という機能でボトルネックを特定できる。

ワークシートやSQLをもとにボトルネックを分析できる。

「ヘルプ」→「設定とパフォーマンス」→「パフォーマンスの記録を開始」

パブリッシュ

ワークブックやデータソースをTableau Cloudに公開することをパブリッシュと呼ぶ。

推奨の接続構成

接続先からTableau Cloud上のデータソースに抽出。Tableau DesktopからTableau Cloud上のデータソースにライブ接続。

Tableau Bridge

ファイアウォールの内側からTableau Cloud上にデータを送信してくれる。

通知機能

  • サブスクリプション
  • データドリブンアラート
    • パブリッシュされたワークブックにあるメジャーが特定の条件を満たした際にメール配信やSlack通知を行う
    • アラート条件に利用したい数値がビュー上で字句として選択可能なことが条件
    • ワークシートを開き、ツールバーの「視聴」→「アラート」を選択する