資料流 Gen2 中的累加式重新整理 (預覽)
在本文中,我們會在數據流 Gen2 中介紹適用於 Microsoft Fabric Data Factory 的累加式數據重新整理。 當您使用數據流進行數據擷取和轉換時,在某些情況下,您特別需要重新整理新的或更新的數據,特別是隨著數據持續成長。 累加式重新整理功能可讓您減少重新整理時間、避免長時間執行的作業來增強可靠性,以及將資源使用量降至最低,藉此解決這項需求。
必要條件
若要在 Dataflow Gen2 中使用累加式重新整理,您需要符合下列必要條件:
- 您必須擁有網狀架構容量。
- 您的數據源支援 折疊 (建議),而且必須包含可用來篩選數據的 Date/DateTime 數據行。
- 您應該有支援累加式重新整理的數據目的地。 如需詳細資訊,請移至目的地 支援。
- 開始之前,請確定您已檢閱累加式重新整理的限制。 如需詳細資訊,請移至限制。
目的地支援
累加式重新整理支援下列資料目的地:
- Fabric 倉儲
- Azure SQL Database
- Azure Synapse Analytics
Lakehouse 等其他目的地可以搭配累加式重新整理使用,方法是使用參考暫存數據來更新數據目的地的第二個查詢。 如此一來,您仍然可以使用累加式重新整理來減少需要處理及從來源系統擷取的數據量。 但您必須從暫存的數據完整重新整理到數據目的地。
如何使用累加式重新整理
建立新的數據流 Gen2,或開啟現有的數據流 Gen2。
在數據流編輯器中,建立新的查詢,以擷取您想要以累加方式重新整理的數據。
檢查數據預覽,以確保查詢會傳回包含可用來篩選數據之 DateTime、Date 或 DateTimeZone 資料行的數據。
確定查詢完全折疊,這表示查詢已完全向下推送至來源系統。 如果查詢未完全折疊,您需要修改查詢,使其完全折疊。 您可以檢查查詢編輯器中的查詢步驟,以確保查詢完全折疊。
以滑鼠右鍵按下查詢,然後選取 [ 累加式重新整理]。
提供累加式重新整理的必要設定。
- 選擇要篩選依據的 DateTime 數據行。
- 從過去擷取數據。
- 貯體大小。
- 只有在此數據行中的最大值變更時,才擷取新的數據。
視需要設定進階設定。
- 需要累加式重新整理查詢才能完全折疊。
選取 [OK] \(確定\)以儲存設定。
如有需要,您現在可以設定查詢的數據目的地。 請確定您在第一次累加式重新整理之前執行這項設定,否則您的數據目的地只會包含上次重新整理之後的累加變更數據。
發佈 Dataflow Gen2。
設定累加式重新整理之後,數據流會根據您提供的設定,以累加方式重新整理數據。 數據流只會擷取自上次重新整理后變更的數據。 因此,數據流的執行速度會更快,耗用較少的資源。
累加式重新整理在幕後的運作方式
累加式重新整理的運作方式是將數據分割成以 DateTime 數據行為基礎的貯體。 每個貯體都包含自上次重新整理后變更的數據。 數據流會藉由檢查您所指定數據行中的最大值來知道變更的內容。 如果該貯體變更的最大值,數據流會擷取整個貯體,並取代目的地中的數據。 如果最大值未變更,數據流就不會擷取任何數據。 下列各節包含累加式重新整理如何逐步運作的高階概觀。
第一個步驟:評估變更
當數據流執行時,它會先評估數據源中的變更。 它會藉由比較 DateTime 數據行中的最大值與上一次重新整理中的最大值,來進行這項評估。 如果最大值已變更,或是第一次重新整理,數據流會將貯體標示為已變更,並列出它進行處理。 如果最大值未變更,數據流會略過貯體,而且不會處理它。
第二個步驟:擷取數據
現在數據流已準備好擷取數據。 它會擷取已變更之每個貯體的數據。 數據流會平行進行此擷取,以改善效能。 數據流會從來源系統擷取數據,並將其載入暫存區域。 數據流只會擷取值區範圍內的數據。 換句話說,數據流只會擷取自上次重新整理后變更的數據。
最後一個步驟:取代數據目的地中的數據
數據流會將目的地中的數據取代為新的數據。 數據流會 replace
使用 方法來取代目的地中的數據。 也就是說,數據流會先刪除該貯體目的地中的數據,然後插入新的數據。 數據流不會影響超出貯體範圍的數據。 因此,如果您在目的地中的數據早於第一個貯體,累加式重新整理不會以任何方式影響此數據。
累加式重新整理設定說明
若要設定累加式重新整理,您必須指定下列設定。
一般設定
需要一般設定,並指定累加式重新整理的基本組態。
選擇要篩選依據的 DateTime 數據行
此設定是必要的,並指定數據流用來篩選數據的數據行。 此數據行應該是 DateTime、Date 或 DateTimeZone 數據行。 數據流會使用此數據行來篩選數據,並只擷取自上次重新整理后變更的數據。
從過去擷取數據
此設定是必要的,並指定數據流應該擷取數據的時間。 此設定可用來擷取初始數據載入。 數據流會從指定時間範圍內的來源系統擷取所有數據。 可能的值包括:
- x 天
- x 周
- x 月
- x 季
- x 年
例如,如果您指定 1 個月,數據流會從上個月內的來源系統擷取所有新數據。
貯體大小
此設定為必要設定,並指定數據流用來篩選數據之貯體的大小。 數據流會根據 DateTime 數據行將數據分割成貯體。 每個貯體都包含自上次重新整理后變更的數據。 貯體大小會決定每個反覆運算中處理的數據量。 較小的貯體大小表示數據流處理每個反覆專案中的數據較少,但也表示需要更多反覆項目來處理所有數據。 較大的貯體大小表示數據流會在每個反覆項目中處理更多數據,但也表示處理所有數據所需的反覆專案較少。
只有當此數據行中的最大值變更時,才擷取新的數據
此設定是必要的,並指定數據流用來判斷資料是否變更的數據行。 數據流會將此數據行中的最大值與上一次重新整理中的最大值進行比較。 如果變更最大值,數據流會擷取自上次重新整理后變更的數據。 如果未變更最大值,數據流就不會擷取任何數據。
只擷取結束期間的數據
此設定是選擇性的,指定數據流是否應該只擷取結束期間的數據。 如果啟用此設定,數據流只會擷取結束期間的數據。 因此,數據流只會擷取已完成且不包含任何未來數據的期間數據。 如果停用此設定,數據流會擷取所有期間的數據,包括未完成且包含未來數據的期間。
例如,如果您有包含交易日期的 DateTime 資料行,而且您只想要重新整理完整的月份,您可以搭配 貯體大小 month
來啟用此設定。 因此,數據流只會擷取完整月份的數據,而且不會擷取不完整月份的數據。
進階設定
某些設定會被視為進階,而且大部分案例都不需要。
需要累加式重新整理查詢才能完全折疊
此設定為選擇性設定,並指定用於累加式重新整理的查詢是否必須完全折疊。 如果啟用此設定,用於累加式重新整理的查詢必須完全折疊。 換句話說,查詢必須完全推送至來源系統。 如果停用此設定,則用於累加式重新整理的查詢不需要完全折疊。 在此情況下,查詢可以部分向下推送至來源系統。 我們 強烈建議 啟用此設定來改善效能,以避免擷取不必要的和未篩選的數據。
限制
僅支援以 SQL 為基礎的數據目的地
目前,只有 SQL 型資料目的地支援累加式重新整理。 因此,您只能使用網狀架構倉儲、Azure SQL 資料庫 或 Azure Synapse Analytics 作為增量重新整理的數據目的地。 這項限制的原因是這些數據目的地支援累加式重新整理所需的SQL型作業。 我們使用 Delete 和 Insert 作業來取代資料目的地中的數據,無法在其他數據目的地上平行完成。
數據目的地必須設定為固定架構
數據目的地必須設定為固定架構,這表示數據目的地中的數據表架構必須固定且無法變更。 如果數據目的地中的數據表架構設定為動態架構,您必須先將它變更為固定架構,再設定累加式重新整理。
數據目的地中唯一支援的更新方法為 replace
數據目的地中唯一支援的更新方法是 replace
,這表示數據流會以新的數據取代數據目的地中每個貯體的數據。 不過,超出貯體範圍的數據不會受到影響。 因此,如果您的數據目的地中的數據比第一個貯體還舊,累加式重新整理不會以任何方式影響此數據。
單一查詢的貯體數目上限為 50,整個數據流則為 150 個
數據流支援的每個查詢貯體數目上限為 50。 如果您有 50 個以上的貯體,您需要增加貯體大小或減少貯體範圍,以降低貯體數目。 針對整個數據流,貯體數目上限為 150。 如果您在數據流中有超過 150 個貯體,您需要減少累加式重新整理查詢的數目,或增加貯體大小以減少貯體數目。
數據流 Gen1 和 Dataflow Gen2 中的累加式重新整理之間的差異
在數據流 Gen1 和 Dataflow Gen2 之間,累加式重新整理的運作方式有一些差異。 下列清單說明 Dataflow Gen1 和 Dataflow Gen2 中累加式重新整理的主要差異。
- 累加式重新整理現在是數據流 Gen2 中的第一級功能。 在數據流 Gen1 中,您必須在發佈數據流之後設定累加式重新整理。 在數據流 Gen2 中,累加式重新整理現在是一流的功能,您可以直接在數據流編輯器中設定。 這項功能可讓您更輕鬆地設定累加式重新整理,並降低錯誤的風險。
- 在數據流 Gen1 中,您必須在設定累加式重新整理時指定歷程記錄數據範圍。 在數據流 Gen2 中,您不需要指定歷程記錄數據範圍。 數據流不會從值區範圍以外的目的地移除任何數據。 因此,如果您的目的地中的數據早於第一個貯體,累加式重新整理不會以任何方式影響此數據。
- 在數據流 Gen1 中,您必須在設定累加式重新整理時指定累加式重新整理的參數。 在數據流 Gen2 中,您不需要指定累加式重新整理的參數。 數據流會自動將篩選和參數新增為查詢的最後一個步驟。 因此,您不需要手動指定累加式重新整理的參數。
常見問題集
我收到警告,指出我使用相同的數據行來偵測變更和篩選。 這表示什麼意思?
如果您收到警告,指出您使用相同的數據行來偵測變更和篩選,這表示您為偵測變更所指定的數據行也會用於篩選數據。 我們不建議使用此用法,因為它可能會導致非預期的結果。 相反地,建議您使用不同的數據行來偵測變更和篩選數據。 如果數據在貯體之間移動,數據流可能無法正確偵測變更,而且可能會在目的地中建立重複的數據。 您可以使用不同的數據行來偵測變更並篩選數據,來解決此警告。 或者,如果您確定數據不會在您指定的數據行重新整理之間變更,則可以忽略警告。
我想要搭配不支持的數據目的地使用累加式重新整理。 我能做什麼?
如果您想要將累加式重新整理與不支持的數據目的地搭配使用,您可以在查詢上啟用累加式重新整理,並使用參考暫存數據的第二個查詢來更新數據目的地。 如此一來,您仍然可以使用累加式重新整理來減少需要從來源系統處理和擷取的數據量,但您需要從暫存數據完整重新整理到數據目的地。 請確定您已正確設定視窗和貯體大小,因為我們不保證暫存中的數據會保留在貯體範圍之外。
如何? 知道我的查詢是否已啟用累加式重新整理?
您可以在數據流編輯器中檢查查詢旁的圖示,以查看查詢是否已啟用累加式重新整理。 如果圖示包含藍色三角形,則會啟用累加式重新整理。 如果圖示不包含藍色三角形,則不會啟用累加式重新整理。
當我使用累加式重新整理時,我的來源會收到太多要求。 我能做什麼?
我們新增了可讓您設定平行查詢評估數目上限的設定。 您可以在資料流的全域設定中找到此設定。 藉由將此值設定為較低的數位,您可以減少傳送至來源系統的要求數目。 此設定有助於減少並行要求數目,並改善來源系統的效能。 若要設定平行查詢執行數目上限,請移至數據流的全域設定、流覽至 [ 調整 ] 索引標籤,並設定平行查詢評估的最大數目。 除非您遇到來源系統的問題,否則建議您不要啟用此限制。