ODBC 接続のカスタマイズと微調整

SQL をサポートするデータベースにコネクターを使用する場合、Tableau はそのデータベースに対して調整された SQL ステートメントを生成します。Tableau には ODBC データ ソースで使用される SQL ダイアレクトに関する詳細な表示がないため、さまざまなテストにより、サポートされている構文を推測する必要があります。ドライバーから、サポートしている SQL ダイアレクトについて不正確または不完全な情報が報告されると、ユーザーは機能やパフォーマンスを向上させるため、Tableau カスタマイズを使用してこの接続情報を微調整できます。

この記事では、ODBC 接続を作成し、作成された Tableau データ ソース (TDS) ファイルを調べます。その後、その一部を使用して、ODBC 接続のカスタマイズに使用できる Tableau データ ソース カスタマイズ (TDC) ファイルを作成します。始める前に、Tableau および ODBC のコンテンツに精通しておく必要があります。

注: Tableau は ODBC ドライバーとの接続のトラブルシューティングをサポートする、妥当なレベルのカスタマー サポートを提供しますが、特定の ODBC ドライバーを操作するためのコネクターを作成またはカスタマイズすることはできません。

ODBC 接続を行う

このセクションでは、例を使用して、ODBC 接続の作成方法を示します。例では、SQLite ODBC ドライバーを使用して SQLite データベースに接続します。

前提条件

