範例:自訂 ODBC 連線

針對支援 SQL 的資料庫使用連接器時,Tableau 將產生針對該資料庫調整的 SQL 語句。由於 Tableau 沒有 ODBC 資料來源使用的 SQL 方言的表示形式,因此它必須透過各種測試和來推導受支援的語法。如果驅動程式報告有關它支援的 SQL 方言的錯誤或不完整資訊,您可以使用 Tableau 自訂項來微調此連線資訊,以便改進功能和效能。

在本文中,您將進行 ODBC 連線,檢查產生的 Tableau 資料來源 (TDS) 檔案,並使用它的一部分來建立 Tableau 資料來源自訂 (TDC) 檔案,該檔案隨後可用於自訂 ODBC 連線。在開始之前,您應熟悉 Tableau 和 ODBC 中的內容。

附註:Tableau 將提供合理的客戶支援層級來幫助排除使用 ODBC 驅動程式進行連線的故障,但無法建立或自訂連接器來處理特定的 ODBC 驅動程式。

建立 ODBC 連線

此部分使用一個範例展示如何建立 ODBC 連線。在範例中,您使用 SQLite ODBC 驅動程式連線到一個 SQLite 資料庫。

必要條件

本文中的 ODBC 連線基於 SQLite (http://www.sqlite.org/),它是一種開來源資料庫。

您需要下載以下兩項:

免責聲明:此資訊會引用協力廠商產品。本範例並不認可此產品優於任何其他競爭產品。

建立連線

若要建立 ODBC 連線,請使用 SQLite3 ODBC 驅動程式連線到 Northwind 資料庫,然後將連線另存為 Tableau 資料來源 (TDS) 檔案。

  1. 開啟 Tableau Desktop。

  2. 在開始頁面上的 [連線] 下,按一下 [其他資料庫(ODBC)]

    附註:對於已具有 Tableau 支援連線器的(連結在新視窗開啟)資料庫,可以按一下此連線器的名稱來建立連線。

  3. [連線使用] 下,選取 [驅動程式] ,然後從下拉清單中選取 [SQLite3 ODBC 驅動程式]

  4. 按一下 [連線]

  5. [資料庫名稱] 文字方塊旁邊,按一下 [瀏覽] ,巡覽到 Northwind.sl3 檔案的位置,然後按一下 [開啟]

  6. 按一下 [確定] 關閉對話方塊,然後按一下 [登入]

  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

這是一個 XML 文件,描述與 Northwind Orders 表的 SQLite 連線。在 <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 允許兩種類型的自訂項: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 知識庫中的將 TDC 檔案與 Tableau Server 搭配使用(連結在新視窗開啟)

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'/>
        <customization name='CAP_SOMETHING_ELSE' value='yes'/>
        ...
    </customizations>
</connection-customization>

TDC 檔案有三個主要部分:

  • 連線自訂變數
  • 供應商和驅動程式名稱
  • 自訂項本身

connection-customization 部分包括以下內容:

  • 類別:您要連線並自訂的資料來源。
  • 已啟用:指定是否套用 TDC 檔案連線自訂項。在 TDC 檔案中,一律設為「true」。
  • 版本:Tableau 會忽略版本號。

下一節非常重要,因為它可針對此 TDC 檔案資料來源,識別其資料庫提供者的供應商名稱和驅動程式名稱。每個 TDC 檔案只能繫結至一個資料來源類型。對於原生資料來源,這些名稱必須同時符合資料來源類別名稱;例如,Teradata 連線的名稱為「teradata」。對於 ODBC 資料來源,TDC 檔案的供應商名稱和驅動程式名稱必須與資料庫和驅動程式向 Tableau 報告的名稱相符;例如,分別為「SQLite」和「SQLite3 ODBC Driver」。

最後一個部分列出了實際的連線自訂項。

以下是兩個範例 TDC 檔案:第一個是通用 ODBC 連線,第二個是對本機 Salesforce 連線的修改。請注意,這些僅用於範例目的,所列出的自訂項目並不是為了實現特定目標而選取。

<?xml version='1.0' encoding='utf-8' ?>
<connection-customization class='genericodbc' enabled='true' version='8.10'>
<vendor name='Gen_ODBC_Vendor'/>
<driver name='Gen_Driver'/>
<customizations>
<customization name='CAP_FAST_METADATA' value='yes' />
<customization name='CAP_ODBC_BIND_FORCE_MAX_STRING_BUFFERS' value='yes' />
<customization name='CAP_ODBC_BIND_PRESERVE_BOM' value='yes' />
</customizations>
</connection-customization>
<?xml version='1.0' encoding='utf-8' ?>
<connection-customization class='salesforce' enabled='true' version='8.10'>
  <vendor name='salesforce'/> 
  <driver name='salesforce'/>
  <customizations>
    <customization name='CAP_ODBC_EXPORT_CONTINUE_ON_ERROR' value='yes' />
    <customization name='CAP_ODBC_EXPORT_FORCE_SINGLE_ROW_BINDING' value='yes' />
    <customization name='CAP_ODBC_EXPORT_SUPPRESS_STRING_WIDTH_VALIDATION' value='no' />
  </customizations>
</connection-customization>

將 TDC 檔案與 Tableau Desktop 搭配使用

  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\<使用者>\Documents\我的 Tableau 存放庫\LogsFound matching TDC 'C:\\Users\\<name>\\Documents\\My Tableau Repository\\Datasources\\odbc-sqlite.tdc' for class='genericodbc', vendor='SQLite', and driver='SQLite3 ODBC Driver'

將 TDC 檔案與 Tableau Prep Builder 搭配使用

  1. 使用文字編輯器,複製並貼上已儲存資料來源檔案的整個 <connection-customization> 部分。有關參考,請參閱範例 SQLite TDC 檔案

  2. 將檔案命名為 odbc-sqlite.tdc,並將其儲存到以下位置:

    • 如果是 Windows:

      Documents\My Tableau Prep Repository\Datasource

    • 如使用 Mac:

      Documents/My Tableau Prep Repository/Datasources

    附註:該檔案必須使用 .tdc 副檔名儲存,但名稱不在此限。

  3. 重新啟動 Prep 以套用變更。

  4. 移至該記錄檔並開啟,尋找與下面的範例類似的記錄,以驗證此自訂檔案是否已套用至您的新連線。

記錄檔位置記錄範例
預設為 C:\Users\<user>\Documents\My Tableau Prep Repository\LogsFound matching TDC 'C:\\Users\\<name>\\Documents\\My Tableau Prep Repository\\Datasources\\odbc-sqlite.tdc' for class='genericodbc', vendor='SQLite', and driver='SQLite3 ODBC Driver'

將 TDC 檔案與 Tableau Server 搭配使用

  1. 使用文字編輯器,複製並貼上已儲存資料來源檔案的整個 <connection-customization> 部分。有關參考,請參閱範例 SQLite TDC 檔案

  2. 將檔案命名為 odbc-sqlite.tdc,並將其儲存到以下位置:

    • 如果是 Windows:

      在 2018.2 之前的 Tableau Server 版本:

      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 Prep Conductor(執行流程)或 Prep Web 製作(在 Web 上編輯流程),必須將該 TDC 檔案放在其他目錄中。

    Prep Conductor

    • 如果是 Windows:

      <data directory>\tabsvc\flowprocessor\Datasources

    • 如果是 Linux:

      <data directory>/tabsvc/flowprocessor/Datasources

    Prep Web 製作

    • 如果是 Windows:

      <data directory>\tabsvc\flowminerva\Datasources

    • 如果是 Linux:

      <data directory>/tabsvc/flowmineva/Datasources

  4. 重新啟動 Tableau Server 以套用變更。

  5. 轉到並開啟 Tableau Server 記錄檔,並尋找與下面的範例類似的記錄,以驗證此自訂檔是否已應用於您的新連線。

記錄檔位置記錄範例

<install path>\Tableau Server\data\tabsvc\log\vizqlserver

<install path>\Tableau Server\data\tabsvc\log\backgrounder

<install path>\Tableau Server\data\tabsvc\log\dataserver

<install path>\Tableau Server\data\tabsvc\log\vizportal

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 標準。在至少符合入門級標準時,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. 使用 CAP_SUPPRESS_DISCOVERY_QUERIES 之類的自訂項來約束 Tableau 與受限制資料來源的交互。

設定 ODBC 驅動程式設定

ODBC 驅動程式提供了對話方塊來提供連線詳細資料,例如伺服器、使用者名和密碼。許多驅動程式還提供了用於控制連線行為的進階選項。在探索改進您的 ODBC 連線的功能或效能的方式時,應考慮這些選項。特別是,尋找控制下列各項的設定,因為這些項是導致 Tableau 中的 ODBC 連線過去出現問題的原因:

  • 事務隔離 - 首選 READCOMMITTEDSERIALIZABLE 以確保查詢結果中不包括待定事務的資料。

  • 游標 - 首選 Holdable 或 Scrollable 而非 Streaming 游標。由於 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 標準的文件。ODBC 附錄(連結在新視窗開啟)是最適合於文章資訊的資源,具體來說:

另請參閱

其他資料庫 (ODBC) – 描述如何使用 ODBC 連接器連線到資料。

Tableau 和 ODBC – 提供有關 ODBC 的背景資訊,描述 Tableau 如何確定 ODBC 驅動程式的功能,並列出常見問題。

Tableau 功能自訂參考 - 列出可用於定義資料來源支援的 Tableau 功能的自訂項。

ODBC/SQL 自訂項參考 - 列出自訂項,這些自訂項表示 ODBC 驅動程式報告支援的部分 ODBC 和 SQL 標準。

自訂原生連接器的連線字串(連結在新視窗開啟) – 這篇 Tableau 社群的文章會說明如何使用 odbc-connect-string-extras 自訂項來修改透過原生連接器建立的連線。

感謝您的意見反應!已成功提交您的意見回饋。謝謝!