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 のデータへの接続
- [接続] 画面の [サーバーへ] で、[詳細] を選択し、[Snowflake] を選択します。
- [全般] タブで、接続するサーバー名を入力します。
- (オプション) [ロール] と [ウェアハウス] を入力します。
- 次の中から使用する認証方法を選択します: [ユーザー名とパスワード]、[Okta ユーザー名とパスワード]、[OAuth を使用してサインイン]、または [キーペアを使用してサインイン]。
- (オプション) すべての接続の開始時に SQL コマンドを実行する場合は、[初期 SQL] を選択します。詳細については、「初期 SQL の実行」を参照してください。
- (オプション) Tableau Desktop および Tableau Server の場合は、[詳細] タブでこの接続に使用するカスタム パラメーターを入力します。(Tableau Cloud では入力できません)
- 選択した認証方法のログイン ステップを完了します。
- OAuth を使用したサインイン:
- [サインイン] をクリックします。
- 開いた Web ページでユーザー名とパスワードを入力して [ログイン] を選択し、Snowflake にログインします。または、Snowflake が SSO をサポートするように構成されている場合は [シングル サインオン] を選択します。
- [OK] をクリックし、Snowflake データにアクセスするための許可を確認します。
- ユーザー名とパスワード:
- ユーザー名と任意でパスワードを入力します。
- [サインイン] をクリックします。
- Okta のユーザー名とパスワード:
- ユーザー名と任意でパスワードを入力します。
- 任意の SAML IdP (Okta サーバーの URL) を入力します。
- [サインイン] をクリックします。
- キーペアを使用したサインイン
- [サーバー] で、Snowflake サーバーのアドレスを入力します。
- [ウェアハウス] と任意で [ロール] を入力します。
- [認証] で [キーペアを使用してサインイン] を選択します。
- これらのキーに関連しているユーザー名を入力します。
- [プライベート キー ファイル] で、プライベート キーを含む .p8 ファイルを参照します。
- (オプション) パスワードで保護されている場合は、プライベート キー ファイルのパスワードを入力します。
- OAuth を使用したサインイン:
- 次に、[データ ソースの設定] の手順に従います。
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 構成と接続パラメーター」を参照してください。
データ ソースの設定
データ ソース ページで次の手順を行います。
(任意) ページ上部にある既定のデータ ソース名を選択し、Tableau で使用する一意のデータ ソース名を入力します。たとえば、データの他のユーザーが、どのデータ ソースに接続するか推測するのに役立つ命名規則を使用します。
- [ウェアハウス] ドロップダウンからウェアハウスを選択するか、テキスト ボックスを使用してウェアハウスを名前で検索します。
注: 空白のままにしてウェアハウスを選択しない場合、Tableau はデフォルトの Snowflake 仮想ウェアハウスを使用します。
詳細については、「Snowflake のデフォルト仮想ウェアハウス」を参照してください。
- [データベース] ドロップダウンからデータベースを選択するか、テキスト ボックスを使用して名前でデータベースを検索します。
- [スキーマ] ドロップダウンからスキーマを選択するか、テキスト ボックスを使用して名前でスキーマを検索します。
- [表] で、表を選択するかテキスト ボックスを使用して、名前で表を検索します。
表をキャンバスにドラッグしてから、シート タブを選択して分析を開始します。
注: キーペア認証を使用してワークブックをパブリッシュする場合は、[ワークブックのパブリッシュ] ウィンドウの [データ ソースの管理] セクションで適切な認証タイプを選択してください。
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 (フィールドの参照を置換する)] 機能を使用して、エラーを解決します。詳細については、「フィールドの参照の置換」を参照してください。
- Snowflake Web サイトの「Snowflake で Tableau を使用するためのベスト プラクティス (英語)」(新しいウィンドウでリンクが開く) (登録が必要)。
関連項目
- データ ソースの設定 – このデータ ソースにさらにデータを追加したり、データ分析の前にデータを準備したりします。
- グラフの構築とデータの分析 – データ分析を開始します。