Snowflake

TableauとSnowflakeを接続する方法

こんにちは、中村です。

SnowflakeとTableauの接続に戸惑ったので今回、記事にすることにしました。

同じように躓いている方、何を選ぼうか迷っている方はぜひ参考にしていただけると幸いです。

目次

  • 設定
  • 認証方法
  • まとめ
  • 設定

    まずはSnowflake上でTableau用のシステムユーザーを作成しましょう

    SnowsightのSQLで以下を実行してください。

    -- 1. ユーザー作成
    CREATE USER tableau
     Type = SERVISE
      DEFAULT_ROLE = 'tableau_role'
      COMMENT = 'Tableau専用ユーザー';
    
    -- 2. ロール作成
    CREATE ROLE tableau_role;
    
    -- 3. ユーザーにロールを付与
    GRANT ROLE tableau_role TO USER tableau;
    

    続いてTableau接続用のODBCドライバーをこちらからダウンロードしましょう

    Tableauを起動して、データソース画面からサーバーへ>その他を選択

    ここで接続先一覧が表示されるのでSnowflakeを選択しましょう。

    すると下の画像のような画面が表示されるので、各項目を入力していきます。役割(ロール)とウェアハウスはオプションなので、今回は入力をパスします。

    サーバー欄にはSnowflakeのURL(*******.snowflakecomputing.com)を入力します。
    Snowsightから自分のアカウントをクリック、アカウントからアカウントの詳細を表示するをクリック

    アカウント/サーバーURLをコピーして入力しましょう。

    認証方法

    認証方法は4種類あります。
    ・OAuth
    ・ユーザー名とパスワード(非推奨)/PAT
    ・Oktaのユーザー名とパスワード
    ・キーペア

    今回はOkta以外の3つを紹介します。

    OAuth

    注意:今回作成したサービスタイプのユーザーでは接続できません、MFA認証をした通常のユーザーでの接続方法になります。

    SnowflakeのSQLワークシートから次を実行してください。

    USE ROLE ACCOUNTADMIN;
    
    --Tableau Desktopの場合
    CREATE OR REPLACE SECURITY INTEGRATION tableau_desktop_oauth
      TYPE = OAUTH
      ENABLED = TRUE
      OAUTH_CLIENT = TABLEAU_DESKTOP
    ;
    
    --Tableau Server/Cloudの場合
    CREATE OR REPLACE SECURITY INTEGRATION tableau_Server_oauth
      TYPE = OAUTH
      ENABLED = TRUE
      OAUTH_CLIENT = TABLEAU_SERVER
    ;

    実行が確認出来たら、Tableauで認証をOAuthにしてサインイン

    Webブラウザが起動してユーザー名とパスワードが求められるので、設定通り入力してください

    入力できたら許可を選択して接続完了です。

    ユーザー名とパスワード

    設定したユーザー名とパスワードを入力したら接続完了です。

    ユーザー名:tableau
    パスワード:******** 

    注意!実行のたびにユーザー名とパスワードの入力が求められるので、この方法はあまり推奨できません!

    PAT

    SnowsightのSQLワークシートで以下を実行

    --tableau_net_policyというポリシーと、tableau_tokenというトークンを作成する
    
    USE ROLE SECURITYADMIN;
    
    --許可するIPアドレスを入力
    CREATE NETWORK POLICY IF NOT EXISTS tableau_net_policy
        ALLOWED_IP_LIST = ('127.0.0.1','xx.xx.xx.xx');  
    --ユーザーにネットワークポリシーを適用
    ALTER USER tableau SET NETWORK_POLICY = tableau_net_policy;
    
    --トークンの作成と有効期限の設定
    ALTER USER tableau ADD PROGRAMMATIC ACCESS TOKEN  tableau_PAT_token
      days_to_expiry = 365 -- アクセストークンの有効期限:最大365日
      role_restriction = tableau_role; 

    すべて実行すると最後の実行で下のような結果が出力されるので、赤枠内のトークンをコピー

    認証でユーザー名とパスワードを選択してユーザー名と先ほどのトークンをパスワードに入力すると接続完了

    ユーザー名:tableau
    パスワード:eyJraWQi******** (PATで発行されたトークンの値)

    キーペア

    ターミナルから以下を実行

    #秘密鍵の作成(パスワード作成を求められる)
    openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 des3 -inform PEM -out snowflake_rsa_key.p8 
    
    #公開鍵の作成
    openssl rsa -in snowflake_rsa_key.p8 -pubout -out snowflake_rsa_key.pub

    作成された秘密鍵、公開鍵は実行したディレクトリに作成されます。

    続いてSnowsightのSQLワークシートで以下を実行

    --tableauというシステムユーザーがすでにあると仮定
    
    --Snowflakeユーザーに公開キーを割り当てる(公開鍵snowflake_rsa_key.pubの中身を入れる)
    ALTER USER tableau SET RSA_PUBLIC_KEY='MIIBIjANBgkqh...';
    
    --ユーザーの公開キーのフィンガープリントを検証する
    DESC USER tableau;
    SELECT SUBSTR((SELECT "value" FROM TABLE(RESULT_SCAN(LAST_QUERY_ID()))
      WHERE "property" = 'RSA_PUBLIC_KEY_FP'), LEN('SHA256:') + 1);

    もう一度ターミナルに戻って下のコマンドを実行

    openssl rsa -pubin -in snowflake_rsa_key.pub -outform DER | openssl dgst -sha256 -binary | openssl enc -base64

    検証で出力されたものと一致していれば成功です。

    Tableauに戻って認証でキーペアを選択し、ファイルの選択と秘密鍵のパスワードを入力して完了

    まとめ

    今回はTableauとSnowflakeの接続方法について解説しました。

    個人的にはサービスタイプのユーザーは基本的にPAT、こだわりがあればキーペアを使うのが良いのではないかと思いました!

