本文提供有關將 Microsoft Dataverse 資料表資料匯出至 Azure Synapse Analytics 和 Azure Data Lake 的常見問題的資訊。
我可以手動執行工作,例如建立、更新、刪除或設定已連線 Azure 儲存體中資料檔案的自動刪除原則嗎?
客戶不應修改資料檔案,也不應將任何客戶檔案放置在資料資料夾中。
備註
若要移除資料湖中的過時和停滯資料,而不中斷 Azure Synapse Link,請考慮使用查詢並分析累加更新功能
如何存取我的資料表關聯?
若要存取多對多關係,該關係可作為表格,從 新增資料表 頁面選擇新連結,從 管理資料表 中選擇既有連結。
備註
以 CSV 格式撰寫時,所有關係資料預設都處於僅限附加模式。
在新增 Azure Synapse Link 之前,如何取得預估成本?
Azure Synapse Link 是 Dataverse 的免費功能。 使用 Azure Synapse Link for Dataverse 不會產生 Dataverse 下的額外費用。 不過,請考慮 Azure 服務的潛在成本:
- Azure Data Lake Storage Gen2 中的資料儲存:Azure Storage Data Lake Gen2 定價 | Microsoft Azure
- 資料取用成本 (例如 Synapse 工作區): 定價 - Azure Synapse Analytics |Microsoft Azure 如需完整的 Microsoft 成本管理資訊,請移至: 規劃管理 Azure 成本 - Microsoft 成本管理 |Microsoft 學習
新增欄時會發生什麼事?
將新資料行新增至來源中的表格時,該資料行也將新增到目的地檔案中相應檔案分割區的檔案結尾。 雖然新增資料行之前存在的資料列不會顯示在新資料行中,但新的或更新的資料列會顯示新新增的資料行。
刪除欄時會發生什麼事?
當您從來源中的表格刪除資料行時,該資料行不會從目的地中刪除。 相反地,資料列不再更新,並標示為空值,同時保留先前的資料列。
如果我變更資料行的資料類型,會發生什麼事?
變更資料行的資料類型是中斷性變更,您需要取消連結並重新連結。
刪除資料列時會發生什麼事?
根據您選擇的資料寫入選項,刪除資料列的處理方式會有所不同:
- 使用 CSV 格式就地更新:這是預設模式。 當您在此模式中刪除資料表資料列時,也會從 Azure Data Lake 中的對應資料分割區中刪除資料列。 換句話說,資料會從目的地硬刪除。
- 僅追加模式 (CSV 格式與增量資料夾更新) :在此模式下,當 Dataverse 資料表的資料列被刪除時,不會從目標端進行實際刪除。 相反地,會新增資料列並將其設定為
isDeleted=True,放置在 Azure Data Lake 中對應的資料分割區的檔案中。 - 匯出至 Delta Lake 格式:Azure Synapse Link 會在下一個 Delta 同步處理週期期間對資料執行軟刪除,然後在 30 天後進行硬刪除。
為什麼我在匯出的檔案中看不到欄標題?
Azure Synapse Link 遵循通用數據模型,讓數據及其意義可以在應用程式和商務程式之間共用,例如 Microsoft Power Apps、Power BI、Dynamics 365 和 Azure。 在每個 CDM 資料夾中,資料行標頭等中繼資料會儲存在 model.json 檔案中。 其他資訊: Common Data Model 和 Azure Data Lake Storage Gen2 | Microsoft Learn
為什麼 Model.json 檔案會增加或變更資料類型的長度,並且不保留 Dataverse 中定義的內容?
Model. json 不因資料行大小改變而變更資料庫長度。 Dataverse 對每個資料行都有資料庫長度的概念。 如果您建立大小為 200 的資料行,然後將其減少到 100,Dataverse 仍允許您的現有資料出現在 Dataverse 中。 它通過保持 DBLength 200 和 MaxLength 100 來做到這一點。 您在 Model.json 中看到的是 DBLength,如果您將其用於下游流程,就不會為 Dataverse 資料行配置更少的空間。
備註
備忘錄欄位定義為 varchar(max) 預設長度上限為 9999。
匯出的 Dataverse 資料表中可以預期哪些日期和時間格式?
匯出的 Dataverse 資料表中可以預期三種日期和時間格式。
| 欄位名稱 | 格式 | 數據類型 | Example |
|---|---|---|---|
| SinkCreatedOn 和 SinkModifiedOn | M/d/yyyy H:mm:ss tt | 日期時間 | 2021/6/28 下午4:34:35 |
| CreatedOn | yyyy-MM-dd'T'HH:mm:ss.sssssssXXX | datetimeOffset | 2018-05-25T16:21:09.0000000+00:00 |
| 所有其他欄位 | yyyy-MM-dd'T'HH:mm:ss'Z' | 日期時間 | 2021-06-25T16:21:12Z |
備註
CreatedOn 資料型別從 datetime 2022 年 7 月 29 日變更為 。datetimeOffset 若要在變更前,編輯先前建立之表格的資料類型格式,請刪除並重新新增該表。
您可以為 Dataverse 中的日期和時間欄選擇不同的欄行為,這會更新資料類型格式。 其他資訊: 日期和時間欄位的特性和格式
為什麼我看到某些 Dataverse 資料表的檔案名稱為 1.csv 或 1_001.csv,而不是一般日期時間分割檔案名稱?
當您選擇僅附加匯出模式,且資料表沒有有效的 CreatedOn 資料行時,這種行為是可以預料的。 Blob 會組織成 1.csv、 2.csv 等檔案 (由於沒有有效的建立日期,因此會採用自訂分割)。 當任何分割區接近 MaxBlockPerBlobLimit 的 95% 時,系統會自動產生新的檔案,此處如 1_001.csv所示。
何時應該使用每年或每月的分割策略?
對於一年內資料量較高的 Dataverse 資料表,建議您使用每月分割區。 這樣做會導致更小的檔案和更好的效能。 此外,如果 Dataverse 資料表中的資料列經常更新,則分割成多個較小的檔案有助於在就地更新案例中提高效能。 Delta Lake 僅適用於年度分割區,因為與 CSV 格式相比,其效能優越。
什麼是「僅附加」模式,而「僅附加」與「就地更新」模式之間有何區別?
在僅追加模式下,來自 Dataverse 資料表的增量資料會追加至資料湖中相對應的檔案分區。 如需詳細資訊: Azure Synapse Link 中的進階設定選項
何時使用僅附加模式來檢視變更歷程記錄?
僅追加模式是將 Dataverse 資料表資料寫入資料湖的建議選項,特別是在資料量龐大且資料頻繁變動的分區中。 同樣地,這是企業客戶常用且強烈建議的選項。 此外,您可以選擇將此模式用於意圖以累加方式檢閱 Dataverse 變更並處理 ETL、AI 和 ML 案例變更的案例。 僅附加模式提供變更歷程記錄,而不是最新變更或就地更新,並啟用 AI 案例的多個時間序列,例如根據歷史值所做的預測或預測分析。
如何在以追加模式匯出資料時,擷取每筆記錄的最新資料列,並排除已刪除的資料列?
在僅附加模式下,您應該先使用 VersionNumber 識別具有相同 ID 的最新版本記錄,然後使用 SinkModifiedOn ,最後將 isDeleted=0 套用到最新版本。
為什麼我使用僅附加模式匯出資料時會看到重複的版本號碼?
對於僅追加模式,如果 Azure Synapse Link for Dataverse 因網路延遲等原因未從 Azure 資料湖收到資料提交確認,Azure Synapse Link 會在這種情況下重新嘗試,並再次提交資料。 下游消耗應該透過使用SinkModifiedOn來篩選數據,從而增強對此情境的韌性。
為什麼我在 Sinkmodifiedon 和 Modifiedon 欄位中看到差異?
這是意料之中的。
Modifiedon 是在 Dataverse 中變更的記錄的日期時間; Sinkmodifiedon 是在資料湖中修改記錄的日期和時間。
哪些 Dataverse 資料表不支援匯出?
除了下列系統資料表之外,不支援任何未啟用變更追蹤的資料表:
- Attachment
- 日曆
- 行事曆規則
某些 Dataverse 表格,如 postcomment、postregarding、postlike、post 和 postrole,此類表格無法讓客戶透過 Azure Synapse Link 啟用同步。
在某些情況下,這些資料表可能會在啟用 Dataverse 長期保留 時出現。 如果發生這種情況,這些資料表中的子集或全部紀錄可能會被匯出。 這是長期留任情境下的預期行為。
這很重要
- 這些表格不應該被選中來同步。
- 他們的存在並不代表對增量同步的完全支援。
備註
您可以使用 Azure Synapse Link for Dataverse 新增要匯出的稽核資料表。 不過,只有 Delta Lake 設定檔支援稽核資料表的匯出。
我使用匯出至 delta lake 功能,我可以停止 Apache Spark 作業或變更執行時間嗎?
當設定的時間間隔內發生資料變更時,會觸發 Delta Lake 轉換作業。 沒有停止或暫停 Apache Spark 集區的選項。 不過,您可以在「管理資料表進 > 階時間間隔」下修改連結建立後的時間間隔。
Azure Synapse Link 是否支援查閱資料行?
查閱資料行是由識別碼和值所組成。 查閱值只會在根資料表上變更。 為了更好地顯示查閱欄位的值,建議您連接原始根表以取得最新值。
Azure Synapse Link 是否支援計算資料行?
在 Dataverse 中,計算資料行只會保留公式資訊,而實際值取決於基底資料表資料行。 因此,只有在所有資料行都位於相同的匯出資料表中時,才支援計算資料行。
哪些 Dataverse 資料表預設使用僅附加模式來運作?
預設情況下,所有沒有 createdOn 欄位的資料表都會使用僅附加模式進行同步處理。 這包括關聯性資料表和 ActivityParty 資料表。
為什麼我會看到錯誤訊息 - 無法列出路徑上目錄的內容?
- Dataverse 資料儲存在連線的儲存容器中。 您需要所連結儲存體帳戶中的「儲存體機器人資料餐與者」角色,才能透過 Synapse 工作區執行讀取和查詢作業。
- 如果您選擇以 Delta Lake 格式匯出資料,則會在 Delta Lake 轉換之後清除您的 CSV 檔案。 您必須透過 Synapse 工作區查詢具有 non_partitioned 資料表的資料。
為什麼我會看到錯誤訊息 - 無法大量載入,因為檔案不完整或無法讀取 (僅限 CSV 檔案)?
Dataverse 資料可以透過建立、更新和刪除交易來持續變更。 此錯誤是由於在從基底檔案讀取資料時該檔案被變更而引起的。 因此,對於持續變更的表格,請您變更消耗管道,以使用快照集資料 (分區表格) 來消耗。 詳細資訊: 疑難排解無伺服器 SQL 集區
如何使用 Azure Synapse Link 來封存重要資料?
適用於 Dataverse 的 Azure Synapse Link 是專為分析目的而設計的。 我們建議客戶使用長期備份來進行封存用途。 更多資訊:Dataverse 長期資料儲存概觀
為什麼在 Dataverse 中刪除記錄時,我沒有在資料湖中看到任何資料變更?
對於任何直接 SQL 呼叫以移除記錄,Azure Synapse Link for Dataverse 服務不會觸發,因為未呼叫 BPO.Delete。 想看範例功能,請前往 「如何清理繼承存取權」。