Snowflake

この記事では、Tableau を Snowflake データ ウェアハウスに接続し、データ ソースを設定する方法について説明します。

: キーペア認証は、バージョン 2024.3 以降の Tableau Desktop および Tableau Cloud で利用できます。Tableau Server では、今後のリリースで利用可能になる予定です。

: Snowflake キーペア認証を使用したワークブックのパブリッシュは、Web 作成ではサポートされていません。Tableau Desktop を使用してワークブックを作成し、それを Tableau Cloud にパブリッシュする必要があります。

はじめる前に

開始する前に、次の接続情報を収集します。

  • 接続するサーバーの名前
  • 認証方法:
    • OAuth: IDP からフェデレーションを有効にする場合は、この方法を使用します。
    • ユーザー名とパスワード: ユーザーの認証資格情報を Snowflake に保存する場合は、この方法を使用します。
    • Okta ユーザー名とパスワード: Okta を使用して認証を管理する場合は、この方法を使用します。
    • キーペア認証: セキュリティ接続をさらに強化するために、パブリック キーとプライベート キーのペアの認証資格情報を使用します。
  • 選択した認証方法に必要なサインイン認証資格情報。
    : キーペア認証を使用している場合は、OpenSSL バージョン 3.x 以降を使用してキーを作成する必要があります。
  • (オプション) Tableau が接続するたびに実行する初期 SQL ステートメント。
  • (オプション) この接続で使用するカスタム ドライバー パラメーターまたは新しい既定の VARCHAR サイズ。

: Tableau Cloud でキーペア認証を使用するには、共有のためにワークブックをパブリッシュする前に、Tableau Cloud に認証資格情報を保存する必要があります。詳細については、「キーペア認証のための Snowflake の設定」を参照してください。

必要なドライバー

このコネクタにはデータベースとやり取りするためのドライバーが必要です。ドライバーがコンピューターにインストールされていない場合、Tableau によって「ドライバー ダウンロード」(新しいウィンドウでリンクが開く)ページへのリンクを含むメッセージが接続ダイアログ ボックスに表示されます。このページで、ドライバーのリンクとインストール手順を確認できます。

注: Snowflake でキーペア認証を使用するには、バージョン 3.4.0 以降の ODBC ドライバーを Snowflake からインストールする必要があります。

接続してデータ ソースを設定する

接続先として Snowflake を選択すると、3 つのタブで構成されるポップアップ メニューが表示されます。[全般] タブをクリックして、[サーバー]、[ウェアハウス]、[認証タイプ] を選択します。オプションで [初期 SQL] を使用すると、すべての接続の開始時に SQL コマンドを実行できます。詳細については、「初期 SQL の実行」を参照してください。オプションの [詳細] タブでは、カスタム ドライバー パラメーターと既定の VARCHAR サイズを追加できます。

Tableau と Snowflake 間の接続に OAuth を構成する方法については、「Snowflake 接続の OAuth の構成(新しいウィンドウでリンクが開く)」および「Snowflake の外部 OAuth」を参照してください。

