Datastream 可讓您從 Microsoft Dataverse 環境複製歷來資料和增量變更,用於數據分析和資料整合。Dataverse 是雲端式資料平台,用於儲存及管理企業應用程式使用的資料。
設定 Dataverse 來源前,請先參閱 Datastream 的重要詞彙、複製行為、支援的版本和已知限制。
重要詞彙
Dataverse 的運作概念如下:
- 資料表 (舊稱實體) 類似於關聯式資料庫中的資料表。Dataverse 預設包含標準資料表,但您也可以建立自訂資料表。
- 資料欄 (舊稱欄位) 是資料表的屬性,類似於關聯式資料庫中的資料欄。
- 「資料列」是資料表中的特定記錄,類似於關聯式資料庫中的資料列。
行為
Datastream 的 Dataverse 來源支援功能仰賴 Dataverse Web API,該 API 使用開放資料通訊協定 (OData)。Datastream 會根據您設定的間隔輪詢來源變更。
從 Dataverse 來源複製資料時,會觀察到下列行為:
- API 互動:Datastream 使用 RESTful 要求與 Dataverse Web API 互動。基礎環境網址為
https://ORGANIZATION_ID.crm.dynamics.com/api/data/v9.1/。使用標準標頭 (Accept: application/json、OData-MaxVersion: 4.0、OData-Version: 4.0)。 - 驗證:Datastream 使用 OAuth 2.0 搭配用戶端憑證授權類型處理驗證。Datastream 會從 Microsoft Identity Platform 取得權杖。
結構定義探索:Dataverse 結構定義是動態的。Datastream 會查詢
/EntityDefinitions端點,探索物件名稱和結構定義。- 物件名稱:Datastream 會傳送
GET要求至/EntityDefinitions實體集路徑,並使用$filter=TableType ne 'Virtual' and IsPrivate eq false篩選器和$select=EntitySetName參數,擷取物件名稱。 - 物件結構定義:Datastream 會傳送
GET要求至/EntityDefinitions實體集路徑,並使用$expand=Attributes($select=LogicalName,AttributeType,AttributeTypeName)參數和$filter=EntitySetName eq '[objectName]'篩選器,擷取每個實體的物件結構定義。
- 物件名稱:Datastream 會傳送
資料複製:
- Datastream 會複製標準和自訂 Dataverse 資料表。不含虛擬和私人資料表。
- 歷來資料補充:如果為串流設定,Datastream 會複製所含資料表的所有歷來資料。方法是先向實體集傳送
GET要求,然後使用 API 回應中提供的@odata.nextLink屬性,逐一查看所有頁面。系統會使用Prefer: odata.maxpagesize=5000標頭。 - 增量同步:Datastream 會複製插入和更新事件。Datastream 會使用時間戳記同步處理功能,篩選
modifiedon欄位大於上次同步處理時間 ($filter=modifiedon gt [last_sync_timestamp]) 的記錄,藉此達成這項作業。Datastream 不會擷取刪除事件。
輪詢間隔:Datastream 會根據您建立串流時設定的輪詢間隔,輪詢變更。這個間隔會反映在串流的資料更新間隔指標中。
所有複製的物件都支援使用 modifiedon 欄位進行增量同步,以及完整補充。
版本
Datastream 使用 Dataverse Web API 9.1 版。
已知限制
使用 Dataverse 做為來源時,已知限制包括:
- 根據
modifiedon時間戳記,增量同步處理方法不會擷取刪除事件。 - Datastream 不支援 Dataverse 建議的變更追蹤功能,該功能會使用差異連結 (
@odata.deltaLink)。這是因為系統不支援儲存後續遞增提取所需的差異連結網址。 - 複製功能僅限標準和自訂表格。不支援虛擬和私人資料表。
- 請務必準確更新來源資料表中的
modifiedon欄位,確保增量同步作業正常運作。 - 如要擷取
Picklist欄位的標籤,資料要求必須包含Prefer: data.include-annotations="*"標頭,而不只是整數值。
後續步驟
- 瞭解如何設定 Dataverse 來源,以便與 Datastream 搭配使用。