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. Tableau

    Tableau:抽出を含んだワークブックを10.4以下にダウングレードする

    こんにちは、エクスチュアの渡部です。Tableauの小ネタです。…

  2. Tableau

    Tableau-フィルタの連動

    こんにちは!インターン生の市川です。前回の記事から日が経ってしまいま…

  3. Tableau

    Tableauで見たい期間のみの昨年対比推移グラフを作る方法

    「ある数値の推移に加えて、昨年対比の推移も同時に表示したい」というの…

  4. Tableau

    最年少DATA Saberになって感じたこと〜Tableau〜

    【目次】・自己紹介・DATA Saberとは・DATA Sabe…

  5. Cortex

    Cortex Analystを使ってみた

    こんにちは、中村です。皆さんはCortex Analystを使ってい…

カテゴリ
最近の記事
  1. Looker Studioで日付フィルターの開始日・終了日の…
  2. Streamlitでdbt-elementary風ダッシュボ…
  3. Adobe WebSDK FPIDでECIDの復元を検証
  4. dbt Projects on Snowflakeで作成した…
  5. Dataformでtype:’increment…
  1. Adobe Analytics

    はじめてのAdobe Analytics実装
  2. IT用語集

    OS(Operating System)って何?
  3. IT用語集

    カスタマージャーニー(Customer Journey)って何?
  4. Google Apps Script(GAS)

    GASを利用してWebスクレイピングをやってみよう②
  5. YOTTAA

    YOTTAA:新機能「Anomaly AI」のご紹介
PAGE TOP