Tableau のデータへの接続

  1. [接続] 画面の [サーバーへ] で、[詳細] を選択し、[Snowflake] を選択します。
  2. [全般] タブで、接続するサーバー名を入力します。
  3. (オプション) [ロール][ウェアハウス] を入力します。
  4. 次の中から使用する認証方法を選択します: [ユーザー名とパスワード][Okta ユーザー名とパスワード][OAuth を使用してサインイン]、または [キーペアを使用してサインイン]
  5. (オプション) すべての接続の開始時に SQL コマンドを実行する場合は、[初期 SQL] を選択します。詳細については、「初期 SQL の実行」を参照してください。
  6. (オプション) Tableau Desktop および Tableau Server の場合は、[詳細] タブでこの接続に使用するカスタム パラメーターを入力します。(Tableau Cloud では入力できません)
  7. 選択した認証方法のログイン ステップを完了します。
    • OAuth を使用したサインイン:
      1. [サインイン] をクリックします。
      2. 開いた Web ページでユーザー名とパスワードを入力して [ログイン] を選択し、Snowflake にログインします。または、Snowflake が SSO をサポートするように構成されている場合は [シングル サインオン] を選択します。
      3. [OK] をクリックし、Snowflake データにアクセスするための許可を確認します。
    • ユーザー名とパスワード:
      1. ユーザー名と任意でパスワードを入力します。
      2. [サインイン] をクリックします。
    • Okta のユーザー名とパスワード:
      1. ユーザー名と任意でパスワードを入力します。
      2. 任意の SAML IdP (Okta サーバーの URL) を入力します。
      3. [サインイン] をクリックします。
    • キーペアを使用したサインイン
      1. [サーバー] で、Snowflake サーバーのアドレスを入力します。
      2. [ウェアハウス] と任意で [ロール] を入力します。
      3. [認証][キーペアを使用してサインイン] を選択します。
      4. これらのキーに関連しているユーザー名を入力します。
      5. [プライベート キー ファイル] で、プライベート キーを含む .p8 ファイルを参照します。
      6. (オプション) パスワードで保護されている場合は、プライベート キー ファイルのパスワードを入力します。
  8. 次に、[データ ソースの設定] の手順に従います。
  9. Tableau が接続できない場合は、認証資格情報が正しいことを確認します。引き続き接続に失敗する場合は、コンピューターにおけるサーバーの検出に問題があります。ネットワーク管理者またはデータベース管理者に連絡してください。

アクセス トークンのタイムアウト: アクセス トークン TDC を常に検証する

Snowflake のアクセス トークンは 10 分で有効期限が切れます。抽出更新のプロセスによっては、アクセス トークンの有効期限が切れ、ジョブの途中で新しい接続が確立されます。この問題に対処するために、Tableau 2024.2 以降ではデフォルトで有効になる新しい機能を追加しました。古いリリースでこの機能を有効にするには、次の TDC を使用します。

<connection-customization class='snowflake' enabled='true' version='10.0'>
    <vendor name='snowflake' />
    <driver name='snowflake' />
    <customizations>
        <customization name='CAP_OAUTH_VALIDATE_ALWAYS' value='yes'/>
    </customizations>
</connection-customization>

この TDC は、Tableau リポジトリのデータ ソース フォルダーに含めることで、Tableau Desktop または Tableau Server で使用できます。Tableau Cloud の場合は、Bridge を使用してそこから接続すると、カスタム TDC を構成できます。詳細については、「接続のカスタマイズと微調整」を参照してください。

注: 埋め込み TDC はフローではサポートされません。

ドライバー パラメーターを使用した接続のカスタマイズ

Snowflake コネクタで行われた接続を変更するには、[詳細] タブの接続文字列にドライバー パラメーターを追加します。

注: Tableau が生成するドライバー パラメーターは変更できません。パラメーターの追加のみを行えます。

たとえば、次の構文では、no_proxy の値が満たされず、ホスト名がプロキシ サーバーをバイパスできるものである場合に使用するプロキシ サーバーを指定しています。

Proxy=http://proxyserver.company:80;no_proxy=.trustedserver.com;

その他のカスタム ドライバー パラメーターの例については、「Snowflake にプロキシを使用するを参照してください。

[Default VARCHAR size (bytes) (既定の VARCHAR サイズ (バイト))] フィールドには VARCHAR の別のサイズを入力することもできます。このフィールドの使用方法とパフォーマンスへの影響の詳細については、Snowflake ODBC ドキュメントを参照してください。

注: データ ソースに埋め込まずにカスタマイズする場合は、Windows のレジストリでパラメーターを構成できます (「構成パラメーター」としてマークされているパラメーターのみが使用可能です)。ドライバー パラメーターについての詳細は、Snowflake のウェブサイトの「ODBC 構成と接続パラメーター」を参照してください。

