Streaming data dari Microsoft Dataverse

Datastream mendukung replikasi peristiwa perubahan dari instance Microsoft Dataverse. Dataverse adalah platform data berbasis cloud yang memungkinkan Anda menyimpan dan mengelola data yang digunakan oleh aplikasi bisnis secara aman.

Halaman ini berisi informasi tentang:

  • Istilah utama yang perlu Anda pahami saat mereplikasi dari Dataverse.
  • Perilaku cara Datastream menangani data yang ditarik dari lingkungan Dataverse sumber.
  • Versi Dataverse yang didukung Datastream.
  • Batasan yang diketahui untuk menggunakan Dataverse sebagai sumber.

Istilah utama

Dataverse beroperasi menggunakan konsep berikut:

  • Tabel, yang sebelumnya merupakan entitas, mirip dengan tabel dalam database relasional. Dataverse menyertakan tabel standar secara default, tetapi Anda juga dapat membuat tabel kustom.
  • Kolom, yang sebelumnya disebut field, adalah atribut tabel, dan serupa dengan kolom dalam database relasional.
  • Baris adalah kumpulan data tertentu dalam tabel, dan mirip dengan baris dalam database relasional.

Perilaku

Dukungan sumber Dataverse di Datastream mengandalkan Dataverse Web API, yang menggunakan Open Data Protocol (OData). Datastream melakukan polling untuk perubahan sumber berdasarkan interval yang Anda tetapkan.

Saat mereplikasi data dari sumber Dataverse, perilaku berikut diamati:

  • Interaksi API: Datastream berinteraksi dengan Dataverse Web API menggunakan permintaan RESTful. URL lingkungan dasar adalah https://ORGANIZATION_ID.crm.dynamics.com/api/data/v9.1/. Header standar (Accept: application/json, OData-MaxVersion: 4.0, OData-Version: 4.0) digunakan.
  • Autentikasi: Datastream menangani autentikasi menggunakan OAuth 2.0 dengan jenis pemberian kredensial klien. Datastream mendapatkan token dari Microsoft Identity Platform.
  • Penemuan skema: Skema Dataverse bersifat dinamis. Datastream menemukan nama dan skema objek dengan membuat kueri ke endpoint /EntityDefinitions.

    • Nama objek: Datastream mengambil nama objek dengan mengirimkan permintaan GET ke jalur set entitas /EntityDefinitions dengan filter $filter=TableType ne 'Virtual' and IsPrivate eq false dan parameter $select=EntitySetName.
    • Skema objek: Datastream mengambil skema objek per-entitas dengan mengirimkan permintaan GET ke jalur set entitas /EntityDefinitions dengan parameter $expand=Attributes($select=LogicalName,AttributeType,AttributeTypeName) dan filter $filter=EntitySetName eq '[objectName]'.
  • Replikasi data:

    • Datastream mereplikasi tabel Dataverse standar dan kustom. Tidak termasuk tabel virtual dan pribadi.
    • Pengisian ulang historis: jika dikonfigurasi untuk aliran, Datastream mereplikasi semua data historis untuk tabel yang disertakan. Hal ini dilakukan dengan mengirim permintaan GET awal ke set entitas dan melakukan iterasi di semua halaman menggunakan properti @odata.nextLink yang diberikan dalam respons API. Header Prefer: odata.maxpagesize=5000 digunakan.
    • Sinkronisasi inkremental: Datastream mereplikasi peristiwa penyisipan dan pembaruan. Hal ini dicapai dengan menggunakan sinkronisasi berbasis stempel waktu, memfilter data yang kolom modifiedon-nya lebih besar dari waktu sinkronisasi terakhir ($filter=modifiedon gt [last_sync_timestamp]). Datastream tidak merekam peristiwa penghapusan.
  • Interval polling: Datastream melakukan polling untuk mencari perubahan sesuai dengan interval polling yang Anda tetapkan saat membuat aliran. Interval ini tercermin dalam metrik keaktualan data aliran.

Semua objek yang direplikasi mendukung sinkronisasi inkremental, menggunakan kolom modifiedon, dan pengisian ulang lengkap.

Versi

Datastream menggunakan Dataverse Web API versi v9.1.

Batasan umum

Batasan yang diketahui untuk menggunakan Dataverse sebagai sumber meliputi:

  • Metode sinkronisasi inkremental, berdasarkan stempel waktu modifiedon, tidak merekam peristiwa penghapusan.
  • Datastream tidak mendukung fitur pelacakan perubahan yang direkomendasikan Dataverse yang menggunakan link delta (@odata.deltaLink). Hal ini karena penyimpanan URL link delta yang diperlukan untuk penarikan inkremental berikutnya tidak didukung.
  • Replikasi terbatas pada tabel standar dan kustom. Tabel virtual dan pribadi tidak didukung.
  • Pembaruan kolom modifiedon yang akurat di tabel sumber sangat penting untuk memastikan sinkronisasi inkremental berfungsi seperti yang diharapkan.
  • Untuk mengambil label untuk kolom Picklist, permintaan data harus menyertakan header Prefer: data.include-annotations="*", bukan hanya nilai bilangan bulat.

Langkah berikutnya