Tableau Cloudをメタデータで便利に可視化しちゃおう。
マエスです。Tableau Cloudって検索機能がもう一歩ほしいじゃないですか。データソース、テーブル、項目、ダッシュボード、シート…うーんもう少し、しゅっと、パパっと検索したくなる。
実は、Tableauには、表示する数値のほかに、項目名、計算式、どこから来てどこで使われるかという関係もあります。このメタデータをAPIで取り出せば、自分の問いに合わせた検索・一覧・可視化や、管理台帳に活かせます。
たとえば「この売上金額は、どの式やダッシュボードで使っている?」という問いがありますよね。ワークブックを一つずつ開く前に、関係を集めて確認候補を絞りたい。
こんな感じですね。


こんな風に項目も見ることもできます。
実はですね。TableauではさくっとMetadata APIを利用して情報を取り出し、保存した情報を専用のWeb画面で可視化できます。なおかつ今では、ChatGPTのサイト機能等で、簡単に内容を可視化する画面づくりを支援してもらえます。今回は本人限定の台帳にしました。共有する場合は、認証と閲覧範囲を設定・確認します。(ChatGPTのサイト機能解説は機会あればいつか)
どう作るか:取り出す、整理する、保存する、画面で探す
実装は四つに分けると分かりやすいです。Metadata APIからGraphQLで取得 → 収集コードで整理・検証 → 保存 → Web画面で検索・描画。APIが返す名前や計算式、関係を、画面で使える形へそろえます。
今回作った台帳の短い仕様
| 項目 | 今回の仕様 |
|---|---|
| 検索 | 取得済みの全アセットの名称・計算式を部分一致で検索し、種類でも絞り込む。アセットはコンテンツや項目をまとめた呼び方です。 |
| 全体図と詳細 | 全体件数は保持。細かい列・項目は通常省略し、データソース等を選んだときに関係する分を図へ加える。式は右側の詳細で確認。 |
| フォーカス | 一致と関連を色分け。「関連だけ表示」で無関係な背景を隠し、オフで戻す。直接参照・所属・到達関係は分ける。 |
| 保存 | 関係全体はファイルとしてR2、最新結果の参照先や実行履歴はデータベースのD1へ保存。取得失敗や不完全な結果では前回成功データを維持。 |
| 更新 | 画面からの更新とクラウドからの呼び出し。毎日9時・日本時間の予約を設定。継続した定時成功は本記事では未確認。 |
| 公開範囲 | 今回の実環境は本人限定。共有する場合は認証と閲覧範囲を確認。ダッシュボードの実画面画像は別APIで取得。 |

図1:今回の構成。ChatGPT SitesとCodexは、この実行経路とは別に、画面と接続・収集コードの制作を支援しました。検索や描画は実装したコードが行い、クラウドの定期タスクは同じ収集処理を呼び出します。AIによる制作支援、Tableauへの接続、利用者への公開範囲を、それぞれ設定・確認します。
Metadata APIはメタデータを取得する窓口です。今回はワークブック、ダッシュボード、シート、データソース、テーブル、列・項目と、取得できる計算式・参照関係を集めました。取得はページに分けて繰り返し、資産と関係の形へ整理。警告・件数・重複・参照先などを検証してから保存します。検索は保存した台帳を使います。リネージュは、データの入力元から利用先へのつながりです。
参考:Metadata APIの利用開始、メタデータモデル、ChatGPT Sitesでの制作
Tableauの検索と、今回の台帳の検索
Tableau Cloudにも標準の検索があります。右上の検索バーに入力すると候補が出るクイック検索では、タイトルや所有者から探せます。Enterで開く全検索では、ビュー・ワークブック・データソースなどの種類で絞り、一覧で確認できます。いずれも、閲覧できる権限の範囲が対象です。
Tableau Catalogが有効な環境では、列・データベース・テーブルへ検索対象が広がり、標準のリネージュ画面から上下流や項目も確認できます。Catalogの利用にはData Managementライセンスが必要です。コンテンツを名前から探すなら標準検索、標準の上下流確認ならCatalogをまず試し、名称と式をまとめて調べる一覧や独自の探索順が欲しいときに、今回のような台帳を検討できます。
参考:Tableauコンテンツの検索、Catalogのリネージュ

図2:Tableau公式ヘルプに掲載された英語UIの全検索画面。上部の検索語と種類の絞り込み、右上の表示切替を確認できます(自社環境の画面ではありません)。出典:Tableauサイトの検索
今回の台帳では、取得した名前と計算式をまとめて検索します。たとえば「売上金額」という名前の項目に加え、式の中でその項目を参照する「売上高」も候補になります。検索結果で式を確かめ、利用先を見て、関連する部分だけ図にする、という調べ方に合わせました。
「売上金額」から、式と利用先をたどる
ここからは、架空の販売分析データを使った実装画面です。まず「売上金額」を検索すると、名称や計算式に一致する3件が見つかります。計算項目の「売上高」を選び、右側の詳細を開きます。

図3:名前と式から探し、詳細で確認する。「売上高」の式は SUM([売上金額]) - SUM([値引金額])。利用先として「月別売上」「商品別売上」の2シートが見つかります。
線の読み方も分けます。式やシートへの直接参照、データソースやワークブックへの所属、途中を省いた到達関係です。たとえばAPIから「列→シート」の依存が返っても、その途中にある計算項目が分かるとは限りません。

図4:項目から式・利用先をたどる概念図。実線は直接の参照・使用、破線の枠は所属を表します。到達関係では途中を省く場合もあります。
図の線は実データの転送を示すものではなく、点の距離や左右の並びも依存の段数とは見なしません。
細かい列・項目は通常の図から省略しています。「販売分析データから図を開く」を押すと、そのデータソースに関係する列・項目が加わり、図は109点になります。ここで右上の「関連だけ表示」をオンにすると、関連する25点だけが残ります。

図5:「関連だけ表示」で、いま確かめたい部分へ絞る。オフにすると109点の背景へ戻り、検索結果3件と選択は保持します。図から隠す操作なので、右側の全体件数は変わりません。
一連の操作をGIFでも見られます。検索、式の確認、所属データソースから図を開く、「関連だけ表示」のオン・オフ、という順です。

このGIFは架空の200アセット・432関係を、実装した画面で操作した7場面です。ダッシュボードは「説明用・画像なし」のアイコンで、顧客データや実環境の画像は使っていません。クリック・タップで原寸GIFを開けます。
見つけた候補は、変更前後の確認へ使えます。たとえば売上金額の定義変更なら、データソース管理者は「売上高」で値引きを差し引く意図が新しい定義でも合うかを確認。ダッシュボード担当者は「月別売上」「商品別売上」を同じ期間・同じ対象条件で変更前後に比較します。これは今後の確認例で、台帳で候補を見つけた後は、実際の式と画面で確かめます。
データソースの種別が多岐にわたる。所有者、サイト別に、dbtと連携して、などなど。
それらも自由。なぜならばTableauのAPI活用とは、そのくらい自由だからです。
ちゃんちゃん!ぜひこのブログをペイと、生成AIに投げてみて、実行してみてくださいね!

