擷取資料

擷取是儲存的資料子集,您可以使用這些資料子集來改善效能,或利用原始資料中沒有或不支援的 Tableau 功能。在建立資料的擷取時,您可以透過使用篩選器和設定其他限制來減少資料總數。建立擷取後,可使用原始資料中的資料對其進行重新整理。在重新整理資料時,您可以選取進行完全重新整理(這樣做將會替換所有擷取內容),或者可以執行累加式重新整理(這樣做僅會新增自上次重新整理以來新增的列)。

擷取具有優勢的一些原因:

  • 支援大型資料集:您可以建立包含數十億列資料的擷取。

  • 幫助提高效能:當您與使用擷取資料來源的檢視交互時,你所體驗到的效能通常比基於原始資料連線與檢視交互時所體驗到的效能更好。

  • 支援附加功能:擷取允許您利用原始資料無法可用或不支援的 Tableau 功能,例如不重複計數計算功能。

  • 提供對資料的離線存取權限:如果您在使用 Tableau Desktop,當原始資料不可用時,擷取允許您在本機儲存和處理資料。例如,當您旅行時

要擷取的最新變更

網路中的擷取

從版本 2020.4 開始,資料擷取可在 Web 製作過程中和內容伺服器中提供。現在,您不再需要使用 Tableau Desktop 來擷取資料來源。有關詳情,請參閱在 Web 上建立擷取

邏輯資料表和實體資料表擷取

隨著在 2020.2 版之 Tableau 資料模型中引入邏輯資料表和實體資料表,擷取儲存體選項已從單一表和多表變更為邏輯資料表和實體資料表。這些選項能夠更清楚地描述如何儲存擷取。有關詳情,請參閱決定應以何種方式儲存擷取資料

棄用 .tde 格式

附註:從 2023 年 3 月開始,使用 .tde 格式的擷取在 Tableau Cloud、Tableau Public 和 Tableau Server(版本 2023.1.0)中被棄用。有關詳情,請參閱擷取升級為 .hyper 格式

從 10.5 版本開始,當您建立一個新的擷取時,它將使用 .hyper 格式。.hyper 格式的擷取利用了改進的資料引擎,此引擎針對更大的資料集支援更快的分析和查詢效能。

同樣,使用版本 10.5 或更新版本對 .tde 擷取執行與擷取相關的工作時,擷取會升級為 .hyper 擷取。在 .tde 擷取升級為 .hyper 擷取後,它不能恢復為 .tde 擷取。有關詳情,請參閱擷取升級為 .hyper 格式

檢視中值和標記的變化

為了提高擷取效率和可擴展性,可以在版本 10.5 或更新版本中以不同方式計算擷取中的值(與版本 10.4 及更低版本相比)。變更計算值的方式可能會影響檢視中標記的填充方式。在某些極少數的情況下,變更可能會導致檢視形狀發生變化或變為空白。這些變更可能也適用於多連線資料來源、使用檔資料即時連線的資料來源、連線到 Google Sheets 資料的資料來源、基於雲端的資料來源、純擷取資料來源以及 WDC 資料來源。

若要瞭解使用版本 2022.4 後您可能會在檢視中看到的某些差異,請檢視以下各部分。

日期和日期時間值的格式

在版本 10.5 和更高版本中,關於如何透過 DATE、DATETIME 和 DATEPARSE 函數解譯日期字串,擷取將遵循更一致且更嚴格的規則。這會影響日期的解析方式,或者這些函數所允許的日期格式和模式。更具體地說,這些規則可以概括如下:

  1. 計算日期,然後按欄進行分析,而不是按列進行分析。
  2. 計算日期,然後根據建立工作簿所在的位置的地區設定進行分析,而不是根據開啟工作簿所在的電腦的地區設定進行分析。

這些新規則使擷取更加高效,並能組建與商業資料庫一致的結果。

