對應資料流中的接收轉換
適用於:Azure Data Factory Azure Synapse Analytics
提示
試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用!
Azure Data Factory 和 Azure Synapse Pipelines 中均可使用資料流。 本文適用於對應資料流。 如果您不熟悉轉換作業,請參閱簡介文章使用對應資料流轉換資料。
完成資料轉換後,請使用接收轉換將其寫入目的地存放區中。 每個資料流程至少需要一個接收轉換,但您可以視需要寫入至不限數量的接收,以完成轉換流程。 若要寫入至其他接收,請透過新的分支和條件式分割建立新的資料流程。
每個接收轉換都與一個資料集物件或連結服務相關聯。 接收器轉換會決定您要寫入之資料的形狀和位置。
內嵌資料集
建立接收轉換時,請選擇您的接收資訊是定義於資料集物件內還是接收轉換內。 大部分的格式只能用於上述其中一個項目中。 若要了解如何使用特定連接器,請參閱適當的連接器文件。
當內嵌和資料集物件中都支援格式時,兩者都有其優點。 資料集物件是可重複使用的實體,可用於其他資料流程和活動,例如複製活動。 當您使用強化的結構描述時,這些可重複使用的實體可發揮功效。 資料集不是以 Spark 為基礎。 您有時可能需要在來源轉換中,覆寫特定設定或結構描述投影。
當您使用彈性結構描述、一次性接收執行個體,或參數化接收時,建議您使用內嵌資料集。 如果您的接收已大量參數化,內嵌資料集可讓您不需建立「虛擬」物件。 內嵌資料集是以 Spark 為基礎,其屬性是資料流程的原生屬性。
若要使用內嵌資料集,請在 [接收類型] 選取器中選取想要的格式。 您不需要選取接收資料集,只需要選取要連線的連結服務。
工作區 DB (僅限 Synapse 工作區)
在 Azure Synapse 工作區中使用資料流程時,您將有其他選項可將資料直接接收到 Synapse 工作區內的資料庫類型。 這可減輕為這些資料庫新增連結服務或資料集的需求。 當您選取 [工作區資料庫] 時,也可以存取透過 Azure Synapse 資料庫範本建立的資料庫。
注意
Azure Synapse Workspace DB 連接器目前處於公開預覽狀態,只能與 Spark Lake 資料庫搭配使用
支援的接收類型
對應資料流程會遵循擷取、載入和轉換 (ELT) 方法,且適用於所有在 Azure 中的暫存資料集。 下列資料集目前可用於接收器轉換。
連接器 | 格式 | 資料集/內嵌 |
---|---|---|
Azure Blob 儲存體 | Avro 分隔符號文字 差異 JSON ORC Parquet |
✓/✓ ✓/✓ -/✓ ✓/✓ ✓/✓ ✓/✓ |
Azure Cosmos DB for NoSQL | ✓/- | |
Azure Data Lake Storage Gen1 | Avro 分隔符號文字 JSON ORC Parquet |
✓/- ✓/- ✓/- ✓/✓ ✓/- |
Azure Data Lake Storage Gen2 \(部分機器翻譯\) | Avro Common Data Model 分隔符號文字 差異 JSON ORC Parquet |
✓/✓ -/✓ ✓/✓ -/✓ ✓/✓ ✓/✓ ✓/✓ |
適用於 MySQL 的 Azure 資料庫 | ✓/✓ | |
適用於 PostgreSQL 的 Azure 資料庫 | ✓/✓ | |
Azure 資料總管 | ✓/✓ | |
Azure SQL Database | ✓/✓ | |
Azure SQL 受控執行個體 | ✓/- | |
Azure Synapse Analytics | ✓/- | |
Dataverse | ✓/✓ | |
Dynamics 365 | ✓/✓ | |
Dynamics CRM | ✓/✓ | |
Fabric Lakehouse | ✓/✓ | |
SFTP | Avro 分隔符號文字 JSON ORC Parquet |
✓/✓ ✓/✓ ✓/✓ ✓/✓ ✓/✓ |
Snowflake | ✓/✓ | |
SQL Server | ✓/✓ |
這些連接器特有的設定位於 [設定] 索引標籤上。這些設定的相關資訊和資料流程指令碼範例位於連接器文件中。
服務可以存取超過 90 個原生連接器。 若要將資料從資料流程寫入至其他來源,請使用「複製活動」從支援的接收載入該資料。
接收器設定
新增接收之後,請透過 [接收器] 索引標籤進行設定。您可以在這裡挑選或建立接收寫入的資料集。 資料集參數的開發值可以在偵錯設定中進行設定。 (必須開啟偵錯模式。)
下列影片說明文字分隔檔案類型適用的一些不同的接收選項。
結構描述漂移:結構描述漂移是服務在資料流程中以原生方式處理彈性結構描述,而無須明確定義資料行變更的能力。 啟用 [允許結構描述漂移],可在定義於接收資料結構描述中的內容之上寫入其他資料行。
驗證結構描述:選取了驗證結構描述後,如果在接收存放區中找不到任何資料行,或資料類型不相符,則資料流程將會失敗。 使用此設定,強制接收結構描述符合已定義投影的合約。 在資料庫接收案例中,這可用來表示資料行名稱或類型有所變更。
快取接收
資料流程將資料寫入 Spark 快取中,而不是資料存放區時,即為快取接收。 在對應資料流中,您可以使用快取查閱在相同的流程中多次參考此資料。 如果您想要將資料當作運算式的一部分來參考,但不想明確地將資料行聯結至運算式時,這將有其效用。 快取接收可能會有幫助的常見範例,是在資料存放區上查閱最大值,並將錯誤碼與錯誤訊息資料庫比對。
若要寫入至快取接收,請新增接收轉換,然後選取 [快取] 作為接收類型。 不同於其他接收類型,您不需要選取資料集或連結服務,因為您不會寫入至外部存放區。
在接收設定中,您可以選擇性地指定快取接收的索引鍵資料行。 在快取查閱中使用 lookup()
函式時,會將其當作比對條件使用。 如果您指定了索引鍵資料行,則無法在快取查閱中使用 outputs()
函式。 若要深入了解快取查閱語法,請參閱快取查閱。
例如,如果我在名為 cacheExample
的快取接收中指定單一索引鍵資料行 column1
,則呼叫 cacheExample#lookup()
時將會有一個參數指定要在快取接收中比對哪個資料列。 函式會為對應的每個資料行輸出具有子資料行的單一複雜資料行。
注意
快取接收所在的資料流程必須完全獨立於任何透過快取查閱加以參考的轉換外。 快取接收也必須是第一個寫入的接收。
寫入活動輸出:快取的接收可以選擇性地將輸出資料寫入至下一個管線活動的輸入。 這可讓您輕鬆快速地將資料傳出資料流程活動,而不需要將資料保存在資料存放區中。
更新方法
針對資料庫接收類型,[設定] 索引標籤會包含 [更新方法] 屬性。 預設為 [插入],但也包含 [更新]、[更新插入] 和 [刪除] 的核取方塊選項。 若要利用這些額外的選項,您必須在接收之前新增更改資料列轉換。 [更改資料列] 可讓您定義每個資料庫動作的條件。 如果您的來源是原生 CDC 啟用來源,則可以在沒有 [更改資料列] 的情況下設定更新方法,因為 ADF 已經知道插入、更新、更新插入和刪除的資料列標記。
欄位對應
類似於選取轉換,您可以在接收的 [對應] 索引標籤上決定要寫入哪些傳入資料行。 依預設會對應所有輸入資料行,包括漂移的資料行。 這個行為也稱為自動對應。
關閉自動對應時,您可以新增固定的資料行型對應或規則型對應。 透過規則型對應,您可以撰寫具有模式比對的運算式。 固定對應會對應邏輯和實體資料行名稱。 如需規則型對應的詳細資訊,請參閱對應資料流中的資料行模式。
自訂接收順序
根據預設,資料會以不具決定性的順序寫入至多個接收。 執行引擎會在轉換邏輯完成時平行寫入資料,而每次執行時的接收排序可能有所不同。 若要指定確切的接收排序,請在資料流程的 [一般] 索引標籤上啟用 [自訂接收排序]。 啟用時,接收會以遞增順序循序寫入。
注意
使用快取查閱時,請確定您的接收排序已將快取接收設定為 1,即排序中最低的一個 (或第一個)。
接收群組
您可以為一系列的接收套用相同的順序編號,藉以將接收分組在一起。 服務會將這些接收視為可平行執行的群組。 平行執行的選項將會顯示在管線資料流程活動中。
錯誤
在 [接收錯誤] 索引標籤上,您可以設定錯誤資料列處理,以擷取和重新導向資料庫驅動程式錯誤和失敗判斷提示的輸出。
寫入至資料庫時,某些資料列可能會因為目的地設定的條件約束而失敗。 根據預設,資料流程執行會在它遇到的第一個錯誤時失敗。 在某些連接器中,您可以選擇在發生錯誤時繼續,讓您的資料流程即使在個別資料列發生錯誤時也能夠完成。 目前,此功能僅適用於 Azure SQL Database 和 Azure Synapse。 如需詳細資訊,請參閱 Azure SQL DB 中的錯誤資料列處理。
以下影片教學課程說明如何在接收轉換中自動使用資料庫錯誤資料列處理。
針對判斷提示失敗資料列,您可以使用資料流程中的判斷提示轉換上游,然後將失敗的判斷提示重新導向至接收錯誤索引標籤中的輸出檔案。您也可以在這裡選擇忽略判斷提示失敗的資料列,而不會將這些資料列全部輸出到接收目的地資料存放區。
接收中的資料預覽
在偵錯模式中擷取資料預覽時,不會將資料寫入至您的接收。 將傳回資料的快照集,但不會將任何項目寫入至目的地。 若要測試將資料寫入您的接收中,請從管線畫布執行管線偵錯。
資料流程指令碼
範例
以下是接收轉換及其資料流程指令碼的範例:
sink(input(
movie as integer,
title as string,
genres as string,
year as integer,
Rating as integer
),
allowSchemaDrift: true,
validateSchema: false,
deletable:false,
insertable:false,
updateable:true,
upsertable:false,
keys:['movie'],
format: 'table',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true,
saveOrder: 1,
errorHandlingOption: 'stopOnFirstError') ~> sink1
相關內容
現在您已建立資料流程,接著請將資料流程活動新增至您的管線。