Datastream は、Microsoft Dataverse インスタンスからの変更イベントのレプリケーションをサポートしています。Dataverse は、ビジネス アプリケーションで使用されるデータを安全に保存して管理できるクラウドベースのデータ プラットフォームです。
このページには、次に関する情報が記載されています。
- Dataverse からレプリケーションを行う際に理解しておく必要のある主な用語。
- Datastream が移行元 Dataverse 環境から pull されているデータを処理する方法の動作。
- Datastream でサポートされている Dataverse のバージョン。
- Dataverse を移行元として使用する場合の既知の制限事項。
主な用語
Dataverse は次のコンセプトに基づいて動作します。
- テーブル (以前はエンティティ)は、リレーショナル データベースのテーブルに似ています。Dataverse にはデフォルトで標準テーブルが含まれていますが、カスタム テーブルを作成することもできます。
- 列(以前はフィールド)はテーブルの属性であり、リレーショナル データベースの列に似ています。
- 行 はテーブル内の特定のレコードであり、リレーショナル データベースの行に似ています。
行動
Datastream の Dataverse ソースのサポートは、Open Data Protocol(OData)を使用する Dataverse Web API に依存しています。Datastream は、設定した間隔に基づいてソースの変更をポーリングします。
Dataverse ソースからデータをレプリケートする場合、次の動作が確認されます。
- API インタラクション: Datastream は、RESTful リクエストを使用して Dataverse Web
API とやり取りします。ベース環境の URL は
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 テーブルとカスタム Dataverse テーブルをレプリケートします。仮想テーブルとプライベート テーブルは除外されます。
- 履歴バックフィル: ストリーム用に構成されている場合、Datastream
は含まれているテーブルのすべての履歴データをレプリケートします。これは、エンティティ セットに最初の
GETリクエストを送信し、API レスポンスで提供される@odata.nextLinkプロパティを使用してすべてのページを反復処理することで実現されます。Prefer: odata.maxpagesize=5000ヘッダーが使用されます。 - 増分同期: Datastream は挿入イベントと更新イベントをレプリケートします。これは、タイムスタンプ ベースの同期を使用して、
modifiedonフィールドが最後の 同期時刻より大きいレコードをフィルタすることで実現されます($filter=modifiedon gt [last_sync_timestamp])。 Datastream は削除イベントをキャプチャしません。
ポーリング間隔: Datastream は、ストリームの作成時に設定した ポーリング間隔に従って変更をポーリングします。この間隔は、ストリームのデータの更新速度指標に反映されます。
レプリケートされたすべてのオブジェクトは、modifiedon フィールドを使用した増分同期と完全なバックフィルの両方をサポートしています。
バージョン
Datastream は Dataverse Web API バージョン v9.1 を使用します。
既知の制限事項
Dataverse を移行元として使用する場合の既知の制限事項は次のとおりです。
modifiedonタイムスタンプに基づく増分同期メソッドでは、削除イベントはキャプチャされません。- Datastream は、デルタリンク(
@odata.deltaLink)を使用する Dataverse 推奨の変更追跡機能をサポートしていません。これは、後続の増分 pull に必要なデルタリンク URL の保存がサポートされていないためです。 - レプリケーションは、標準テーブルとカスタム テーブルに限定されます。仮想テーブルとプライベート テーブルはサポートされていません。
- 増分同期が想定どおりに機能するようにするには、ソーステーブルの
modifiedonフィールドを正確に更新することが重要です。 Picklistフィールドのラベルを取得するには、データ リクエストに整数値だけでなくPrefer: data.include-annotations="*"ヘッダーを含める必要があります。