但是,由於存在這些規則,特別是在建立工作簿時的地區設定與開啟工作簿時的地區設定或工作簿所發佈到的伺服器的地區設定不同時,您可能會發現 1.) 日期和日期時間值變更為不同的日期和日期時間值,或者 2.) 日期和日期時間值變更為 Null。當日期和日期時間值變更為不同的日期和日期時間值或者變為 Null 時,通常表示基礎資料存在問題。

為什麼使用版本 10.5 和更高版本後您可能會在擷取資料來源中看到日期和日期時間值發生變化,以下是一些常見的原因。

日期/日期時間值發生變化的常見原因

Null 值的常見原因

  • 當函數必須在單個列中解析多種日期格式時。如果日期不確定並且可以用多種不同方式進行解釋,則會根據 Tableau 為該列確定的格式來解釋日期。有關一些範例,請參閱以下日期案例 1日期案例 2
  • 當函數必須解析 YYYY-MM-DD (ISO) 格式時。有關範例,請參閱日期案例 3
  • 當函數沒有足夠的資訊來推導時間時,它可能會將值解釋為 [00:00:00.0] ,並使用 [0] 來表示小時、分鐘、秒和毫秒。
  • 當函數沒有足夠的資訊來推導時間時,它可能會將月份值解釋為 [1] 或 [一月] 。
  • 當函數解析年份時,會按以下方式解釋年份:
    • 年份 [07] 被解釋為 [2007]
    • 年份 [17] 被解釋為 [2017] 。
    • 年份 [30] 被解釋為 [2030] 。
    • 年份 [69] 被解釋為 [2069] 。
    • 年份 [70] 被解釋為 [1970]。
  • 當函數必須在單個列中解析多種日期格式時。在 Tableau 確定日期格式後,列中與格式不同的所有其他日期都將變為 Null 值。有關一些範例,請參閱以下日期案例 1日期案例 2
  • 當函數必須解析 YYYY-MM-DD (ISO) 格式時。超出 [YYYY] 、 [MM] 或 [DD] 允許值的值將導致 null 值。有關範例,請參閱日期案例 3
  • 當函數必須解析包含尾隨字元的日期值時。例如,諸如 [午夜] 之類的時區和夏令時尾碼和關鍵字會導致出現 Null 值。
  • 當函數必須解析無效的日期或時間時。例如,32/3/2012 會導致出現 Null 值。再例如,25:01:61 會導致出現 Null 值。
  • 當函數必須解析矛盾的輸入時。例如,假設模式是 [dd.MM (MMMM) y'] ,輸入字串是 [1.09 (August) 2017] ,其中 [9] 和 [August] 都是月份。結果是 Null 值,因為月份值不一樣。
  • 當函數必須解析矛盾的模式時。例如,一個指定西曆 (y) 和 ISO 週 (ww) 混合的模式會導致出現 Null 值。
日期案例 1

假設您有一個以英語地區設定建立的工作簿,該工作簿使用 .tde 擷取資料來源。下表顯示了該擷取資料來源中包含的一個字串列。

2018/10/31
31/10/2018

2018/12/10

根據特定的英文地區設定,我們可以確定日期欄的格式遵循 MDY(月日年)格式。以下各表顯示了當使用 DATE 函數將字串值轉換為日期值時 Tableau 基於此地區設定所顯示的內容。

2018年10月31日
2018年10月31日
2018年12月10日

如果以德語地區設定開啟該擷取,您將看到以下內容:

31 Oktober 2018
31 Oktober 2018
12 Oktober 2018

但是,在使用版本 10.5 或更新版本以德語地區設定開啟擷取後,將會嚴格實施德語地區設定的 DMY(日月年)格式,並導致出現 Null 值,原因是其中一個值未遵循 DMY 格式。

Null
2018年10月31日
2018年10月12日
日期案例 2

假設您有另一個以英語地區設定建立的工作簿,該工作簿使用 .tde 擷取資料來源。下表顯示了該擷取資料來源中包含的數位日期列。

1112018
1212018
1312018
1412018

根據特定的英文地區設定,我們可以確定日期欄的格式遵循 MDY(月日年)格式。當使用 DATE 函數將數位值轉換為日期值時,以下各表展示了 Tableau 基於此地區設定所顯示的內容。

2018/11/1
2018/12/1
Null
Null
日期案例 3

假設您有一個使用 .tde 擷取資料來源的工作簿。下表顯示了該擷取資料來源中包含的一個字串列。

2018/10/31
2018-31-10

2018/12/10

2018/10/12

由於日期使用 ISO 格式,因此日期列始終採用 YYYY-MM-DD 格式。以下各表顯示了當使用 DATE 函數將字串值轉換為日期值時 Tableau 所顯示的內容。

2018年10月10日
Null
2018年12月10日
2018年10月12日

附註:在版本 10.4(及更低版本)中,ISO 格式和其他日期格式可能組建不同的結果,具體情況取決於建立工作簿採用的地區設定。例如,在英語地區設定中,2018-12-10 和 2018/12/10 均可能組建 December 12, 2018。但是,在德語地區設定中,2018-12-10 可能組建 December 12, 2018,2018/12/10 可能組建 October 12, 2018。

排序順序和區分大小寫

擷取支援排序規則,因此可以更恰當地對包含重音符號或大小寫不同的字串值進行排序。

例如,假設您有一個字串值表。就排序順序而言,這意味著,像 [Égypte] 這樣的字串值現在恰當地列在 [Estonie] 之後和 [Fidji] 之前。

關於 Excel 資料: 

就大小寫而言,這意味著 Tableau 存儲值的方式在版本 10.4(及更低版本)和版本 10.5(及更高版本)之間已變更。但是,用於排序和比較值的規則未變更。在版本 10.4(及更早版本)中,像 [House] 、 [HOUSE] 和 [houSe] 這樣的字串值被視為相同,並用一個代表性的值存儲。在版本 10.5(及更高版本)中,這些相同的字串值被為唯一,因此存儲為單獨的值。有關詳情,請參閱 值計算方式的變更

擺脫「前 N 個」查詢中的束縛

如果擷取中的「前 N 個」查詢針對排名中的特定位置組建重複值,則使用版本 10.5 或更新版本時,擺脫束縛的位置可能會有所不同。例如,假設您建立了一個 [前 3個] 篩選器。位置 3、4 和 5 具有相同的值。使用版本 10.4 和更早版本時,最前項篩選器可能會返回位置 1、2 和 3。但是,使用版本 10.5 或更新版本時,最前項篩選器可能會返回位置 1、2 和 5。

浮點值的精度

擷取能更好地利用電腦上的可用硬體資源,因此能夠以高度並行的方式執行數學運算。正因如此,.hyper 擷取的實數彙總順序可能會不同。採用不同方式對數位進行彙總後,每次計算彙總時您可能都會在檢視中的小數點後看到不同的值。這是因為浮點加法和乘法不一定遵循結合律。即,(a + b) + c 不一定與 a + (b + c) 相同。同樣,由於浮點乘法不一定遵循指派律,因此實數的彙總順序也可能不同。即,(a x b) x c 不一定與 a x b x c 相同。.hyper 擷取中這種類型的舍入行為類似於商業資料庫中的浮點舍入行為。

例如,假設您的工作簿在由浮點值組成的彙總欄位上包含滑塊篩選器。由於浮點值的精度已變更,因此篩選器可能會排除定義篩選器範圍上限或下限的標記。沒有這些數字可能會導致出現一個空白檢視。要解決此問題,請移動篩選器上的滑塊或刪除並再次新增篩選器。

彙總的準確性

擷取能更好地利用電腦上的可用硬體資源,針對大資料集進行了優化,因此能夠以高度並行的方式計算彙總。正因如此,.hyper 擷取執行的彙總可能與商業資料庫中的結果類似,而超過專業統計計算軟體中的結果。如果使用小資料集或者需要更高的準確性,請考慮透過輔助線、摘要卡統計或者像方差、標準差、關聯或協方差這樣的表計算函數來執行彙總。

關於擷取的 [立即運算計算] 選項

如果使用較早版本的 Tableau Desktop 在 .tde 擷取中使用了 [立即運算計算] 選項,則某些計算欄位已經實現並因此已提前計算並存儲在擷取中。如果將擷取從 .tde 擷取升級為 .hyper 擷取,則不會包括擷取中以前實現的計算。您必須再次使用 [立即運算計算] 選項,確保擷取在升級後包括已實現的計算。有關詳情,請參閱在擷取中實現計算

新擷取 API

您可以使用 Extract API 2.0 建立 .hyper 擷取。對於以前使用 Tableau SDK 執行的任務(例如發佈擷取),您可以使用 Tableau Server REST API 或 Tableau Server 使用者端 (Python) 庫。對於重新整理工作,也可以使用 Tableau Server REST API。有關詳情,請參閱Tableau Hyper API

建立擷取

儘管 Tableau 工作流程中有多個選項可供建立擷取,但是下面介紹了主要方法。

  1. 連線到資料並在 [資料來源] 頁面上設定資料來源後,請在右上角選取 [擷取] ,然後按一下 [編輯] 連結以開啟 [擷取資料] 對話方塊。

  2. (可選)設定以下一項或多項選項來指示 Tableau 如何存儲、定義篩選器並限制擷取中的資料量:

    • 決定應以何種方式儲存擷取資料

      可以選擇讓 Tableau 使用兩種結構(架構)之一將資料存放在擷取中:邏輯表(標準化架構)或實體表(標準化架構)。有關邏輯表和實體表的詳情,請參閱 Tableau 資料模型

      所選的選項取決於您的需求。

      • 邏輯表

        使用資料來源中每個邏輯表的單一擷取表來存放資料。定義邏輯表的實體表會合併,並與該邏輯表存放在一起。例如,如果資料來源是由單一邏輯表組成,則資料將存放在單一表中。如果資料來源是由三個邏輯表組成(每個邏輯表包含多個實體表),則擷取資料會存放在三個表中,每個邏輯表一個。

        當您想使用其他擷取屬性(例如擷取篩選條件、彙總、前 N 個,或其他需要非標準化資料的功能)來限制擷取中的資料量時,請選取「邏輯表」。當您的資料使用直通函數 (RAWSQL) 時,也會使用邏輯表。這是 Tableau 用於存儲擷取資料的預設結構。如果在擷取包含聯接時使用此選項,則會在建立擷取時應用聯接。

      • 實體表

        使用資料來源中每個實體表的單一擷取表來存放資料。

        若擷取由使用一或多個等效聯結合併的表組成,並且滿足下面列出的使用「實體表」選項的條件,請選取「實體表」。如果使用此選項,則會在查詢時執行聯結。

        此選項能夠潛在地提升效能和減小擷取檔案的大小。有關 Tableau 建議如何使用「實體表」選項的詳情,請參閱使用「實體表」選項的提示。在某些情況下,您也可以使用此選項作為列級安全性的解決方法。有關使用 Tableau 的列級安全性的詳細資料,請參閱限制列層級存取權限

        使用「實體表」選項的條件

        若要使用「實體表」選項存放擷取,擷取中的資料必須滿足下面列出的所有條件。

        • 實體資料表之間的所有聯結均為等值 (=) 聯結
        • 用於關係或聯結的欄資料類型皆相同
        • 未使用直通函數 (RAWSQL)
        • 未設定累加式重新整理
        • 未設定擷取篩選器
        • 未設定「前 N 個」或抽樣

        如果以「實體表」方式儲存擷取,則無法向其附加資料。對於邏輯資料表,不能將資料附加到具有多個邏輯資料表的擷取。

      附註:「邏輯表」和「實體表」選項都只會影響擷取中資料的存放方式。這些選項不影響擷取中的表在 [資料來源] 頁面上的顯示方式。

      例如,假設您的擷取由一個包含三個實體資料表的邏輯資料表組成。如果直接開啟設定為使用預設選項「邏輯表」的擷取 (.hyper) 檔案,則會在「資料來源」頁面中看到列出一個表。但是,如果開啟使用打包資料來源 (.tdsx) 檔案的擷取或包含其對應擷取 (.hyper) 檔案的資料來源 (.tdsx) 檔案,您將在 [資料來源] 頁面上看到包含擷取的全部三個表。

    • 確定要擷取多少資料 

      按一下 [新增] 定義一個或多個篩選器,以限制基於欄位及欄位值擷取的資料量。

    • 對擷取中的資料進行彙總 

      選取 [彙總可視維度的資料] 以使用度量的預設彙總來彙總度量。對資料進行彙總可以合併列,並且可以最大限度地減少擷取檔案的大小並提高效能。

      選取對資料進行彙總時,也可以選取按指定的日期層級(例如 [年] 、 [月] 等)來 [匯總日期] 。下面的範例說明了如何為您可以選取的每個彙總選項擷取資料。

      原始資料每個記錄都顯示為一個單獨列。資料中共有 7 列。
      彙總可視維度的資料

      (無匯總)

      具有相同日期和地區的記錄已彙總到一列中。擷取中共有 5 列。
      彙總可視維度的資料
      (按 [月] 匯總日期)
      日期已按 [月] 層級進行匯總,並且具有相同地區的記錄已彙總到一列中。擷取中共有 3 列。
    • 選取要擷取的列

      選取要擷取的列數。

      可以擷取所有列 N 列。Tableau 首先會應用篩選器和彙總,然後從經過篩選和彙總的結果中擷取列數。列數選項取決於要從中進行擷取的資料來源的類型。

      附註:

      • 並非所有資料來源都支援抽樣。因此,您在 [擷取資料] 對話方塊中可能看不到 [抽樣] 選項。

      • 擷取中將不包括您最初在 [資料來源] 頁面或工作表標籤頁中隱藏的任何欄位。按一下 [隱藏所有未使用的欄位] 按鈕可將這些隱藏欄位從擷取中移除。

  3. 完成後,按一下 [確定]

  4. 按一下工作表標籤頁。按一下工作表標籤頁可啟動擷取建立過程。

  5. 在隨後顯示的對話方塊中,選取一個用於儲存擷取的位置,為該擷取檔指定名稱,然後按一下 [儲存]

    如果 [儲存] 對話方塊未顯示,請參閱下面的擷取疑難排解部分。

關於使用擷取的一般提示

儲存工作簿以保留與擷取的連線

建立擷取後,工作簿將開始使用您的資料的擷取版本。但是,在儲存工作簿之前,不會保留與資料的擷取版本的連線。這意味著,如果不先儲存就關閉工作簿,則在下次開啟該工作簿時,該工作簿將連線到原始資料來源。

在抽樣資料與整個擷取之間切換

當您使用大型擷取時,您可能需要建立一個帶資料樣本的擷取,以便每次將欄位放在工作表標籤頁中的架上時,您都可以設定檢視,同時避免長時間查詢。然後,可以在使用擷取(帶資料樣本)和使用整個資料來源之間進行切換,方法是在 [資料] 功能表中選取資料來源,然後選取 [使用擷取]

不要直接連線到擷取

由於系統已將擷取儲存至檔案系統,因此您可以使用新的 Tableau Desktop 執行個體直接連線到這些擷取。之所以不推薦這樣做,有以下幾個原因:

  • 表名稱將不同。儲存在擷取中的表會使用特殊命名來保證名稱唯一性,而且可能不是人類可讀的命名方式。
  • 無法重新整理擷取。若直接連線到擷取,Tableau 會將該檔案視為真正的來源,而不是複製的基礎資料。因此,無法將其與來源資料回溯關聯。
  • 這樣將會遺失資料模型與關係。資料模型和表之間的關係儲存在 .tds 檔案中,而不是 .hyper 檔案中,因此直接連線到 .hyper 檔案時,將會遺失這項資訊。此外,如果擷取使用邏輯資料表儲存體,則看不到對原始基礎實體資料表的任何參照。

從工作簿中移除擷取

您可以隨時移除擷取,方法是在 [資料] 功能表中選取擷取資料來源,然後選取 [擷取] > [移除] 。移除擷取時,您可以選取 [僅從工作簿中移除擷取] [移除並刪除擷取檔] 。後一個選項將從硬碟中刪除擷取。

參閱擷取歷程記錄

您可以檢視上次更新擷取的時間以及其他詳細資料,方法是在 [資料] 功能表中選取資料來源,然後選取 [擷取] > [歷史記錄]

如果開啟所儲存的帶有擷取的工作簿,並且 Tableau 找不到此擷取,則在出現提示時,請在 [未找到擷取] 對話方塊中選取以下選項之一:

  • 尋找擷取:如果擷取存在,但不在 Tableau 最初儲存它的位置中,請選取此選項。按一下 [確定] 以開啟 [開啟檔] 對話方塊,您可以在其中指定擷取檔案的新位置。

  • 刪除擷取:如果您沒有對擷取的進一步需求,請選取此選項。這相當於關閉資料來源。將會刪除引用資料來源的所有已開啟工作簿。

  • 停用擷取:使用從中建立擷取的原始資料來源,而不是擷取。

  • 重新組建擷取:重新組建擷取。會自動應用您在最初建立擷取時指定的所有篩選器和其他自訂項。

使用「實體表」選項的提示

在設定和使用擷取時,Tableau 一般建議您使用預設資料儲存選項「邏輯表」。在很多情況下,擷取所需的某些功能(例如擷取篩選條件),僅在您使用「邏輯表」選項時可用。

超過預期大小之擷取的「邏輯表」選項

應該謹慎使用「實體表」選項來協助特定情況,例如資料來源符合使用「實體表」選項的條件,而且擷取大小超過預期。若要確定擷取大小是否超過預期,使用「邏輯表」選項之擷取中的列總和必須大於擷取建立前所有組合表的列總和。如果遇到這種情況,請嘗試改用「實體表」選項。

使用「實體表」選項時的替代篩選建議

使用「實體表」選項時,會停用有助於減少擷取中資料的其他選項,例如擷取篩選條件、彙總、前 N 個和取樣。如果您需要減少使用「實體表」選項的擷取資料,請考慮使用以下其中一項建議,先篩選資料,然後再將資料轉移至 Tableau Desktop:

  • 使用自訂 SQL 連線至資料並定義篩選器:使用自訂 SQL 連線至資料,而不是連線至資料庫表。建立自訂 SQL 查詢時,請確定它包含您需要減少擷取資料的適當篩選層級。有關 Tableau Desktop 中的自訂 SQL 的詳情,請參閱連線到自訂 SQL 查詢

  • 在資料庫中定義檢視:如果您有資料庫的寫入權限,請考慮定義一個僅包含您所需擷取資料的資料庫檢視,然後從 Tableau Desktop 連線至資料庫檢視。

擷取的列層級安全性

如果要在列層級保護擷取資料,建議使用「實體資料表」選項來實現此目的。有關在 Tableau 列級安全性的詳情,請參閱限制列層級存取權限

擷取疑難排解

  • 建立擷取花費很長時間:根據資料集的大小,建立擷取資料可能需要較長時間。不過,在擷取了資料並將其儲存到電腦後,效能將會提高。

  • 未建立擷取: 如果資料集包含非常大量的列(例如,數千個列),則在某些情況下 Tableau 可能無法建立擷取。如果遇到問題,請考慮擷取較少的欄或重新組建基礎資料。

  • [儲存] 對話方塊未顯示未依據 .twbx 建立擷取: 如果按照上面的過程從已封裝工作簿中擷取資料, [儲存] 對話方塊將不會顯示。在依據已封裝工作簿 (.twbx) 建立擷取時,擷取檔會自動存儲在與已封裝工作簿關聯的檔案包中。若要存取依據已封裝工作簿建立的擷取檔案,您必須將工作簿解包。有關詳情,請參閱已封裝工作簿

感謝您的意見回饋!