改善跨資料庫聯結的效能

重要提示:此功能會暫時將資料移至 Tableau 之外。請確保您連線的資料庫來自受信任的來源。

允許 Tableau 使用資料庫而不是 Hyper 執行聯結,可以提高聯結來自單一檔案和單個資料庫的資料時的效能。啟用此選項時,Tableau 選擇最快的選項(Hyper 或連線的資料庫)。如果 Tableau 使用已連線的資料庫,則會將檔案連線中的資料移動到資料庫中的暫存資料表,並在那裡執行聯結。

功能條件

唯有符合下列條件時,才可使用此選項:

  • 資料來源由一個或多個基於檔案的連線和單個基於 SQL 的連線組成。
  • 檔案是 Microsoft Excel、PDF 或文字(.csv、.txt、.tsv 或 .tab)檔案類型。
  • 連線的資料庫是下列其中一項:
    • Microsoft SQL Server
    • Oracle
    • PostgreSQL
    • Vertica
    • Teradata
  • 聯結類型為內部聯結。
  • Web 製作中,已啟用「允許使用者使用 Web 製作」選項。

覆寫功能條件

作為管理員,您可以覆寫檔案大小、聯結類型和單個檔案連線限制,並強制 Tableau 使用即時資料庫執行聯結。這可讓您進行實驗並確定最佳效能設定。單個資料庫連線要求仍然適用。

若要啟用此選項,請從命令列輸入以下資訊:

  • Tableau Desktop:輸入命令 tableau.exe -DForceAlternativeFederationEngine=true
  • Tableau Server:輸入 tsm configuration 命令 tsm configuration set -k native_api.force_alternative_federation_engine -v true

    有關在 Tableau Server 中設定組態值的詳情,請參閱 Tableau Server 說明中的「tsm configuration set 選項」(連結在新視窗開啟)

啟用跨資料庫聯結的效能選項

  1. 連線到第一個資料來源。
    • Tableau Desktop 中:在「開始」頁面的「連線」下,連線至支援的檔案類型或支援的資料庫類型。此步驟會在 Tableau 資料來源中建立第一個連線。
    • Web 製作中:在「首頁」「探索」頁面,按一下「建立」>「工作簿」以開啟新的工作簿,然後連線至您的資料。此步驟會在 Tableau 資料來源中建立第一個連線。
  2. 選取您想要連線的檔案或資料庫,然後按兩下表或將表拖曳到畫布上。

  3. 在左側窗格中的「連線」下,按一下「新增」按鈕(在 Web 製作中為 )以將第二個連線新增到 Tableau 資料來源。

    畫面會顯示「 跨資料庫聯結」選項。

    附註:如果看不到此選項,請檢查您是否只使用支援的資料來源,而且您只有兩個資料來源(一個檔案和一個資料庫類型)。否則,網站管理員可能將「跨資料庫聯結」設定選項設定為「僅 Tableau」

  4. 若要變更 Tableau 執行聯結的方式,請按一下「跨資料庫聯結」選項旁邊的「編輯」
  5. 「跨資料庫聯結」對話方塊中,選取下列其中一個選項,然後按一下「確定」
    • 「使用 Tableau 或現有資料庫」。這個選項可讓 Tableau 選擇執行聯結最快的選項:Hyper 或您連線的資料庫。
    • 「僅使用 Tableau」。此選項是預設值,而且一律使用 Hyper 來執行聯結。

    「跨資料庫聯結」選項會從「使用 Tableau」(使用 Hyper)這一預設選項變更為新選項「使用您的資料庫」,這取決於您的選擇。

    重要提示:如果您選取「使用 Tableau 或現有資料庫」,Tableau 在執行聯結時將選擇最快的選項。此行為由一組包含聯結類型的準則預先決定。例如,Tableau 將一律選擇 Hyper 進行非內部聯結。

    如果 Tableau 使用 Hyper 執行聯結,此處理序會在背景發生,而不會顯示任何指標來識別執行聯結的位置。

  6. 透過從資料來源中選取欄位、選取聯結運運算元並從新增的表中選取欄位來新增一個或多個聯結子句。檢查聯結子句以確保它反映您要連線表的方式。

關於使用多連線資料來源

使用多連線資料來源就像使用任何其他資料來源一樣,本部分中討論了一些警告。

聯集連線內的資料

若要聯集資料,您必須使用同一連線中的文字表或 Excel 表。這就是說,您不能聯集不同資料庫中的表。在 Tableau Desktop 中,您可以聯集不同 Excel 工作簿中的表以及不同目錄中的檔案。有關詳情,請參閱使用萬用字元搜尋來聯集表 (Tableau Desktop)

如果您需要從不同資料庫中聯集資料,請使用 Tableau Prep(連結在新視窗開啟)

計算

