【Snowflake × Tableau】TableauからSnowflakeにあるセマンティックビューへ接続する方法と制約
はじめに
以前、セマンティックビューについての検証の記事を書きました。
頑張ってセマンティックビューを作ってみたので、折角だしTableauから繋いでみれないかな~なんて思う人は少ないとは思いますが、私はその少数派の1人だったのでやってみました。
事前準備
この記事では、以下の準備が完了している前提でTableauとセマンティックビューとの接続方法を解説していきます。
- Snowflake上にセマンティックビューを作成済み
- TableauとSnowflakeの接続設定が完了している
今回はSnowflake上に作成したSAMPLE_SUPERSTOREというセマンティックビューをTableauから接続していきます。
中身は「SAMPLESUPERSTORE」テーブルと「SUPERSTOREMAKER」テーブルを製品コードでリレーションを組んだビューです。

カスタムSQLでTableauからセマンティックビューを接続
さて、TableauとSnowflakeを接続して、データソース選択の画面にたどり着きましたら、カスタムSQLを使ってセマンティックビューとの接続を行っていきます。

セマンティックビューでは、通常のSELECT分とは少し構文が違うので注意が必要です。
その辺はGPTなりなんなりに詳しく聞いてみると教えてくれます。
SELECT *
FROM SEMANTIC_VIEW(
PUBLIC.SAMPLE_SUPERSTORE //スキーマ名.ビュー名
DIMENSIONS SAMPLESUPERSTORE.PRODUCT_CODE //DIMENSIONS テーブル名.カラム名
FACTS SAMPLESUPERSTORE.SALES_AMOUNT //FACTS テーブル名.カラム名
)
さて、そんな訳で無事にTableauからSnowflakeのセマンティックビューへ接続できました。

ちゃんとデータも入っています。

現時点での制約
これは、TableauのカスタムSQLに限らず、Snowflake上でクエリする場合でも同じなのですが、セマンティックビューのファクトとディメンションの両方を指定する場合、クエリで使用されるすべてのファクトとディメンションが同じ論理テーブルで定義されている必要があります。
公式ドキュメント
つまり、今回のケースで言うと、「SAMPLESUPERSTORE」と「SUPERSTOREMAKER」の両方からファクトやディメンションを指定することはできないということです。
実際にSnowflakeでもそういう風に怒られます。

ちなみにディメンションだけなら大丈夫。(恐らくファクトだけでも大丈夫)

終わりに
今回は、TableauからSnowflakeのセマンティックビューに接続してみました。
1つの論理テーブルからしかカラムを取得できないので、普通にテーブルに接続した方が早いといえば早いのですが、とりあえず繋ぐことはできる、ということが分かって良かったです。
今後コネクタ等がリリースされてもっと簡単に接続できるようになることを期待しましょう!