データ ソースの設定

データ ソース ページで次の手順を行います。

  1. (任意) ページ上部にある既定のデータ ソース名を選択し、Tableau で使用する一意のデータ ソース名を入力します。たとえば、データの他のユーザーが、どのデータ ソースに接続するか推測するのに役立つ命名規則を使用します。

  2. [ウェアハウス] ドロップダウンからウェアハウスを選択するか、テキスト ボックスを使用してウェアハウスを名前で検索します。

    注: 空白のままにしてウェアハウスを選択しない場合、Tableau はデフォルトの Snowflake 仮想ウェアハウスを使用します。

    詳細については、「Snowflake のデフォルト仮想ウェアハウス」を参照してください。

  3. [データベース] ドロップダウンからデータベースを選択するか、テキスト ボックスを使用して名前でデータベースを検索します。
  4. [スキーマ] ドロップダウンからスキーマを選択するか、テキスト ボックスを使用して名前でスキーマを検索します。
  5. [表] で、表を選択するかテキスト ボックスを使用して、名前で表を検索します。
  6. 表をキャンバスにドラッグしてから、シート タブを選択して分析を開始します。

: キーペア認証を使用してワークブックをパブリッシュする場合は、[ワークブックのパブリッシュ] ウィンドウの [データ ソースの管理] セクションで適切な認証タイプを選択してください。

Mac でのサインイン

Mac で Tableau Desktop を使用する場合、サーバー名を入力して接続するときに、mydb または mydb.test などの相対ドメイン名の代わりに mydb.test.ourdomain.lan などの完全修飾ドメイン名を使用します。

また、Mac コンピューターの [検索ドメイン] リストにドメインを追加し、接続する際には、サーバー名のみを提供する必要があります。[検索ドメイン] リストを更新するには、[システム環境設定] > [ネットワーク] > [詳細] に移動し、[DNS] タブを開きます。

Snowflake のデフォルト仮想ウェアハウス

Snowflake データ ソースを作成するときは、Snowflake ウェアハウス (計算リソース用) と Snowflake データベース (データ リソース用) の両方を作成しています。ウェアハウスとデータベースの両方に、アクセスするためのパーミッションが必要です。各ウェアハウスとデータベースに対する権限がある場合は、必要な計算能力に応じて、異なるウェアハウスを使用して同じデータベースにアクセスできます。

データ ソースを作成するときに、ドロップダウン リストからウェアハウスを選択するオプションがあります。空白のままにしてウェアハウスを選択しない場合、Tableau は既定の Snowflake 仮想ウェアハウスを使用します。その後、そのデータ ソースまたはワークブックをパブリッシュすると、ユーザーが接続したとき、Tableau はそのユーザーのデフォルトの Snowflake 仮想ウェアハウスを使用します。

Tableau がデフォルトのウェアハウスを使用して Snowflake データ ソースからワークブックを開くことができるように、各ユーザーにデフォルトのウェアハウスを割り当てる必要があります。

Snowflake にプロキシを使用する

プロキシを介して Tableau から Snowflake に接続できます。バージョン 2019.4 以降の Tableau を使用している場合、コネクタ ダイアログで [詳細] タブに必要なパラメーターを入力することによって設定できます。

例:

proxy=http://proxyserver.company:80

使用する必要があるパラメーターの詳細については、Snowflake のドキュメント(新しいウィンドウでリンクが開く)を参照してください。

注: Tableau では Snowflake への接続に DSN が使用されないため、Snowflake のドキュメントで DSN の使用方法を説明する部分は無視できます。

バージョン 2019.4 より前の Tableau を使用している場合、TDC ファイルで odbc-extras を使用してパラメーターを入力することによって設定できます。

例:

コピー
<connection-customization class='snowflake' enabled='true' version='19.1'>
        <vendor name='snowflake' />
            <driver name='snowflake' />
                <customizations>
                <customization name='odbc-connect-string-extras' value='proxy=http://proxyserver.company:80' />
                </customizations></connection-customization>

