搭配數據流使用累加式重新整理

透過數據流,您可以將大量數據帶入 Power BI 或組織提供的記憶體。 不過,在某些情況下,在每次重新整理中更新源數據的完整複本並不實用。 理想的替代方案是 累加式重新整理,可為數據流提供下列優點:

  • 重新整理速度較快:只有已變更的數據需要重新整理。 例如,只重新整理 10 年數據流的最後五天。
  • 重新整理更可靠:例如,不需要維護對揮發性來源系統的長時間執行連線。
  • 資源耗用量降低:重新整理的數據較少,可減少記憶體和其他資源的整體耗用量。

累加式重新整理適用於在Power BI 中建立的數據流,以及在Power Apps中建立的數據流。 本文顯示來自Power BI的畫面,但這些指示適用於在Power BI 或Power Apps 中建立的數據流。

注意

分析數據流中數據表的架構變更時,會進行完整重新整理,以確保所有產生的數據都符合新的架構。 因此,任何以累加方式儲存的數據都會重新整理,而在某些情況下,如果來源系統未保留歷史數據,則會遺失。

數據流的累加式重新整理。

在 Power BI 中建立的數據流中使用累加式重新整理,需要數據流位於 進階版 容量的工作區中。 Power Apps 中的累加式重新整理需要 Power Apps 每個應用程式或個別使用者方案,而且僅適用於以 Azure Data Lake 儲存體 作為目的地的數據流。

在 Power BI 或 Power Apps 中,使用累加式重新整理需要內嵌至數據流的源數據具有 DateTime 字段,累加式重新整理可以篩選。

設定數據流的累加式重新整理

數據流可以包含許多數據表。 累加式重新整理是在數據表層級設定,可讓一個數據流同時保留完整重新整理的數據表和累加式重新整理的數據表。

若要設定累加式重新整理的數據表,請從設定數據表開始,如同任何其他數據表一樣。

建立並儲存數據流之後,請選取數據表檢視中的 [累加累加式重新整理。式重新整理],如下圖所示。

數據流的累加式重新整理圖示。

當您選取圖示時,[累加式重新 整理設定 ] 視窗隨即出現。 開啟累加式重新整理。

數據流的累加式重新整理。

下列清單說明 [累加式重新整理設定] 視窗中的設定

  • 開啟/關閉累加式重新整理切換:開啟或關閉數據表的累加式重新整理原則。

  • 篩選欄位下拉式清單:選取應該篩選資料表以遞增的查詢欄位。 此欄位只包含 DateTime 欄位。 如果您的數據表未包含 DateTime 欄位,則無法使用累加式重新整理。

    重要

    為累加式重新整理篩選選擇未變更的日期欄位。 如果域值變更(例如,使用 日期修改 的欄位),這可能會導致 重新整理失敗,因為數據中有重複的值

  • 儲存/重新整理過去的數據列:上一個影像中的範例說明接下來的幾個設定。

    在此範例中,我們會定義重新整理原則,以總共儲存 5 年的數據,並以累加方式重新整理 10 天的數據。 假設數據表每天重新整理,則會針對每個重新整理作業執行下列動作:

    • 新增一天的數據。

    • 重新整理 10 天,截至目前日期為止。

    • 拿掉目前日期前五年之前的行事曆年份。 例如,如果目前的日期是 2019 年 1 月 1 日,則會移除 2013 年。

    第一個數據流重新整理可能需要一些時間才能匯入所有五年,但後續的重新整理可能會更快完成。

  • 偵測數據變更:累加式重新整理 10 天比 5 年的完整重新整理更有效率,但您或許可以做得更好。 當您選取 [ 偵測資料變更 ] 複選框時,您可以選取日期/時間數據行來識別並重新整理資料已變更的天數。 這假設來源系統中存在這類數據行,這通常是用於稽核目的。 此數據行的最大值會針對累加範圍中的每個期間進行評估。 如果自上次重新整理之後尚未變更該數據,就不需要重新整理期間。 在此範例中,這可能會進一步將累加式重新整理的天數從 10 減少到 2。

    提示

    目前的設計要求用來偵測數據變更的數據行會保存並快取到記憶體中。 您可能想要考慮下列其中一種技術,以減少基數和記憶體耗用量:

    • 重新整理時只保存此數據行的最大值,或許是使用Power Query 函式。
    • 根據您的重新整理頻率需求,將精確度降低到可接受的層級。
  • 只有重新整理完成期間:假設您的重新整理排程為每天上午 4:00 執行。 如果在當天的前四小時內,來源系統中出現數據,您可能不想考慮它。 一些商業計量,如石油和天然氣行業每天的桶,不是實際或明智的考慮,基於部分天數。

    另一個只重新整理完整期間是適當的範例是重新整理來自金融體系的數據。 想像一下,在月份第 12 個日曆日核准前一個月的數據所在的金融體系。 您可以將累加範圍設定為一個月,並排程重新整理以在當月第 12 天執行。 選取此選項後,系統會在 2 月 12 日重新整理 1 月數據(最近一次完成的每月期間)。

注意

數據流累加式重新整理會根據下列邏輯決定日期:如果排程重新整理,數據流的累加式重新整理會使用重新整理原則中定義的時區。 如果沒有重新整理的排程存在,累加式重新整理會使用執行重新整理的計算機的時間。