【dbts25】Snowflake×PostgreSQLのニュースを読む!登壇資料前のページ

AWS発のAIエージェントIDE「Kiro」を使用した仕様駆動開発を触ってみた。次のページ

ピックアップ記事

  1. 最速で理解したい人のためのIT用語集

関連記事

  1. Snowflake

    Snowflake無料トライアルの始め方

    こんにちは、中村です。意外にも弊社ブログで記事がなかったので、今回は…

  2. Snowflake

    SnowPro Associate: Platform 合格体験記

    こんにちは、中村です。先日、SnowPro Associate: P…

  3. Tableau

    Tableauで検証?Wiiisdomでよくね?

    みなさんこんにちは。エクスチュアの大吉です。Tableauなどのダッ…

  4. Snowflake

    SnowflakeのHybrid Tableのマニュアルを読み解く

    こんにちは、喜田です。実はこれまでSnowflake…

  5. Tableau

    Tableau:分かりやすいLOD-FIXED編

    こんにちは、エクスチュアの渡部です。LODブログ第二弾です。今回は…

  6. Tableau

    Tableau:分かりやすいLOD – INCLUDE編

    エクスチュア渡部です。今回はLODブログの第3弾です。INCLUD…

カテゴリ
最近の記事
  1. Adobe WebSDK FPIDでECIDの復元を検証
  2. dbt Projects on Snowflakeで作成した…
  3. Dataformでtype:’increment…
  4. dbt Projects on SnowflakeをTASK…
  5. AWS発のAIエージェントIDE「Kiro」を使用した仕様駆…
  1. Google Analytics 4

    【GA4/GTM】dataLayerを使ってカスタムイベントを発生させてみよう
  2. ブログ

    インドネシアのデジタルマーケティング
  3. ブログ

    ダッシュボードに使うべき10のグラフ③
  4. Snowflake

    Snowflake Summit 2025 参加レポート【Day1】
  5. 海外カンファレンス

    Adobe Summit 2018 参加レポート(M)
PAGE TOP