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

Datastream を使用すると、分析とデータ統合のために、Microsoft Dataverse 環境から過去のデータと増分変更を複製できます。Dataverse は、ビジネス アプリケーションで使用されるデータを保存、管理するためのクラウドベースのデータ プラットフォームです。

Dataverse ソースを構成する前に、Datastream の重要な用語、レプリケーションの動作、サポートされているバージョン、既知の制限事項を確認してください。

主な用語

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 は、$filter=TableType ne 'Virtual' and IsPrivate eq false フィルタと $select=EntitySetName パラメータを使用して /EntityDefinitions エンティティ セットパスに GET リクエストを送信して、オブジェクト名を取得します。
    • オブジェクト スキーマ: Datastream は、$expand=Attributes($select=LogicalName,AttributeType,AttributeTypeName) パラメータと $filter=EntitySetName eq '[objectName]' フィルタを使用して /EntityDefinitions エンティティ セットパスに GET リクエストを送信することで、エンティティごとにオブジェクト スキーマを取得します。
  • データ レプリケーション:

    • 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="*" ヘッダーを含める必要があります。

次のステップ