Mit Datastream können Sie Verlaufsdaten und inkrementelle Änderungen aus einer Microsoft Dataverse-Umgebung für Analysen und Datenintegration replizieren. Dataverse ist eine cloudbasierte Datenplattform zum Speichern und Verwalten von Daten, die von Geschäftsanwendungen verwendet werden.
Bevor Sie eine Dataverse-Quelle konfigurieren, sollten Sie sich die Schlüsselbegriffe, das Replikationsverhalten, die unterstützten Versionen und die bekannten Einschränkungen in Datastream ansehen.
Wichtige Begriffe
Dataverse verwendet die folgenden Konzepte:
- Eine Tabelle, früher eine Entität, ähnelt einer Tabelle in relationalen Datenbanken. Dataverse enthält standardmäßig Standardtabellen, Sie können aber auch benutzerdefinierte Tabellen erstellen.
- Eine Spalte, früher ein Feld, ist ein Attribut einer Tabelle und ähnelt einer Spalte in relationalen Datenbanken.
- Eine Zeile ist ein bestimmter Eintrag in einer Tabelle und ähnelt einer Zeile in relationalen Datenbanken.
Verhalten
Die Unterstützung von Dataverse-Quellen in Datastream basiert auf der Dataverse Web API, die das Open Data Protocol (OData) verwendet. Datastream fragt anhand des von Ihnen festgelegten Intervalls nach Änderungen an der Quelle.
Beim Replizieren von Daten aus einer Dataverse-Quelle wird Folgendes beobachtet:
- API-Interaktion: Datastream interagiert mit der Dataverse Web API über RESTful-Anfragen. Die URL der Basisumgebung lautet
https://ORGANIZATION_ID.crm.dynamics.com/api/data/v9.1/. Es werden Standardheader (Accept: application/json,OData-MaxVersion: 4.0,OData-Version: 4.0) verwendet. - Authentifizierung: Datastream übernimmt die Authentifizierung mit OAuth 2.0 und dem Genehmigungstyp „Clientanmeldedaten“. Datastream ruft Tokens von der Microsoft Identity Platform ab.
Schemaerkennung: Dataverse-Schemas sind dynamisch. Datastream ermittelt Objektnamen und Schemas durch Abfragen des
/EntityDefinitions-Endpunkts.- Objektnamen: Datastream ruft Objektnamen ab, indem eine
GET-Anfrage an den Entitätssatzpfad/EntityDefinitionsmit dem Filter$filter=TableType ne 'Virtual' and IsPrivate eq falseund dem Parameter$select=EntitySetNamegesendet wird. - Objektschema: Datastream ruft das Objektschema pro Entität ab, indem eine
GET-Anfrage an den Entitätssatzpfad/EntityDefinitionsmit dem Parameter$expand=Attributes($select=LogicalName,AttributeType,AttributeTypeName)und dem Filter$filter=EntitySetName eq '[objectName]'gesendet wird.
- Objektnamen: Datastream ruft Objektnamen ab, indem eine
Datenreplikation:
- Datastream repliziert Standard- und benutzerdefinierte Dataverse-Tabellen. Virtuelle und private Tabellen sind ausgeschlossen.
- Backfill von Verlaufsdaten: Wenn für einen Stream konfiguriert, repliziert Datastream alle Verlaufsdaten für enthaltene Tabellen. Dazu wird eine erste
GET-Anfrage an die Entitätsgruppe gesendet und alle Seiten werden mithilfe des Attributs@odata.nextLinkin den API-Antworten durchlaufen. DerPrefer: odata.maxpagesize=5000-Header wird verwendet. - Inkrementelle Synchronisierung: Datastream repliziert Einfüge- und Aktualisierungsereignisse. Dazu wird eine zeitstempelbasierte Synchronisierung verwendet, bei der Datensätze gefiltert werden, bei denen das Feld
modifiedongrößer als die letzte Synchronisierungszeit ($filter=modifiedon gt [last_sync_timestamp]) ist. Datastream erfasst keine Löschereignisse.
Abfrageintervall: Datastream fragt Änderungen gemäß dem Abfrageintervall ab, das Sie beim Erstellen des Streams festgelegt haben. Das Intervall wird im Messwert für die Datenaktualität des Streams berücksichtigt.
Alle replizierten Objekte unterstützen sowohl die inkrementelle Synchronisierung mit dem Feld modifiedon als auch den vollständigen Backfill.
Versionen
Datastream verwendet die Dataverse Web API-Version 9.1.
Bekannte Einschränkungen
Bekannte Einschränkungen bei der Verwendung von Dataverse als Quelle:
- Bei der inkrementellen Synchronisierungsmethode, die auf dem Zeitstempel
modifiedonbasiert, werden keine Löschereignisse erfasst. - Datastream unterstützt die von Dataverse empfohlene Funktion zur Änderungsverfolgung, die Delta-Links (
@odata.deltaLink) verwendet, nicht. Das liegt daran, dass das Speichern der Delta-Link-URL, die für nachfolgende inkrementelle Abrufe erforderlich ist, nicht unterstützt wird. - Die Replikation ist auf Standard- und benutzerdefinierte Tabellen beschränkt. Virtuelle und private Tabellen werden nicht unterstützt.
- Die genaue Aktualisierung des Felds
modifiedonin den Quelltabellen ist entscheidend, damit die inkrementelle Synchronisierung wie erwartet funktioniert. - Wenn Sie die Labels für
Picklist-Felder abrufen möchten, müssen Datenanfragen den HeaderPrefer: data.include-annotations="*"enthalten, nicht nur die Ganzzahlwerte.