排序規則是指確定字串值應如何進行比較和排序的資料庫規則。一般來說,排序規則由資料庫進行處理。然而,當使用跨資料庫聯接時,您可能會聯接具有不同排序規則的列。

例如,假設您的跨資料庫聯接使用聯接鍵,該聯接鍵由 SQL Server 中區分大小寫的欄和 Oracle 中不區分大小寫的欄組成。在這種情況下,Tableau 會將某些排序規則對應到其他項,以儘量正確解釋值。

跨資料庫聯接中使用以下規則:

  • 如果某一列使用 Unicode 國際化元件 (ICU) 排序規則標準,則 Tableau 會使用其他列的排序規則。
  • 如果所有欄都使用 ICU 排序規則標準,則 Tableau 會使用左表的欄的排序規則。
  • 如果列不使用 ICU 排序規則標準,則 Tableau 會使用二進位排序規則。二進位排序規則是指資料庫的地區設定和欄的資料類型,用於確定字串值應如何進行比較和排序。

保持 Excel 資料的大小寫敏感度

當在執行聯結時,如果需要保留 Excel 資料的區分大小寫,可以從「資料」功能表啟用「保留字元大小寫 (Excel)」選項。

選取此選項時,Tableau 將維持大小寫並唯一標識大小寫不同的值,而不會將這些值組合起來,產生不同的列數。

例如,假設一張工作表包含「House」,另一張工作表包含「house」和「HOUSE」。預設情況下,Tableau 會忽略大小寫,並將「house」的所有三種變化視為相同。啟用「保持字元大小寫 (Excel)」的情況下,聯結資料表時,Tableau 會保留字元大小寫差異。「House」、「house」和「HOUSE」被視為不同的值。

附註:此選項適用於所有 Tableau 支援的語言,且不依賴於作業系統的地區設定。此選項僅適用於 Microsoft Excel 資料來源。

計算和多連線資料來源

在多連線資料來源中只能使用一部分計算。

  • 在 Tableau Desktop 中:您可以使用特定計算,條件是:
    • 多連線資料來源中的所有連線都支援
    • Tableau 擷取支援。
  • 在 Web 製作(Tableau Cloud 和 Tableau Server)中:如果多連線資料來源中的所有連線都支援,您可以使用特定計算。

預存程序

預存程序不可用於多連線資料來源。

從連線內對資料進行樞紐分析

若要對資料進行樞紐分析,您必須使用同一連線中的文字欄或 Excel 欄。也就是說,您不能在樞紐分析中包括不同資料庫中的欄。

使擷取檔案成為第一個連線(僅限 Tableau Desktop)

連線到多連線資料來源中的擷取檔案時,請確保與擷取 (.hyper) 檔案的連線是第一個連線。這樣會保留可能屬於擷取的任何自訂,包括預設屬性變更、計算欄位、群組、別名等。

附註:如果必須連線到多連線資料來源中的多個擷取檔案,則只會保留第一個連線的擷取中的自訂項。

包含基於檔案的資料連線的多連線資料來源的擷取(僅限 Tableau Desktop)

如果要發佈包含基於檔案的資料(例如 Excel)的多連線資料來源的資料擷取,選取「包括外部檔案」選項會將基於檔案的資料複製為資料來源的一部分。在這種情況下,可以下載基於檔案的資料的副本,並且其他使用者可以存取其內容。如果您有意從擷取中排除的基於檔案的資料中存在敏感資訊,請勿在發佈資料來源時選取「包括外部檔案」

有關發佈資料來源詳情,請參閱發佈資料來源

關於查詢和跨資料庫聯接

對於每個連線,Tableau 會向聯接中的資料庫傳送獨立查詢。結果存放在一個臨時表中,採用擷取檔案格式。

重要提示:跨資料庫聯結可能會在資料庫之間移動資料。確保要加入的資料庫是可信來源。

例如,假設您建立與兩個表(dbo.listings 和 reviews$)的連線。這些表存放在兩個不同的資料庫(SQL Server 和 Excel)中。Tableau 會在每個連線中單獨查詢資料庫。資料庫執行查詢,並應用諸如篩選器和計算等自訂項,Tableau 將每個連線的結果存放在一個臨時表中。在此範例中,FQ_Temp_1 是與 SQL Server 的連線的臨時表,FQ_Temp_2 是與 Excel 的連線的臨時表。

SQL Server 表

Excel 表

當您執行跨資料庫聯接時,Tableau Desktop 會將這些臨時表聯結。這些臨時表是 Tableau 執行跨資料庫聯接所必需的。

聯接了這些表之後,套用前 N 個篩選器以將資料網格中顯示的值數限制為前 1000 列。應用此篩選器是為了說明保持資料網格的回應性以及「資料來源」頁面的整體性能。

聯接的表

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