この記事の ODBC 接続は、オープンソース データベースである SQLite (http://www.sqlite.org/) に基づいています。

次の 2 つのアイテムをダウンロードする必要があります:

免責条項: この情報はサードパーティ製品を参照しています。この例は、この商品の競合製品に対する裏書ではありません。

  • SQLite 32 ビット ODBC ドライバー (32 ビットまたは 64 ビット Windows で必要)。次からダウンロードおよびインストールします (SQLite 2 ドライバーを選択)。

    http://www.ch-werner.de/sqliteodbc/sqliteodbc.exe

  • Northwind データベースなど、Microsoft が作成したサンプル SQLite データベース。次からダウンロードおよび展開します:

    http://download.vive.net/Northwind.zip

接続の作成

ODBC 接続を作成するには、SQLite3 ODBC ドライバーを使用して "Northwind" データベースに接続してから、接続を Tableau データ ソース (TDS) ファイルとして保存します。

  1. Tableau Desktop を起動します。

  2. スタート ページの [接続] で、[その他のデータベース (ODBC)] をクリックします。

    注: Tableau でサポートされるコネクタ(Link opens in a new window)が既に存在するデータベースの場合は、そのコネクタの名前をクリックして接続を作成できます。

  3. [次を使用して接続] の下で [ドライバー] を選択し、ドロップダウン リストから [SQLite3 ODBC Driver] を選択します。

  4. [接続] をクリックします。

  5. [データベース名] テキスト ボックスの横にある [参照] をクリックし、Northwind.sl3 ファイルの場所に移動してから、[開く] をクリックします。

  6. [OK] をクリックしてダイアログ ボックスを閉じてから、[サインイン] をクリックします。

  7. データ ソース ページの [表] テキスト ボックスに「Orders」と入力します。

  8. キャンバスに [Orders] 表をドラッグしてキャンバスに移動し、シート タブをクリックします。

    "Tableau が ODBC データ ソースの制限を識別しました" ダイアログ ボックスが開きます。詳細を表示するか、ダイアログ ボックスを削除して続行します。詳細については、「Tableau による ODBC ドライバーの機能の決定方法」を参照してください。

  9. [データ] > [Orders [Northwind.sl3 へのパス] > [保存されたデータ ソースに追加] を選択します。

  10. [保存] をクリックします。

  11. ワークブックを閉じます。変更を保存するよう求められたら、[いいえ] をクリックします。

これで、TDS ファイルを開いて SQLite 接続を調べることができます。

TDS ファイルの XML 構造のレビュー

保存された Tableau データ ソース (TDS) ファイルをテキスト エディターで開き、XML 構造を表示します。既定では、上記で作成したファイルには「Northwind.sl3.tds」という名前が付けられ、次のパスにあります。

Users\[your name]\Documents\My Tableau Repository\Datasources

または

Users\[your name]\Documents\My Tableau Repository (Beta)\Datasources

これは、Northwind Orders 表への SQLite 接続を説明する簡単な XML ドキュメントです。<connection> セクション内に <connection-customization> 要素があります。この要素には、編集可能な <customization> 要素が含まれています。

ベンダーおよびドライバー名

接続のカスタマイズ セクションは、Tableau が ODBC ドライバーおよびデータベース ベンダーとして検出した名前から始まります。Tableau はこの情報を使用して、特定の接続カスタマイズと単一種類の ODBC データ ソースを関連付けます。セクションは次のようになります。

<connection-customization class='genericodbc' enabled='false' version='10.1'>
<vendor name='SQLite' />
<driver name='SQLite3 ODBC Driver' />
<customizations>

カスタマイズの種類

Tableau は、2 種類のカスタマイズを許可しています。Tableau に固有の機能、および SQLGetInfo に対する ODBC API 呼び出しです。これらのカスタマイズは簡単な名前 / 値のペアで、その名前は、Tableau 機能では「CAP_」、SQLGetInfo API 呼び出しでは「SQL_」の規則に従います。

保存したデータ ソース ファイルには、両方の種類のカスタマイズ例が含まれています。これらのカスタマイズは、接続開始時に Tableau がドライバーをクエリすることで検出できた値を示しています。カスタマイズのリストは不完全または間違っています。ODBC データ ソースに接続する際には、Tableau の動作をカスタマイズおよび変更できます。

次の記事には、カスタマイズに関する完全なリファレンスが含まれます。お使いの環境で期待どおり動作するよう、ODBC 接続を調節する方法を把握しておく必要があります。リストを見直すことで、ODBC 接続の微調整に使用できるカスタマイズについて把握することができます。

カスタマイズ値の書式設定

  • カスタマイズ値はすべて、それぞれの名前 / 値のペアの文字列として表現されます。

  • Tableau 機能ではすべて、「yes」または「no」で表現されるブール値です。

  • SQLGetInfo 値は長整数型、短整数型、または文字列データですが、指定した識別子に関して SQLGetInfo から返されると期待される値により異なります。

  • 多くの整数フィールドは、一連の機能を表すビットマスクです。

TDC ファイルを使用してグローバルなカスタマイズを行う

カスタマイズによって指定した ODBC データ ソースのすべての接続に変更を適用するには、Tableau データ ソース カスタマイズ (TDC) ファイルを作成する必要があります。このファイルには <connection-customization> セクションのみが含まれ、TDC ファイルに記載されているデータベース ベンダー名とドライバー名と一致する新しい Tableau 接続に適用されます (ベンダーおよびドライバー名に記載されているとおり)。有効なカスタマイズ セクションを既に含む既存のすべてのワークブックまたはデータ ソース ファイルは、TDC ファイルではなく、それ自体が供給するカスタマイズ内容のみを使用します。

重要: Tableau は、TDC ファイルをテストまたはサポートしていません。これらのファイルは探索するためのツールとして使用してください。そうでないと、データ接続でアドレス問題が生じることがあります。TDC ファイルを作成し維持するには、注意深く手動で編集する必要があります。これらのファイルの共有はサポートされていません。

TDC ファイルを作成する

TDC ファイルを作成する際には、接続で使用できるよう、正しい場所に保存する必要があります。Tableau Server にパブリッシュするワークブックを作成する場合は、サーバーに TDC ファイルも保存する必要があります。詳細については、Tableau ナレッジ ベースの「Tableau Server で TDC ファイルを使用する」(Link opens in a new window)を参照してください。

TDC ファイルの構造

各 TDC ファイルは、次の基本構造に従います。

<connection-customization class=DSCLASS enabled='true' version='10.0'>
    <vendor name=VENDOR />
    <driver name=DRIVER />
    <customizations>
        <customization name='CAP_FAST_METADATA' value='yes'/>
        ...
    </customizations>
</connection-customization>

TDC ファイルには、次の 3 つの主要なセクションがあります。

  • 接続カスタマイズ変数
  • ベンダーとドライバー名
  • カスタマイズ内容

connection-customization セクションには、次の項目が含まれます。

  • クラス: 接続してカスタマイズするデータ ソース。
  • 有効化: この TDC ファイルの接続カスタマイズが適用されるかどうか。TDC ファイルでは、常に "true" に設定されます。
  • バージョン: Tableau はバージョン番号を無視します。

次のセクションは、この TDC ファイルのデータ ソースのデータベース プロバイダーのベンダー名とドライバー名を識別するため、非常に重要です。各 TDC ファイルは、1 つのタイプのデータ ソースにのみバインドできます。ネイティブ データ ソースの場合、これらの名前はどちらもデータ ソース クラス名と一致している必要があります (たとえば、Teradata 接続の場合は "teradata")。ODBC データ ソースの場合、TDC ファイルのベンダー名とドライバー名は、データベースとドライバーによって Tableau に報告される内容と一致する必要があります (たとえば、"SQLite" と "SQLite3 ODBC Driver")。

最後のセクションは、実際の接続のカスタマイズを示します。

Tableau Desktop で TDC ファイルを使用する

  1. テキスト エディターを使用して、保存したデータ ソース ファイルの <connection-customization> セクション全体をコピーして貼り付けます。参考資料については、「サンプル SQLite TDC ファイル」を参照してください。

  2. ファイルに odbc-sqlite.tdc と名前を付け、Documents\My Tableau Repository\Datasources に保存します。

    注: ファイルは .tdc 拡張子を使用して保存する必要がありますが、その前の部分の名前は任意で問題ありません。

  3. 変更を反映するには、Tableau Desktop を再起動します。

  4. 「接続の作成」で記載したとおり、SQLite への新しい接続を作成します。

  5. Tableau Desktop ログ ファイルに移動して開き、以下の例のようなレコードを探し、このカスタマイズ ファイルが新しい接続に適用されていることを確認します。

ログ ファイルの場所 レコードの例
C:\Users\<user>\Documents\My Tableau Repository\Logs (既定) Found matching TDC 'C:\\Users\\<name>\\Documents\\My Tableau Repository\\Datasources\\odbc-sqlite.tdc' for class='genericodbc', vendor='SQLite', and driver='SQLite3 ODBC Driver'

Tableau Server で TDC ファイルを使用する

  1. テキスト エディターを使用して、保存したデータ ソース ファイルの <connection-customization> セクション全体をコピーして貼り付けます。参考資料については、「サンプル SQLite TDC ファイル」を参照してください。

  2. ファイルに odbc-sqlite.tdc と名前を付け、以下の場所に保存します。

    • Windows の場合:

      Tableau Server バージョン 2018.2 より前:

      Program Files\Tableau\Tableau Server\<version>\bin

      Tableau Server バージョン 2018.2 以降:

      Program Files\Tableau\Tableau Server\packages\bin.<build number>

      またはすべての Tableau Server バージョン:

      ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Datasources

      ファイルを保存するには、サーバー コンピューターの Windows 管理者である必要があります。

    • Linux の場合:

      /var/opt/tableau/tableau_server/data/tabsvc/vizqlserver/Datasources/

    注: ファイルは .tdc 拡張子を使用して保存する必要がありますが、その前の部分の名前は任意で問題ありません。TDC ファイルは、動作に一貫性を持たせるためにすべてのサーバー ノードに保存する必要があります。

  3. 変更を反映するには、Tableau Server を再起動します。

  4. 「接続の作成」で記載したとおり、Tableau Desktop で SQLite への新しい接続を作成します。

  5. Tableau Server ログ ファイルに移動して開き、以下の例のようなレコードを探し、このカスタマイズ ファイルが新しい接続に適用されていることを確認します。

ログ ファイルの場所 レコードの例
C:\ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Logs Found matching TDC 'C:\\ProgramData\\Tableau\\Tableau Server\\data\\tabsvc\\vizqlserver\\Datasources\\odbc-sqlite.tdc for class='genericodbc', vendor='SQLite', and driver='SQLite3 ODBC Driver'

サンプルの SQLite TDC ファイル

<?xml version='1.0' encoding='utf-8' ?>
<connection-customization class='genericodbc' enabled='true' version='7.8'>
<vendor name='SQLite' />
<driver name='SQLite3 ODBC Driver' />
	<customizations>
		<customization name='CAP_CREATE_TEMP_TABLES' value='yes' />
		<customization name='CAP_QUERY_BOOLEXPR_TO_INTEXPR' value='yes' />
		<customization name='CAP_QUERY_GROUP_BY_ALIAS' value='no' />
		<customization name='CAP_QUERY_GROUP_BY_DEGREE' value='yes' />
		<customization name='CAP_QUERY_JOIN_ACROSS_SCHEMAS' value='no' />
		<customization name='CAP_QUERY_JOIN_REQUIRES_SCOPE' value='no' />
		<customization name='CAP_QUERY_SUBQUERIES' value='yes' />
		<customization name='CAP_QUERY_SUBQUERIES_WITH_TOP' value='yes' />
		<customization name='CAP_SELECT_INTO' value='no' />
		<customization name='CAP_SELECT_TOP_INTO' value='yes' />
		<customization name='SQL_AGGREGATE_FUNCTIONS' value='127' />
		<customization name='SQL_SQL_CONFORMANCE' value='4' />
	</customizations>
</connection-customization>

ODBC 接続のカスタマイズ

データ ソースへの ODBC 接続を作成し、必要なメタデータを取得できることを検証したと想定します。次に、抽出を作成するか、必要な機能を提供するライブ接続を使用するかを決定する必要があります。その場合、作成した TDC ファイルは十分であり、接続をカスタマイズする必要はありません。

必要としている動作を TDC ファイルが実行しない場合は、接続をカスタマイズできます。お使いの環境で期待どおり動作するよう、ODBC 接続を調節する方法を把握しておく必要があります。リストを見直すことで、ODBC 接続の微調整に使用できるカスタマイズを確認できます。

機能向上のための一般的なカスタマイズ

次のカスタマイズは、最適でない既定機能を持つデータ ソースの機能の向上に役立ちます。

  • CAP_SUPPRESS_DISCOVERY_QUERIES - この値を true に設定すると、Tableau が接続開始時に任意の SQL クエリを実行し、ドライバーの機能を決定するのを防ぐことができます。Tableau は自動的に機能を決定することができないため、他のどの機能を明示的に有効にするかを検討する必要があります。

  • SQL_SQL_CONFORMANCE – この設定は、データ ソースにより完全にサポートされている SQL standard レベルを宣言します。Tableau は最低でエントリー レベルの準拠で最もよく動作するため、データ ソースがサポートする場合、この値は最低 1 である必要があります。

  • SQL_AGGREGATE_FUNCTIONS – この設定は、MINMAXSUM などのサポートされている集計関数うを示します。'127'の値は、すべての標準 SQL 集計関数のサポートを示します。

大幅に制限されたデータ ソースの処理

データ ソースによっては大幅に制限されているため、Tableau が接続作成手順を完了できない場合があります。これはドライバー内のクラッシュが原因で起こる場合があり、そのため Tableau の動作が停止する場合があります。グローバル TDC ファイルを使用すると、Tableau がクエリを発行したり、不安定性と関連する可能性のある機能をチェックするのを防ぐことができます。

このファイルを作成するには、データベース ベンダー名および ODBC ドライバー名を知っている必要があります。

  1. Tableau 内で新しい接続を作成し、ログ ファイルを開いて次のような行を探します:
    GenericODBCProtocol::Connect: Detected vendor: 'SQLite' and driver: 'SQLite3 ODBC Driver'
  2. vendor 名および driver 名が記載された TDC ファイルを作成します。例については、ベンダーおよびドライバー名を参照してください。

  3. 制限されたデータ ソースと Tableau が関わるのを制限するため、CAP_SUPPRESS_DISCOVERY_QUERIES などのカスタマイズの使用を検討してください。

ODBC ドライバー設定の構成

ODBC ドライバーは、サーバー、ユーザー名、パスワードなどの接続情報詳細を入力するダイアログ ボックスを提供します。多くのダイアログには、接続動作をコントロールする高度なオプションがあります。ODBC 接続の機能やパフォーマンスを向上させる方法を探している場合は、このオプションを検討してください。特に、これまで Tableau では次の項目が ODBC 接続における問題の原因となってきたため、それをコントロールする設定を探してください。

  • トランザクション分離 - クエリ結果に保留状態のトランザクションのデータを含めない場合は、READCOMMITTED または SERIALIZABLE を優先します。

  • カーソル - ストリーミング カーソルではなく、保持可能カーソルまたはスクロール可能カーソルを優先します。Tableau は読み取り専用の分析クエリを発行するごとにトランザクションを閉じるため、ストリーミング カーソルは切り捨てられ、Tableau に不完全な結果が表示される場合があります。

  • 行 / 結果セット バッファ - 多数の行を取得する際のパフォーマンスを向上させるには、サイズの大きいバッファを優先します。これにより、抽出作成速度が大きく向上する可能性があります。キャッシュ サイズまたは応答サイズと呼ばれる場合もあります。

  • 文字セット - 次の順で優先順位が低くなります: UTF-16、UTF-8、ASCII。

高度な SQLite カスタマイズ

Tableau には、製品に組み込まれた SQLite の特別なカスタマイズが導入されています。これらのカスタマイズ内容は、ワークブック ファイル、データ ソース ファイル、またはグローバル TDS ファイルの SQLite の接続カスタマイズより優先されます。SQLite 接続をカスタマイズしての高度な変更を行うには、Tableau が SQLite ダイアレクトを無視するように操作する必要があります。そのためには、データベース ベンダーの報告名 (<customization name='SQL_DBMS_NAME' value='SQLite' />) を、SQLite-Tableau」などの異なる値に変更する必要があります。

ODBC ドキュメントの参考資料

Microsoft の MSDN には、ODBC standard に関する文書があります。特に、この記事の情報のリソースとしては「ODBC 付録」(Link opens in a new window)が最適です。

関連項目

その他のデータベース (ODBC) – ODBC コネクターを使用してデータに接続する方法を説明します。

Tableau および ODBC – ODBC に関する背景情報を提供、Tableau による ODBC ドライバーの機能の判断方法を説明、およびよく寄せられる質問をリストします。

Tableau 機能のカスタマイズの参考資料 – データ ソースによりサポートされている Tableau 機能定義に使用できるカスタマイズを一覧表示します。

ODBC/SQL カスタマイズの参考資料 – ODBC ドライバー レポートがサポートしている ODBC および SQL 標準の部分を表すカスタマイズをリスト表示します。

「ネイティブ コネクタの接続文字列のカスタマイズ」(Link opens in a new window) – Tableau コミュニティのこの記事では、odbc-connect-string-extras カスタマイズを使用してネイティブ コネクタによる接続を変更する方法を説明します。

ありがとうございます!