
TableauからSnowflakeへの接続について
はじめに
こんばんは!Hirokiと申します。
今回はTableauからSnowflakeへの接続手順をまとめました。
SnowflakeとTableauを組み合わせる場合に活用できればと思っています。
Snowflake側で必要な作業
今回は以下3オブジェクトを作成します。
ウェアハウスの作成
ロールの作成
ユーザの作成
なおSnowflakeでは基本的には大文字でオブジェクトが作成されます。
ダブルクォーテーションで囲うことで大文字・小文字を区別することができますが、毎回囲う必要があります。今回は簡略化のため、オブジェクト名は大文字で統一しています(TABLEAU_XXという名前でオブジェクトを作成)
ウェアハウスの作成
まず最初にウェアハウス(※)を作成します。
(※)データ処理やクエリ実行を行う仮想的な計算リソース
今回は最小スペックのXSMALLで作成しています。
CREATE WAREHOUSE IF NOT EXISTS TABLEAU_WAREHOUSE WAREHOUSE_SIZE=XSMALL INITIALLY_SUSPENDED=TRUE AUTO_SUSPEND=60;
ロールの作成
次にロール(※)を作成します。
(※)ユーザーやオブジェクトへのアクセス権限を束ねて管理
ロールにはTableau側で実行を許可する権限を付与します。
今回は事前に作成したウェアハウスに関する権限及びSnowflake内のサンプルデータに関する権限を付与しています。
CREATE ROLE TABLEAU_ROLE;
GRANT USAGE ON WAREHOUSE TABLEAU_WAREHOUSE TO ROLE TABLEAU_ROLE;
GRANT OPERATE ON WAREHOUSE TABLEAU_WAREHOUSE TO ROLE TABLEAU_ROLE;
GRANT IMPORTED PRIVILEGES ON DATABASE SNOWFLAKE_SAMPLE_DATA TO ROLE TABLEAU_ROLE;
GRANT ROLE TABLEAU_ROLE TO ROLE SYSADMIN;
ユーザの作成
最後に接続用のユーザを作成します。「TYPE = SERVICE」を指定することで、
サービス接続用のユーザが作成できます。
これにより、以下2点のメリットがあります。セキュリティを保ちながら、サービス利用できると考えています。
Snowflakeの管理コンソールであるSnowsightには接続できない(万が一ユーザ情報が漏洩しても、管理コンソールには接続できない)
Snowflake全体にMFAを強制する認証ポリシー(AUTHENTICATION POLICY)が設定されていても、MFAなしでログイン可能なユーザを作成できる
CREATE USER IF NOT EXISTS TABLEAU_USER
TYPE = SERVICE,
DEFAULT_ROLE = TABLEAU_ROLE,
DEFAULT_WAREHOUSE = TABLEAU_WAREHOUSE,
RSA_PUBLIC_KEY = "{公開鍵}";
なお鍵の作成はSnowflakeの以下マニュアルに記載があります。
https://docs.snowflake.com/ja/user-guide/key-pair-auth
最後に作成したユーザにロールを付与して、Snowflake側の準備は完了です。
GRANT ROLE TABLEAU_ROLE TO USER TABLEAU_USER;
Tableau側で必要な作業
注意事項
キーペア認証は、Tableauバージョン 2024.3から可能となった機能です。
2024/11/26時点だといくつか制約があるようでした。
以下のような制約があるので今回の作業はTableau Desktopから実施しています。
Snowflake キーペア認証を使用したワークブックのパブリッシュは、Web 作成ではサポートされていません。Tableau Desktop を使用してワークブックを作成し、それを Tableau Cloud にパブリッシュする必要があります。
注: キーペア認証は、バージョン 2024.3 以降の Tableau Desktop および Tableau Cloud で利用できます。Tableau Server では、今後のリリースで利用可能になる予定です。
ドライバのインストール
まずはTableau Desktopを開き、Snowflakeのコネクタを選択します。

初回はドライバーが必要となるので、以下からドライバーをダウンロード・インストールします。
https://www.tableau.com/ja-jp/support/drivers?edition=pro&lang=ja-jp&platform=mac&cpu=64&version=2024.3&__full-version=20243.24.1112.0850#snowflake

接続情報の入力
ドライバの準備ができると、以下画面が表示されるので接続に必要な情報を入力します。
「サーバー」欄は接続したいSnowflakeアカウントのURLを指定
「認証」欄は「キーペアを使用したサインイン」を指定
「ユーザ名」欄は事前にSnowflakeで作成したユーザ名を指定(今回はTABLEAU_USER)
「秘密キーファイル」欄はユーザ作成時に準備した秘密鍵を指定

接続が完了すると以下のような画面が表示されます。

データ接続
後はウェアハウス・データベース・スキーマを選べば、データが表示されます。ここまでくれば、必要な情報を選びTableauで可視化が可能となります。

まとめ
直近Tableauが鍵認証に対応したということもあり、Snowflake側のサービスユーザと組み合わせて接続ができました。
Tableau CloudのWeb作成で利用できれば、より便利になるので今後のアップデートに期待しています!