Snowflake

TableauとSnowflakeを接続する方法

こんにちは、中村です。

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

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

目次

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

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

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

    -- 1. ユーザー作成
    CREATE USER tableau
     Type = SERVISE
      PASSWORD = '************'
      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

    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の接続方法について解説しました。

    個人的には特定のIPだけで接続するならPAT、そうでなければOAuthを使うのが良いのではないかと思いました!

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

ピックアップ記事

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

関連記事

  1. Tableau

    【図解】Tableau Desktop 2020.3で「計算式」「予測機能」など大幅アプデ!

    Tableau Desktop 2020.3の7つの新機能【注目度順】…

  2. Tableau

    Tableau Bridgeをザックリ理解する

    Tableau Bridge(タブローブリッジ)とはTableau …

  3. DBエンジニアが学ぶSnowflake

    【DBエンジニアが語るSnowflake】②このロールがすごい!!!

    こんにちは。喜田と申します。「DBエンジニアが学ぶSnowflake…

  4. Tableau

    Tableau Tips〜INDEX関数〜

    はじめに今回紹介するINDEX関数はTableauの関数の中でも非常…

  5. Cortex

    SnowflakeのAI_SQLと再帰CTEで遊ぶ(SnowVillage AI-DataCloud…

    こんにちは、喜田です。突然ですが、Snowflakeのコミュ…

  6. Snowflake

    第14回関西DB勉強会-Snowflake Summit参加報告-

    2024年6月22日、恒例の関西DB勉強会(第14回)に参加させてい…

カテゴリ
最近の記事
  1. TableauとSnowflakeを接続する方法
  2. 【dbts25】Snowflake×PostgreSQLのニ…
  3. TROCCO dbt連携編
  4. KARTEの「フレックスエディタ(β)」登場!ノーコードでこ…
  5. dbt Projects on Snowflake使ってみた…
  1. IT用語集

    ユーザビリティ(Usability)って何?
  2. IT用語集

    サーバー(Server)って何?
  3. Mouseflow

    Mouseflowを採用するWebサイトが10万を突破!
  4. Squadbase

    SquadbaseとStreamlitでお手軽アプリ開発
  5. Python

    わかりやすいPyTorch入門⑥(RNN:再帰型ニューラルネットワーク)
PAGE TOP