詳細については、「Customize the Connection String for a Native Connector」(新しいウィンドウでリンクが開く)の記事を参照してください。

トラブルシューティング

パフォーマンスとフェッチ サイズ

最高のパフォーマンスを得るには、特に抽出の場合は Tableau で最適なフェッチ サイズを決定する必要があります。これを改善するには、可変長フィールドに制限を設定する方法と、サイズ変更が可能なフェッチ バッファを有効にする方法の 2 つの方法があります。最良の結果を得るには、両方を使用する必要があります。

現在のフェッチ サイズを決定する

使用されたフェッチ サイズは tabprotosrv ログに記録されます。Tabprotosrv はドライバー サンドボックス プロセスです。以下に例を示します。

ODBCRowsetSource::ODBCRowsetSource: 行のフェッチ サイズを 4128 行 (行あたり 254 バイト) に設定しようとしています

: 以下の提案のいくつかには TDC が必要ですが、Tableau Bridge を使用していない限り Tableau Cloud では機能しません。Tableau Bridge を使用している場合は、ブリッジ ホストに TDC をインストールして、そのホストを通過するすべての接続に適用することができます。

可変長フィールドの制限

制限のない VARCHAR フィールドまたは VARBINARY フィールドを使用すると、ドライバーはフィールド サイズとして 16 MB を返します。これにより、Tableau はメモリ制限内に収めるために小さなフェッチ サイズを使用するため、クエリ速度が低下します。これにはいくつかの対処方法があります:

  • データベースの列定義に VARCHAR(256) などの制限を追加するか、ビューでテーブルをラップして同じことを行います。
  • Tableau Desktop で Snowflake に接続するときに [詳細] タブの [既定の VARCHAR サイズ (バイト)] フィールドを使用します。このフィールドは、Tableau 2024.3 で [最大 VARCHAR サイズ] から名称が変更されましたが、内容は同じです。ODBC ドライバーの default_varchar_size パラメーターを設定し、Tableau に返されるフィールド サイズを制限します。詳細については、https://docs.snowflake.com/ja/developer-guide/odbc/odbc-parameters(新しいウィンドウでリンクが開く) を参照してください。
  • 以下のような TDC カスタマイズを使用します。

<connection-customization class='snowflake' enabled='true' version='10.0'>
<vendor name='snowflake' />
<driver name='snowflake' />
<customizations>
<customization name='CAP_ODBC_FETCH_BUFFERS_RESIZABLE' value='yes'/>
<customization name='odbc-connect-string-extras' value='default_varchar_size=512;default_binary_size=512'/>
</customizations>
</connection-customization>

CAP_ODBC_FETCH_BUFFERS_RESIZABLE を有効にする

これは、Tableau 2024.3 では既定で有効になっています。それより前のバージョンでは、TDC を使用できます。Ui やデータベースで default_varchar_size を構成したい場合は、この TDC ではなく以下のような TDC を使用します。

<connection-customization class='snowflake' enabled='true' version='10.0'>
<vendor name='snowflake' />
<driver name='snowflake' />
<customizations>
<customization name='CAP_ODBC_FETCH_BUFFERS_RESIZABLE' value='yes'/>
</customizations>
</connection-customization>

よくある質問

よくある問題と解決までのステップを紹介します。

「このフィールド XXX は存在しません」というエラーが表示されています。どうすればよいですか?

このエラーは、計算フィールドを作成してワークシートに追加し、データ ソースを Snowflake データ (CustomSQL) に置き換えると表示されます。

[Replace Field References (フィールドの参照を置換する)] 機能を使用して、エラーを解決します。詳細については、「フィールドの参照の置換」を参照してください。

 

関連項目

フィードバックをお送りいただき、ありがとうございます。フィードバックは正常に送信されました。ありがとうございます!