Snowflake

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

はじめる前に

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

  • 接続するサーバーの名前
  • 認証方法:
    • OAuth: IDP からフェデレーションを有効にする場合は、この方法を使用します。
    • SAML IDP: 接続に IDP 認証資格情報を埋め込む場合は、この方法を使用します。
    • ユーザー名とパスワード: ユーザーの認証資格情報を Snowflake に保存する場合は、この方法を使用します。
  • サインインするための認証資格情報は、選択する認証方式によって異なります
  • (オプション) Tableau が接続するたびに初期 SQL ステートメントを実行する

必要なドライバー

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

注: Snowflake で OAuth を使用するには、最新の ODBC ドライバーを Snowflake からインストールする必要があります。現在のバージョンは 2.25.4 です。

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

接続先として Snowflake を選択すると、3 つのタブからなるポップアップ メニューが表示されます。[一般] タブは、認証に使用します。[初期 SQL] を使用すると、すべての接続の初めに SQL コマンドを実行することもできます。詳細については、「初期 SQL の実行」を参照してください。[詳細] タブを使用すると、パラメーターを使用して顧客接続を追加できます。

Tableau のデータへの接続

  1. Tableau を起動し、[接続] の下で [Snowflake] を選択します。
  2. 接続するサーバーの名前を入力します。
  3. 認証メソッドを、[ユーザー名とパスワード][Okta のユーザー名とパスワード]、または [OAuth を使用したサインイン] から選択します。
  4. 1 つの認証メソッドを選択し、ログイン手順を実施します。
    Okta のユーザー名とパスワード:
    1. [ユーザー名][パスワード] を入力します。
    2. [Okta] フィールドに、Okta サーバーの URL を入力します。
    OAuth を使用したサインイン
    1. (オプション) すべての接続の初めに SQL コマンドを実行する場合、[初期 SQL] を選択します。詳細については、初期 SQL の実行を参照してください。
    2. [サインイン] を選択します。
    3. 開いた Web ページで、[ユーザー名][パスワード] を入力して [ログイン] を選択し、Snowflake にログインします。または、Snowflake が SSO をサポートするように構成されている場合は [シングル サインオン] を選択します。
    4. [OK] をクリックし、Snowflake データにアクセスするための許可を確認します。
    5. ブラウザー画面と Tableau を閉じます。
    6. 次のセクション「データ ソースの設定」に進みます。
  5. [サインイン] を選択します。
  6. 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>

Tableau Cloud を使用している場合は、Tableau リポジトリのデータソース フォルダーに TDC をインストールして Tableau Desktop からパブリッシュできます。これにより、パブリッシュ時にワークブックまたはデータソースに TDC が埋め込まれます。

サーバー側に別の TDC がインストールされていない限り、有効化フラグのステータスに関係なく、埋め込まれた TDC は常に適用されます。また、Tableau Cloud にはインストールされた TDC はありません (埋め込まれたものだけです)。

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

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

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

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

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

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

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

 

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

データ ソースの設定

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

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

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

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

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

  3. [データベース] ドロップダウンからデータベースを選択するか、テキスト ボックスを使用してデータベースを名前で検索します。
  4. [スキーマ] ドロップダウンからスキーマを選択するか、テキスト ボックスを使用してスキーマを名前で検索します。
  5. [表] で、表を選択するかテキスト ボックスを使用して、名前で表を検索します。
  6. 表をキャンバスにドラッグしてから、シート タブを選択して分析を開始します。カスタム SQL を使用して、データ ソース全体ではなく、特定のクエリに接続します。詳細については、カスタム SQL クエリへの接続を参照してください。

Mac でのサインイン

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

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

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

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

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

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

Snowflake サーバー サポートでの OAuth の構成

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

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 を Snowflake で使用中に発生するパフォーマンスの問題を解決するには、次の情報を参考にしてください。

フェッチ サイズ

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

スキーマの変更

VARCHAR(256) などのサイズを列定義に追加すると、Tableau は最適なフェッチ サイズを計算できるようになります。

TDC カスタマイズ

  • ドライバー パラメーターとして default_varchar_size または default_binary_size を使用することもできます。

また、[こちら](https://docs.snowflake.com/ja/developer-guide/odbc/odbc-parameters) を使用して、無制限フィールドの最大フィールド サイズを設定することもできます。

  • 高度な UI または TDC を使用できます。

  • 追加の機能 CAP_ODBC_FETCH_BUFFERS_RESIZABLE も設定する必要があります。

注: Tableau Bridge を使用していない限り、このソリューションは Tableau Cloud では機能しません。

  • Tableau ブリッジを使用している場合は、ブリッジ ホストに TDC をインストールして、そのホストを通過するすべての接続に適用することができます。以下の例を参照してください。

パラメーター ポップアップ ダイアログ

前述の UI を使用して各データソースのフィールド サイズをカスタマイズする予定の場合は、この 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>

この 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>

よくある質問

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

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

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

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

 

関連項目

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