連線到自訂 SQL 查詢

附註: 使用自訂 SQL 可能會影響工作簿的效能。與您的 DBA 一同使用將確保獲得最佳的自訂 SQL 查詢。為了執行在 Tableau Desktop 中構建檢視所需的操作,Tableau 必須能夠控制 WHERE、GROUP BY 和其他 SQL 子句。由於自訂 SQL 查詢可能包含這些元素,且 Tableau 無法將其注入到現有 SQL 中,因此 Tableau 必須在 Select 陳述式中包括自訂 SQL 陳述式。如果自訂 SQL 連線執行緩慢或產生錯誤,這通常是 Tableau Desktop 執行的自訂 SQL 包裝的結果。

對於大多數資料庫,您可以連線到特定查詢,而非整個資料集。因為資料庫的 SQL 語法彼此略有不同,所以您連線到一個資料庫和連線到另一個資料庫時,分別使用的自訂 SQL 或許也不相同。但是,如果準確知道所需資訊並且知道如何編寫 SQL 查詢,則使用自訂 SQL 可能很有用。

儘管您使用自訂 SQL 可能有多種常見原因,但您可以使用自訂 SQL 跨表合併資料、重新轉換欄位以執行跨資料庫聯接、重構或減小資料大小以進行分析等。

對於 Excel 和文字檔資料來源,此選項僅在 Tableau Desktop 8.2 之間建立的工作簿中可用,或者在透過舊版連線在 Windows 上使用 Tableau Desktop 時可用。若要使用舊版連線來連線到 Excel 或文字檔,請連線到檔案,並在「開啟」對話方塊中按一下 「開啟」 下拉式功能表,然後選取 「使用舊版連線開啟」

附註: 從 Tableau 2020.2 開始,不再支援舊版 Excel 和文字檔連線。請參閱 Tableau 社群中的 Legacy Connection Alternatives(舊版連線替代方案) 文件,瞭解使用舊版連線的替代方案。

連線到自訂 SQL 查詢

  1. 連線到資料後,按兩下「資料來源」頁面上的 「新建自訂 SQL」 選項。

    列出供應商及其名稱的資料表。

  2. 在文字方塊中鍵入或貼上查詢。查詢必須為單個 SELECT* 陳述式。

    顯示 SQL 查詢以從 Orders 資料表檢索資料的視窗。

  3. 完成後,按一下 「確定」

按一下「確定」時,會執行查詢,而且自訂 SQL 查詢表會出現在畫布的邏輯層中。只有自訂 SQL 查詢的相關欄位才會顯示在「資料來源」頁面的資料網格中。

顯示篩選器和資料來源順序的自訂 SQL 查詢介面的詳細檢視。

有關畫布的邏輯和實體層的詳情,請參閱 Tableau 資料模型

自訂 SQL 查詢的範例

垂直合併表(合併)

如果需要彼此相互附加資料,則可以直接在 Tableau 之畫布的邏輯層中,使用聯集選項。在某些情況下,您的資料庫不支援此選項,因此您可以改用自訂 SQL。

例如,假設您具有以下兩個表:November 和 December。

November December
列出客人 ID 及其對應派對人數的資料表。 列出客人 ID 及其對應派對人數的資料表。

您可以使用以下自訂 SQL 查詢將第二個表 December 附加到第一個表 November:

SELECT * FROM November UNION ALL SELECT * FROM December

查詢結果在資料網格中如下所示:

顯示客人 ID 和標準化派對人數的資料表。

有關合併選項的詳細資料,請參閱 聯集資料

變更欄位的資料類型以執行跨資料庫聯接

要在兩個表之間執行聯結時,您加入的欄位資料類型必須相同。如果欄位的資料類型不相同,則您可以在執行聯接之前使用自訂 SQL 變更資料類型(轉換)欄位。

例如,假設您要分別使用「根」和「ID」欄位聯接「Main」和「Sub」這兩個表。「根」欄位是數位類型,「ID」欄位是字串類型。您可以使用以下自訂 SQL 查詢將「根」的資料類型從數位變更為字串,以便可以使用「根」和「ID」欄位聯接「Main」和「Sub」表。

SELECT [Main].[Root] AS [Root_Number]
CAST([Main].[Root] AS INT] AS [Root_String]
FROM [Main]

此查詢的結果顯示原始「根」欄位以及轉換為字串的「根」欄位。

在 SQL 轉換操作後顯示數值資料和對應字串值的資料表。

有關聯接和跨資料庫聯接的詳細資料,請參閱 聯結資料

減小資料的大小

在使用非常大的資料集時,如果先減小資料大小,則有時您可以在處理資料時節省時間。

例如,假設您有一個名為 FischerIris 的大表。您可以使用以下自訂 SQL 查詢來檢索指定的列和記錄,從而減少您從 Tableau 連線到的資料集的大小。

SELECT
[FischerIris].[Species] AS [Species],
[FischerIris].[Width] AS [Petal Width],
COUNT([FischerIris].[ID]) AS [Num of Species]
FROM [FischerIris]
WHERE [FischerIris].[Organ] = 'Petal'
AND [FischerIris].[Width] > 15.0000
GROUP BY [FischerIris].[Species], [FischerIris].[Width]

重新組建您的資料(樞紐分析)

在某些情況下,您可能要使用需要在分析之前重新組建的表。雖然這種類型的任務可以藉由使用像樞紐分析這樣的選項在 Tableau 之畫布的實體層中完成,但您的資料庫可能不支援它。在這種情況下,您可以改用自訂 SQL。

例如,假設您具有下表:

顯示季節性 ID 和按缺陷或尺寸問題等原因分類的商品數量的資料表。

若要在 Tableau 中變更其結構並優化要分析的資料,則可以使用以下自訂 SQL 查詢:

SELECT Table1.Season ID AS [Season ID],
Table1.Items - Don't like AS [Quantity],
"Don't Like" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS [Season ID],
Table.Items - Defective AS [Quantity],
"Defective" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS [Season ID],
Table1.Items - Too big AS [Quantity],
"Too Big" AS [Reason]
FROM Table1
UNION ALL
SELECT Table1.Season ID AS Season ID,
Table1.Items - Too small AS [Quantity]
"Too Small" AS [Reason]