【2025年6月時点】dbt CloudとTableauを連携して出来ることまとめ
どうも、駆け出しカスタマーサクセスマネージャーの玉井です。
実は(?)、dbtとTableauはパートナーシップを結んでいます。
dbt Coalesce 2024ではTableauとの連携機能が紹介され…
Tableau Conference 2025には、dbtが出展していました。
上記の通り、パートナーシップに伴って、色々な公式連携機能が既にあります。しかし、dbtもTableauもデータ分析の世界では非常に人気で、情報も氾濫しているため、「この2つを連携してどんなことができるのか?」という事を正確に把握しているユーザーは意外と少ないんじゃないでしょうか。
というわけで、dbtとTableauを連携して出来ることをまとめてみました。超概略としては以下の通り。
- 現在出来る
- Tableauからdbt Semantic Layerに接続する
- Automatic Exposure in Tableau
- Data health tile
- もうすぐ?
- dbt Semantic LayerのTableau Cloud対応
- dbt MetricsのTableau Pulseメトリクス化
当記事で検証した環境
- dbt Cloud 2週間トライアル環境(Starter)
- DWHはBigQueryを使用
- Tableau Desktop 2025.1.2
現在使える機能
Tableauのデータソースとしてdbt Semantic Layerを使用する
使用条件
- dbt Cloud
- Starter以上
- Tableau
- 2021.1以上
- Tableau Cloudは非対応
概要
おそらくdbt×Tableauの中では一番メジャーかつ目玉機能かと思います。
csvやExcelといったフラットファイルでもなく、DBやDWHでもなく、データとビジネスユーザーの中間に位置する、複雑なデータを理解可能なビジネスの概念に変換・翻訳するレイヤーである、セマンティックレイヤーをBIツールの参照元として扱う時代が、もう来ています。
やってみた
既に以下の記事でちゃんと検証されていますが、一応私もやってみたいと思います。
まず、事前準備として、以下を実施済な状態まで持っていきます(Snowflakeを前提とした内容になっていますが、少しだけクエリの方言に気をつければ、BigQueryでも同様のことができます)。
コネクタの追加
dbt Semantic Layerの設定を終えたら、次はTableauにdbt用のコネクタを追加します(今回はTableau Desktopで検証します)
まずは、ここからtacoファイルをダウンロードし、ページに記載のある指定の場所に配置します。私はmacOSなので、/ユーザー/[ユーザー名]/ドキュメント/マイ Tableau リポジトリ/コネクタ
に配置しました。
JDBCドライバの追加
実は上記のコネクタだけでは不十分で、ここからダウンロードしたJDBCドライバも必要です。配置場所は↑のExchangeのページに記載されています。私は~/Library/Tableau/Drivers
に配置しました。
Tableau Desktopで繋いでみる
コネクタとドライバを適切な場所に配置できている状態で、Tableau Desktopを起動すると、以下のように、接続画面にdbt Semantic Layerが出てきます。
こちらを選択すると、dbt Semantic Layerの接続情報を入れる画面が出てきます。入力する値はdbt Semantic Layerの設定画面に記載されています。画面で表現すると、以下の通りです。
正常に読み込みが完了すると、以下のようになります。
本名が出ているのは気にしないでください
ここで、通常のデータソースとは異なる特徴があることがわかります。dbt Semantic LayerをTableauで接続した場合、テーブルは「ALL」の1つだけとなっています[1]。そして、各カラム(ディメンションとメジャーに、dbt側で記述されているもの(entities, dimension, metrics)が表示されています。
ここらへんからちょっと頭がこんがらがってきますが、「dbtのentitiesとdimension」として定義されているものは「Tableauのディメンション」として扱われており、「dbtのmetrics」は「Tableauのメジャー」として扱われるようになっているようです(dbt側のコードは上記のクイックスタートまんまなので、気になる方は見比べてみてください)。
ここまでくれば、当然Vizを作ることもできます。
我ながらなんてセンスの無いダッシュボードなんだ…
注意点(制約など)
この機能は現在ベータ版ということもあり、まだまだ制約や出来ないことも多いです。詳しくは公式ドキュメントを確認してほしいところですが、例えば抽出は非対応です。
また、計算フィールドについても、通常通りに行かないことがあります。
We can support calculated fields for creating parameter filters or dynamically selecting metrics and dimensions. However, other uses of calculated fields are not supported.
例えば、日付の計算について、普通はこのように出来ますが…。
dbt Semantic Layerの場合、以下のようにエラーとなります。
ただ、これは別に私は構わないと思っています。なぜなら、せっかくdbt(及びdbt Semantic Layer)を使っているのだから、計算フィールドを使わないと出せないようなデータは、全てdbt側で用意すればいいからです(というかそうするべき)。ビジネス上必要な各種計算はアナリティクスエンジニアが定義し、データアナリストはBIツールでそれを分析する、という役割分担がスムーズに行えると思います[2]。
Automatic exposure
使用条件
- dbt Cloud
- Enterprise以上
- Tableau
- 特に無し(?)
概要
そもそも、まず「Exposureって何やねん」という話ですが、これをdbt側で記述しておくことで、**dbtで生成しているモデルが、下流(BIツールなど)でどう使われているか?**がわかるようになります。
んで、「それがTableauとAutomaticで連携するってのはどういうことやねん」という話ですが、この機能を使うことで、「dbtのこのモデルは、Tableauのこのダッシュボードで使われています」という情報がdbtに自動連携されるようになるって感じです。
https://docs.getdbt.com/docs/cloud-integrations/downstream-exposures-tableau
dbtでデータモデルを開発しているアナリティクスエンジニアからすると、自分が開発しているモデルが、Tableau側でどう使われているかが常にわかるようになるため、Tableau側の要望やトラブルシュート等がとてもやりやすくなると思われます。なので、どちらかというと、Tableauユーザーよりも、dbtユーザー側のための機能かもしれません。
やってみ…ることができない
えー、はい…、この機能は上記通り「dbt Enterprise以上」じゃないと使えないため、私のトライアル環境では使うことが出来ません。
以下の記事でしっかり検証されているため、こちらをお読みください。
Data health tileをダッシュボードに埋め込む
使用条件
- dbt Cloud
- Enterprise以上
- Tableau
- 特に無し(?)
概要
TableauのダッシュボードにData Health tileを埋め込むことが出来ます。
…………
はい、すみません。「Data health tileって何やねん」って話ですよね。はい。dbtのMetricsの元になっているデータの鮮度、品質、リネージ(データがどこから来てどのように加工されたか)をひと目で把握できるタイルです。
https://docs.getdbt.com/docs/explore/data-tile
Tableauあるあるとして、更新ボタンを連打しまくって「いま俺は最新の状態のダッシュボードを見ているぜ」と確信するが、実は裏側のデータ元は古いままだった…というものがあります。[3]
Data health tileを埋め込んでおけば、自分が見ているダッシュボードの各種数値は間違いなく新しい!正しい!どこから来たデータかわかる!という状態になることができます。
やってみ…ることができない
えー、はい…、この機能は上記通り「dbt Enterprise以上」じゃないと使えないため、私のトライアル環境では使うことが出来ません(2回目)
Tableauもdbt CloudのEnterpriseももってるよ!という方、ぜひお試しください…。
間接的な連携
dbt JobとTableau抽出更新タスクの連携
使用条件
- dbt Cloud
- Starter以上
- Tableau
- 特に無し
概要
dbtのジョブが終了した(=データモデルが作成・更新された)タイミングで、そのデータを元にした抽出タスクを連動して実行させる、という連携が公式で紹介されています。
データパイプライン側の更新タイミングとTableauの抽出更新タイミングの調整は従来より面倒なテーマの一つですが、dbtから抽出ファイルまで一気通貫で更新をかけることができるのはかなり良いのではないでしょうか。
ただ、dbtとTableauだけでは完結せず、Zapierも併用する必要があります(だから間接的な連携扱いにしています)。また、dbt WebhookやTableau REST APIなんかも使うため、実装自体にそこそこのITスキルが必要な点も注意です(まあ、今の時代、生成AIでどうにでもなるとは思いますが)。
将来的にリリースされそうな機能
現時点で出来ることは上記の通りですが、dbtとTableauのコラボレーションがこれで終わるはずはなく、まだまだ実装予定の機能がありそうです。
オフィシャルの情報としては、当記事冒頭にリンクを載せているこれくらいしかありません。
この記事では、まさにdbtとTableauを連携してできることがまとまって書かれていますが、この記事で「Coming Soon」と書かれているもので、現在でも未実装のものについて、見てみましょう。
dbtのMetricsをそのままTableau Pulseにもってくる?
Through our one-click Publish-to-Pulse integration, users in dbt can instantly create a trusted Pulse Metric that is always up to date, and always connected to the dbt Metrics Layer.
dbt側のどこか(CatalogのMetricsページかな?)にボタンが出来て、それを押すと、そのMetricsがそのままTableau Pulseに取り込まれる…みたいな機能でしょうか。dbtのMetricsはその性質上、既に集計は終わっているものが多いので、可視化であれやこれや使うより、Tableau Pulseで見るようにした方が使いやすそうではあります。
Tableau Cloudでもdbt Semantic Layerと連携できるようになる?
dbt Cloud Semantic Layer Connector to Tableau Cloud
Tableau PulseがそもそもTableau Cloudでしか使えない機能なので、上記の機能を実装する過程で、ほぼ確実にdbt Semantic LayerとTableau Cloudの連携は実現されると思います。
SlackやMS Teamsと連携するようになる?
A Slack or Teams user will be able to use the Tableau app to surface Pulse Metrics, search for unpublished dbt metrics, and interact with the app to one-click publish dbt metrics to Pulse.
いまいちイメージが湧きませんが、dbtのMetricsやTableau Pulseを、色々なコミュニケーションツール上で同時に見れるようになる…んですかね…。それぞれ個別に連携することは既にできるはずなので、Slack上である数値を見たら、それがdbtとTableauでそれぞれどういう扱いなのかわかるようになる…とか…?
おわりに
ちょっとポエミーな感じになりますが…
「Tableauの可視化するデータがセマンティックレイヤーになる」というのは、(これが今後メジャーになる場合)個人的には結構BIツール(特にTableau)の考え方みたいなのがガラッと変わるような気がしました。
従来、Tableauが接続するデータというのは、Excelファイルであれ、データウェアハウスであれ、基本的には「データそのもの」でした。なので、そのデータを使って何らかの計算・集計をしたい場合は、Tableau側で行う(もしくはデータウェアハウス側の人に頼む)のが普通でした。
しかし、セマンティックレイヤーの登場したことで、「(ビジネス上必要な)集計がなされたデータがもうそこに在る状態」となり、Tableauはそれを可視化するだけとなります[4]。ややこしい計算フィールドは減り、各種パラメータやアクションを豊富に使った、純然たるBIに取り組むことができます。
ましてや、dbtはデータウェアハウス上のデータを効率的に変換(Transform)するツールです。データウェアハウスを整えるツールと言ってもいいでしょう。その整ったデータの上に構築されるセマンティックレイヤーは、今までのデータウェアハウス上に入っているデータの何倍も正確でわかりやすいデータになっていると思います。それをTableauで美しくビジュアライゼーションしてあげれば、相当質の高いダッシュボードができるのではないでしょうか。
そういうわけで、私はdbtとTableauは、一見離れているようで、実は非常に相性の良いツールだと思うのです。
Discussion