設定累加式重新整理之後,數據流會自動改變您的查詢,以包含依日期篩選。 如果數據流是在 Power BI 中建立的,您也可以使用 Power Query 中的進階編輯器來編輯自動產生的查詢,以微調或自定義您的重新整理。 深入瞭解累加式重新整理及其在下列各節中的運作方式。

注意

當您編輯數據流時,Power Query 編輯器會直接連接到數據源,而且不會在累加式重新整理原則處理之後,在數據流中顯示快取/篩選的數據。 若要檢查數據流內快取的數據,請在設定累加式重新整理原則並重新整理數據流之後,從 Power BI Desktop 連線到數據流。

累加式重新整理和鏈接數據表與計算數據表

對於 鏈接 數據表,累加式重新整理會更新源數據表。 由於鏈接數據表只是原始數據表的指標,因此累加式重新整理不會影響鏈接數據表。 根據源數據表定義的重新整理原則重新整理時,任何鏈接的數據表都應該假設來源中的數據會重新整理。

計算數據表是以透過資料存放區執行的查詢為基礎,這可以是另一個數據流。 因此,計算數據表的行為方式與鏈接數據表相同。

由於計算數據表和鏈接數據表的行為類似,因此兩者的需求和設定步驟都相同。 其中一個差異在於,針對計算數據表,在某些設定中,累加式重新整理無法以優化的方式執行,因為數據分割的建置方式。

在累加式和完整重新整理之間變更

數據流支援在累加式和完整重新整理之間變更重新整理原則。 當變更在任一方向發生時(完整到累加或累加到完整),變更會影響下一次重新整理后的數據流。

將數據流從完整重新整理移至累加式時,新的重新整理邏輯會遵循重新整理視窗並依累加式重新整理設定中所定義的遞增來更新數據流。

將數據流從累加式重新整理移至完整重新整理時,累加式重新整理中累積的所有數據都會由完整重新整理中定義的原則覆寫。 您必須核准此動作。

累加式重新整理中的時區支援

數據流累加式重新整理取決於其執行時間。 查詢的篩選取決於查詢的執行日期。

為了容納這些相依性並確保數據一致性,數據流的累加式重新整理現在會針對重新整理案例實作下列啟發學習法:

  • 在系統中定義排程重新整理的情況下,累加式重新整理會使用排程重新整理區段中的時區設定。 這可確保重新整理數據流的人員在哪個時區,一律會與系統的定義一致。

  • 如果未定義任何排程的重新整理,數據流會使用執行重新整理之使用者計算機的時區。

您也可以使用 API 叫用累加式重新整理。 在此情況下,API 呼叫可以保存重新整理中使用的時區設定。 使用 API 有助於測試和驗證。

累加式重新整理實作詳細數據

數據流會使用數據分割進行累加式重新整理。 數據流中的累加式重新整理會保留數據分割數目下限,以符合重新整理原則需求。 卸除超出範圍的舊分割區,這會維護滾動視窗。 分割區會以機會方式合併,減少所需的分割區總數。 這可改善壓縮,在某些情況下可以改善查詢效能。

本節中的範例會共用下列重新整理原則:

  • 在最後 1 季儲存數據列
  • 過去10天內重新整理數據列
  • 偵測數據變更 = False
  • 僅重新整理完成天數 = True

合併分割區

在此範例中,日分割區會在超出累加範圍之後自動合併到月份層級。 累加範圍中的數據分割必須以每日數據粒度進行維護,以只允許重新整理那些日子。 執行日期 12/11/2016 的重新整理作業會合併 11 月的天數,因為它們落在累加範圍之外。

合併數據流中的數據分割。

卸除舊數據分割

拿掉落在總計範圍之外的舊分割區。 執行日期 1/2/2017 的重新整理作業會卸除 2016 年第 3 季的數據分割,因為它超出總範圍。

卸除數據流中的舊數據分割。

從長時間失敗中復原

此範例會模擬系統如何從長時間失敗中正常復原。 假設重新整理不會成功執行,因為數據源認證已過期,而且問題需要 13 天才能解決。 累加範圍只有10天。

下一次成功的重新整理作業,使用 執行日期 1/15/2017,必須回填遺失的 13 天並重新整理。 它也需要重新整理前九天,因為它們未依正常排程重新整理。 換句話說,累加範圍會從10天增加到22天。

下一個重新整理作業,使用 執行日期 1/16/2017,利用 2016 年第 4 季和 2016 年第 4 季合併天數的機會。

從數據流中長時間失敗復原。

數據流累加式重新整理和數據集

數據流累加式重新整理和數據集累加式重新整理是設計來同時運作。 可接受並支持在數據流中以累加方式重新整理數據表、完全載入數據集,或以累加方式載入數據集的數據流中完整載入數據表。

這兩種方法都會根據您在重新整理設定中指定的定義運作。 詳細資訊:Power BI 中的累加式重新整理 進階版

另請參閱

本文說明數據流的累加式重新整理。 以下是一些可能很有用的文章:

如需有關 Power Query 和排程重新整理的詳細資訊,您可以閱讀下列文章:

如需 Common Data Model 的詳細資訊,您可以閱讀其概觀文章: