Microsoft Dataverse からデータをストリーミングする

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/jsonOData-MaxVersion: 4.0OData-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 は、標準の 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="*" ヘッダーを含める必要があります。

次のステップ