共用方式為


適用於 Dataverse 的 Azure Synapse Link 常見問題集

本文提供有關將 Microsoft Dataverse 資料表資料匯出至 Azure Synapse Analytics 和 Azure Data Lake 的常見問題的資訊。

我可以手動執行工作,例如建立、更新、刪除或設定已連線 Azure 儲存體中資料檔案的自動刪除原則嗎?

客戶不應修改資料檔案,也不應將任何客戶檔案放置在資料資料夾中。

備註

若要移除資料湖中的過時和停滯資料,而不中斷 Azure Synapse Link,請考慮使用查詢並分析累加更新功能

如何存取我的資料表關聯?

若要存取多對多關係,該關係可作為表格,從 新增資料表 頁面選擇新連結,從 管理資料表 中選擇既有連結。

備註

以 CSV 格式撰寫時,所有關係資料預設都處於僅限附加模式。

Azure Synapse Link 是 Dataverse 的免費功能。 使用 Azure Synapse Link for Dataverse 不會產生 Dataverse 下的額外費用。 不過,請考慮 Azure 服務的潛在成本:

新增欄時會發生什麼事?

將新資料行新增至來源中的表格時,該資料行也將新增到目的地檔案中相應檔案分割區的檔案結尾。 雖然新增資料行之前存在的資料列不會顯示在新資料行中,但新的或更新的資料列會顯示新新增的資料行。

刪除欄時會發生什麼事?

當您從來源中的表格刪除資料行時,該資料行不會從目的地中刪除。 相反地,資料列不再更新,並標示為空值,同時保留先前的資料列。

如果我變更資料行的資料類型,會發生什麼事?

變更資料行的資料類型是中斷性變更,您需要取消連結並重新連結。

刪除資料列時會發生什麼事?

根據您選擇的資料寫入選項,刪除資料列的處理方式會有所不同:

  • 使用 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
SinkCreatedOnSinkModifiedOn 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 集區的選項。 不過,您可以在「管理資料表進 > 階時間間隔」下修改連結建立後的時間間隔。

查閱資料行是由識別碼和值所組成。 查閱值只會在根資料表上變更。 為了更好地顯示查閱欄位的值,建議您連接原始根表以取得最新值。

在 Dataverse 中,計算資料行只會保留公式資訊,而實際值取決於基底資料表資料行。 因此,只有在所有資料行都位於相同的匯出資料表中時,才支援計算資料行。

哪些 Dataverse 資料表預設使用僅附加模式來運作?

預設情況下,所有沒有 createdOn 欄位的資料表都會使用僅附加模式進行同步處理。 這包括關聯性資料表和 ActivityParty 資料表。

為什麼我會看到錯誤訊息 - 無法列出路徑上目錄的內容?

  • Dataverse 資料儲存在連線的儲存容器中。 您需要所連結儲存體帳戶中的「儲存體機器人資料餐與者」角色,才能透過 Synapse 工作區執行讀取和查詢作業。
  • 如果您選擇以 Delta Lake 格式匯出資料,則會在 Delta Lake 轉換之後清除您的 CSV 檔案。 您必須透過 Synapse 工作區查詢具有 non_partitioned 資料表的資料。

為什麼我會看到錯誤訊息 - 無法大量載入,因為檔案不完整或無法讀取 (僅限 CSV 檔案)?

Dataverse 資料可以透過建立、更新和刪除交易來持續變更。 此錯誤是由於在從基底檔案讀取資料時該檔案被變更而引起的。 因此,對於持續變更的表格,請您變更消耗管道,以使用快照集資料 (分區表格) 來消耗。 詳細資訊: 疑難排解無伺服器 SQL 集區

適用於 Dataverse 的 Azure Synapse Link 是專為分析目的而設計的。 我們建議客戶使用長期備份來進行封存用途。 更多資訊:Dataverse 長期資料儲存概觀

為什麼在 Dataverse 中刪除記錄時,我沒有在資料湖中看到任何資料變更?

對於任何直接 SQL 呼叫以移除記錄,Azure Synapse Link for Dataverse 服務不會觸發,因為未呼叫 BPO.Delete。 想看範例功能,請前往 「如何清理繼承存取權」。