Datastream memungkinkan Anda mereplikasi data historis dan perubahan inkremental dari lingkungan Microsoft Dataverse untuk analisis dan integrasi data. Dataverse adalah platform data berbasis cloud untuk menyimpan dan mengelola data yang digunakan oleh aplikasi bisnis.
Sebelum mengonfigurasi sumber Dataverse, tinjau istilah kunci, perilaku replikasi, versi yang didukung, dan batasan yang diketahui di Datastream.
Istilah utama
Dataverse beroperasi menggunakan konsep berikut:
- Tabel, yang sebelumnya disebut entity, mirip dengan tabel dalam database relasional. Dataverse menyertakan tabel standar secara default, tetapi Anda juga dapat membuat tabel kustom.
- Kolom, yang sebelumnya disebut kolom, adalah atribut tabel, dan mirip 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 Web API Dataverse, 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 akan 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 mengkueri endpoint
/EntityDefinitions.- Nama objek: Datastream mengambil nama objek dengan mengirimkan permintaan
GETke jalur set entity/EntityDefinitionsdengan filter$filter=TableType ne 'Virtual' and IsPrivate eq falsedan parameter$select=EntitySetName. - Skema objek: Datastream mengambil skema objek per entitas dengan mengirimkan permintaan
GETke jalur set entitas/EntityDefinitionsdengan parameter$expand=Attributes($select=LogicalName,AttributeType,AttributeTypeName)dan filter$filter=EntitySetName eq '[objectName]'.
- Nama objek: Datastream mengambil nama objek dengan mengirimkan permintaan
Replikasi data:
- Datastream mereplikasi tabel Dataverse standar dan kustom. Tabel ini tidak mencakup tabel virtual dan pribadi.
- Pengisian ulang historis: jika dikonfigurasi untuk aliran data, Datastream
mereplikasi semua data historis untuk tabel yang disertakan. Hal ini dilakukan dengan
mengirim permintaan
GETawal ke set entity dan melakukan iterasi melalui semua halaman menggunakan properti@odata.nextLinkyang disediakan dalam respons API. HeaderPrefer: odata.maxpagesize=5000digunakan. - 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 menangkap peristiwa penghapusan.
Interval polling: Datastream melakukan polling untuk perubahan sesuai dengan interval polling yang Anda tetapkan saat membuat aliran data. 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 umum penggunaan Dataverse sebagai sumber meliputi:
- Metode sinkronisasi inkremental, berdasarkan stempel waktu
modifiedon, tidak menangkap 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 pengambilan inkremental berikutnya tidak didukung. - Replikasi dibatasi untuk tabel standar dan kustom. Tabel virtual dan pribadi tidak didukung.
- Pembaruan kolom
modifiedonyang akurat di tabel sumber sangat penting untuk memastikan sinkronisasi inkremental berfungsi seperti yang diharapkan. - Untuk mengambil label kolom
Picklist, permintaan data harus menyertakan headerPrefer: data.include-annotations="*", bukan hanya nilai bilangan bulat.
Langkah berikutnya
- Pelajari cara mengonfigurasi sumber Dataverse untuk digunakan dengan Datastream.