Verwenden der inkrementellen Aktualisierung mit DataflowsUsing incremental refresh with dataflows

Hinweis

Gültig ab November 2020:Effective November 2020:

  • Common Data Service wurde in Microsoft Dataverse umbenannt.Common Data Service has been renamed to Microsoft Dataverse. Weitere InformationenLearn more
  • Einige Terminologie in Microsoft Dataverse wurde aktualisiert.Some terminology in Microsoft Dataverse has been updated. Beispielsweise ist die Entität jetzt Table , und Field ist jetzt Column.For example, entity is now table and field is now column. Weitere InformationenLearn more

Dieser Artikel wird in Kürze aktualisiert, um die neueste Terminologie widerzuspiegeln.This article will be updated soon to reflect the latest terminology.

Mit Daten Flüssen können Sie große Datenmengen in Power BI oder den bereitgestellten Speicher Ihres Unternehmens einbringen.With dataflows, you can bring large amounts of data into Power BI or your organization's provided storage. In einigen Fällen ist es jedoch nicht praktikabel, eine vollständige Kopie der Quelldaten bei jedem Aktualisierungsvorgang zu aktualisieren.In some cases, however, it's not practical to update a full copy of source data in each refresh. Eine gute Alternative ist die inkrementelle Aktualisierung, die folgende Vorteile für Dataflows bietet:A good alternative is incremental refresh, which provides the following benefits for dataflows:

  • Die Aktualisierung erfolgt schneller: nur geänderte Daten müssen aktualisiert werden.Refresh occurs faster: Only data that's changed needs to be refreshed. Aktualisieren Sie beispielsweise nur die letzten fünf Tage eines 10 Jahre alten Dataflows.For example, refresh only the last five days of a 10-year dataflow.
  • Die Aktualisierung ist zuverlässiger: beispielsweise ist es nicht notwendig, lange Ausführungs Verbindungen mit flüchtigen Quellsystemen aufrechtzuerhalten.Refresh is more reliable: For example, it's not necessary to maintain long-running connections to volatile source systems.
  • Der Ressourcenverbrauch verringert sich: weniger Daten zur Aktualisierung verringern den Gesamtverbrauch von Arbeitsspeicher und anderen Ressourcen.Resource consumption is reduced: Less data to refresh reduces overall consumption of memory and other resources.

Die inkrementelle Aktualisierung ist in Daten Flüssen verfügbar, die in Power BI und in Power apps erstellten Daten Flüssen erstellt wurden.Incremental refresh is available in dataflows created in Power BI and dataflows created in Power Apps. In diesem Artikel werden Bildschirme aus Power BI gezeigt, aber diese Anweisungen gelten für Datenflüsse, die in Power BI oder in Power Apps erstellt wurden.This article shows screens from Power BI, but these instructions apply to dataflows created in Power BI or in Power Apps.

Inkrementelle Aktualisierung für Dataflows

Wenn Sie die inkrementelle Aktualisierung in Daten Flüssen verwenden, die in Power BI erstellt werden, muss sich der Datenfluss in einem Arbeitsbereich in Premium-KapazitätbefindenUsing incremental refresh in dataflows created in Power BI requires that the dataflow reside in a workspace in Premium capacity. Die inkrementelle Aktualisierung in Power apps erfordert den powerapps-Plan 2Incremental refresh in Power Apps requires Power Apps Plan 2.

In Power BI oder powerapps erfordert die Verwendung der inkrementellen Aktualisierung, dass die in den Datenfluss erfassten Quelldaten ein DateTime-Feld aufweisen, in dem die inkrementelle Aktualisierung filtern kann.In either Power BI or Power Apps, using incremental refresh requires that source data ingested into the dataflow have a DateTime field on which incremental refresh can filter.

Konfigurieren der inkrementellen Aktualisierung für DataflowsConfiguring incremental refresh for dataflows

Ein Dataflow kann viele Entitäten enthalten.A dataflow can contain many entities. Die inkrementelle Aktualisierung wird auf Entitätsebene eingerichtet, sodass ein Dataflow vollständig und inkrementell aktualisierte Entitäten enthalten kann.Incremental refresh is set up at the entity level, allowing one dataflow to hold both fully refreshed entities and incrementally refreshed entities.

Um eine inkrementell aktualisierte Entität einzurichten, konfigurieren Sie Ihre Entität zunächst wie jede andere Entität.To set up an incremental refreshed entity, start by configuring your entity as you would any other entity.

Wählen Sie nach dem Erstellen und Speichern des Datenflusses inkrementelle Aktualisierung Incremental refresh  inkrementelle Aktualisierungen in der Entitäts Ansicht aus, wie in der folgenden Abbildung dargestellt.After the dataflow is created and saved, select Incremental refresh Incremental refresh in the entity view, as shown in the following image.

Symbol „Inkrementelle Aktualisierung“ für Dataflows

Wenn Sie das Symbol auswählen, wird das Fenster inkrementelle Aktualisierungs Einstellungen angezeigt.When you select the icon, the Incremental refresh settings window appears. Aktivieren Sie inkrementelle Aktualisierung.Turn on incremental refresh.

Inkrementelle Aktualisierung für Dataflows

In der folgende Liste werden die Einstellungen im Fenster Einstellungen für inkrementelle Aktualisierung erläutert.The following list explains the settings in the Incremental refresh settings window.

  • Inkrementelle Aktualisierung ein/aus: schaltet die inkrementelle Aktualisierungs Richtlinie für die Entität ein bzw. aus.Incremental refresh on/off toggle: Turns the incremental refresh policy on or off for the entity.

  • Dropdown Feld "Filter Feld": wählt das Abfragefeld aus, für das die Entität nach Inkrementen gefiltert werden soll.Filter field drop-down: Selects the query field on which the entity should be filtered for increments. Dieses Feld enthält nur DateTime-Felder.This field only contains DateTime fields. Die inkrementelle Aktualisierung kann nicht verwendet werden, wenn die Entität kein DateTime-Feld enthält.You can't use incremental refresh if your entity doesn't contain a DateTime field.

  • Zeilen aus der Vergangenheit Speichern/aktualisieren: das Beispiel in der vorherigen Abbildung veranschaulicht die folgenden Einstellungen.Store/refresh rows from the past: The example in the previous image illustrates these next few settings.

    In diesem Beispiel definieren wir eine Aktualisierungs Richtlinie zum Speichern von fünf Jahren Daten insgesamt und zum inkrementellen Aktualisieren von Daten aus 10 Tagen.In this example, we define a refresh policy to store five years of data in total and incrementally refresh 10 days of data. Wenn Sie davon ausgehen, dass die Entität täglich aktualisiert wird, werden die folgenden Aktionen für jeden Aktualisierungs Vorgang ausgeführt:Assuming that the entity is refreshed daily, the following actions are carried out for each refresh operation:

    • Die Daten eines neuen Tages werden hinzugefügt.Add a new day of data.

    • Aktualisieren Sie 10 Tage bis zum aktuellen Datum.Refresh 10 days, up to the current date.

    • Entfernen Sie Kalenderjahre, die älter als fünf Jahre sind, vor dem aktuellen Datum.Remove calendar years that are older than five years before the current date. Wenn das aktuelle Datum z. b. der 1. Januar 2019 ist, wird das Jahr 2013 entfernt.For example, if the current date is January 1, 2019, the year 2013 is removed.

    Die erste Datenfluss Aktualisierung kann eine Weile in Anspruch nehmen, um alle fünf Jahre zu importieren, aber nachfolgende Aktualisierungen werden wahrscheinlich viel schneller abgeschlossen.The first dataflow refresh might take a while to import all five years, but subsequent refreshes are likely to be completed much more quickly.

  • Erkennen von Datenänderungen: eine inkrementelle Aktualisierung von 10 Tagen ist viel effizienter als eine vollständige Aktualisierung von fünf Jahren, aber Sie können vielleicht noch besser Vorgehen.Detect data changes: An incremental refresh of 10 days is much more efficient than a full refresh of five years, but you might be able to do even better. Wenn Sie das Kontrollkästchen Datenänderungen erkennen aktivieren, können Sie eine Datums-/uhrzeitspalte auswählen, um nur die Tage zu identifizieren und zu aktualisieren, in denen sich die Daten geändert haben.When you select the Detect data changes check box, you can select a date/time column to identify and refresh only the days where the data has changed. Dies setzt voraus, dass eine solche Spalte im Quellsystem vorhanden ist, die typischerweise zu Prüfzwecken dient.This assumes such a column exists in the source system, which is typically for auditing purposes. Der Maximalwert dieser Spalte wird für jeden der Zeiträume im Inkrementbereich ausgewertet.The maximum value of this column is evaluated for each of the periods in the incremental range. Wenn sich die Daten seit der letzten Aktualisierung nicht geändert haben, müssen Sie den Zeitraum nicht aktualisieren.If that data hasn't changed since the last refresh, there's no need to refresh the period. In diesem Beispiel können dadurch die Tage, die inkrementell aktualisiert werden, von 10 auf vielleicht 2 reduziert werden.In the example, this might further reduce the days incrementally refreshed from 10 to perhaps 2.

    Tipp

    Der aktuelle Entwurf erfordert, dass die Spalte zum Erkennen von Datenänderungen persistent gespeichert und in den Arbeitsspeicher zwischengespeichert wird.The current design requires that the column used to detect data changes be persisted and cached into memory. Möglicherweise möchten Sie eine der folgenden Techniken in Erwägung gezogen, um die Kardinalität und den Speicherverbrauch zu verringern:You might want to consider one of the following techniques to reduce cardinality and memory consumption:

    • Speichern Sie nur den maximalen Wert dieser Spalte zum Zeitpunkt der Aktualisierung, möglicherweise mithilfe einer Power Query Funktion.Persist only the maximum value of this column at time of refresh, perhaps by using a Power Query function.
    • Verringern Sie die Genauigkeit auf eine Ebene, die für die Anforderungen an die Aktualisierungshäufigkeit akzeptabel ist.Reduce the precision to a level that's acceptable given your refresh-frequency requirements.
  • Nur abgeschlossene Zeiträume aktualisieren: Stellen Sie sich vor, dass ihre Aktualisierung täglich um 4:00 Uhr ausgeführt wird.Only refresh complete periods: Imagine that your refresh is scheduled to run at 4:00 AM every day. Wenn während der ersten vier Stunden des Tages Daten im Quellsystem angezeigt werden, sollten Sie diese nicht berücksichtigen.If data appears in the source system during those first four hours of that day, you might not want to account for it. Einige Geschäftsmetriken, z. b. "Barrel" pro Tag in der Öl-und Gasbranche, sind auf der Grundlage von partiellen Tagen nicht praktikabel oder sinnvoll.Some business metrics, such as barrels per day in the oil and gas industry, aren't practical or sensible to account for based on partial days.

    Ein weiteres Beispiel, bei dem die Berücksichtigung von ausschließlich vollständigen Zeiträumen geeignet ist, ist die Aktualisierung von Daten aus einem Finanzsystem.Another example where only refreshing complete periods is appropriate is refreshing data from a financial system. Stellen Sie sich vor, in einem Finanzsystem werden die Daten des Vormonats am 12. Kalendertag des Monats freigegeben.Imagine a financial system where data for the previous month is approved on the 12th calendar day of the month. Sie können den inkrementellen Bereich auf einen Monat festlegen und die Aktualisierung so planen, dass Sie am 12. Tag des Monats ausgeführt wird.You can set the incremental range to one month and schedule the refresh to run on the 12th day of the month. Wenn diese Option ausgewählt ist, aktualisiert das System die Januar-Daten (den letzten abgeschlossenen Monats Zeitraum) am 12. Februar.With this option selected, the system will refresh January data (the most recent complete monthly period) on February 12.

Hinweis

DataFlow-inkrementelle Aktualisierung bestimmt Datumsangaben gemäß der folgenden Logik: Wenn eine Aktualisierung geplant ist, verwendet die inkrementelle Aktualisierung für Datenflüsse die Zeitzone, die in der Aktualisierungs Richtlinie definiert ist.Dataflow incremental refresh determines dates according to the following logic: if a refresh is scheduled, incremental refresh for dataflows uses the time zone defined in the refresh policy. Wenn kein Aktualisierungs Zeitplan vorhanden ist, verwendet die inkrementelle Aktualisierung die Zeit des Computers, auf dem die Aktualisierung ausgeführt wird.If no schedule for refreshing exists, incremental refresh uses the time from the computer running the refresh.

Nachdem die inkrementelle Aktualisierung konfiguriert wurde, wird die Abfrage vom Datenfluss automatisch so geändert, dass Filter nach Datum eingeschlossen werden.After incremental refresh is configured, the dataflow automatically alters your query to include filtering by date. Sie können die automatisch generierte Abfrage bearbeiten, indem Sie den erweiterten Editor in Power Query verwenden, um die Aktualisierung zu optimieren oder anzupassen.You can edit the automatically generated query by using the advanced editor in Power Query to fine-tune or customize your refresh. Weitere Informationen zur inkrementellen Aktualisierung und deren Funktionsweise finden Sie in den folgenden Abschnitten.Read more about incremental refresh and how it works in the following sections.

Inkrementelle und nicht berechnete EntitätenIncremental refresh and linked entities vs. computed entities

Bei verknüpften Entitäten aktualisiert die inkrementelle Aktualisierung die Quellentität.For linked entities, incremental refresh updates the source entity. Da verknüpfte Entitäten einfach ein Zeiger auf die ursprüngliche Entität sind, hat die inkrementelle Aktualisierung keine Auswirkung auf die verknüpfte EntitätBecause linked entities are simply a pointer to the original entity, incremental refresh has no impact on the linked entity. Wenn die Quell Entität gemäß der definierten Aktualisierungs Richtlinie aktualisiert wird, sollten alle verknüpften Entitäten davon ausgehen, dass die Daten in der Quelle aktualisiert werden.When the source entity is refreshed according to its defined refresh policy, any linked entity should assume the data in the source is refreshed.

Berechnete Entitäten basieren auf Abfragen, die über einen Datenspeicher ausgeführt werden, bei dem es sich um einen anderen Datenfluss handeln kann.Computed entities are based on queries running over a data store, which can be another dataflow. Daher verhalten sich berechnete Entitäten genauso wie verknüpfte Entitäten.As such, computed entities behave the same way as linked entities.

Da sich berechnete Entitäten und verknüpfte Entitäten ähnlich Verhalten, sind die Anforderungen und Konfigurationsschritte für beide identisch.Because computed entities and linked entities behave similarly, the requirements and configuration steps are the same for both. Ein Unterschied besteht darin, dass für berechnete Entitäten in bestimmten Konfigurationen die inkrementelle Aktualisierung aufgrund der Art und Weise, wie Partitionen erstellt werden, nicht optimiert werden kann.One difference is that for computed entities, in certain configurations, incremental refresh can't run in an optimized fashion because of the way partitions are built.

Wechseln zwischen inkrementellen und vollständigen AktualisierungenChanging between incremental and full refresh

Dataflows unterstützen Änderungen der Aktualisierungs Richtlinie zwischen inkrementeller und vollständiger Aktualisierung.Dataflows support changing the refresh policy between incremental and full refresh. Wenn eine Änderung in beide Richtungen erfolgt (vollständig oder inkrementell oder inkrementell in Full), wirkt sich die Änderung auf den Datenfluss nach der nächsten Aktualisierung aus.When a change occurs in either direction (full to incremental or incremental to full), the change affects the dataflow after the next refresh.

Wenn Sie einen Datenfluss von vollständiger Aktualisierung auf inkrementell verschieben, aktualisiert die neue Aktualisierungs Logik den Datenfluss, indem er das Fenster "Aktualisieren" anhält und in den Einstellungen für die inkrementelle Aktualisierung definiert wird.When moving a dataflow from full refresh to incremental, the new refresh logic updates the dataflow by adhering to the refresh window and increment as defined in the incremental refresh settings.

Beim Verschieben eines Datenflusses von der inkrementellen zur vollständigen Aktualisierung werden alle Daten, die in der inkrementellen Aktualisierung gesammelt werden, durch die in der vollständigen Aktualisierung definierte RichtlinieWhen moving a dataflow from incremental to full refresh, all data accumulated in the incremental refresh is overwritten by the policy defined in the full refresh. Diese Aktion müssen Sie genehmigen.You must approve this action.

Zeitzonenunterstützung in der inkrementellen AktualisierungTime zone support in incremental refresh

Die inkrementelle Aktualisierung von Datenfluss hängt von der Zeit ab, zu der Sie ausgeführt wird.Dataflow incremental refresh is dependent on the time at which it's run. Die Filterung der Abfrage ist abhängig von dem Tag, an dem Sie ausgeführt wird.The filtering of the query is dependent on the day on which it's run.

Um diese Abhängigkeiten zu berücksichtigen und Datenkonsistenz sicherzustellen, implementiert die inkrementelle Aktualisierung für Dataflows die folgende Heuristik für Szenarien mit Jetzt aktualisieren:To accommodate those dependencies and to ensure data consistency, incremental refresh for dataflows implements the following heuristic for refresh now scenarios:

  • Wenn eine geplante Aktualisierung im System definiert ist, verwendet die inkrementelle Aktualisierung die Zeitzoneneinstellungen aus dem Abschnitt "geplante Aktualisierung".In the case where a scheduled refresh is defined in the system, incremental refresh uses the time-zone settings from the scheduled refresh section. Dadurch wird sichergestellt, dass die Zeitzone, in der der Datenfluss von der Person aktualisiert wird, immer mit der Definition des Systems konsistent ist.This ensures that whatever time zone the person refreshing the dataflow is in, it will always be consistent with the system's definition.

  • Wenn keine geplante Aktualisierung definiert ist, verwenden Datenflüsse die Zeitzone auf dem Computer des Benutzers, der die Aktualisierung durchführt.If no scheduled refresh is defined, dataflows use the time zone from the computer of the user who's performing the refresh.

Die inkrementelle Aktualisierung kann auch mithilfe von APIs aufgerufen werden.Incremental refresh can also be invoked by using APIs. In diesem Fall kann der API-Aufruf eine Zeitzoneneinstellung enthalten, die in der Aktualisierung verwendet wird.In this case, the API call can hold a time-zone setting that's used in the refresh. APIs können für Test- und Überprüfungszwecke hilfreich sein.Using APIs can be helpful for testing and validation purposes.

Details zur Implementierung der inkrementellen AktualisierungIncremental refresh implementation details

Dataflows nutzen die Partitionierung für die inkrementelle Aktualisierung.Dataflows use partitioning for incremental refresh. Nachdem XMLA-Endpoints für Power BI Premium verfügbar sind, werden die Partitionen sichtbar.After XMLA-endpoints for Power BI Premium are available, the partitions become visible. Bei der inkrementellen Aktualisierung wird die Mindestanzahl von Partitionen beibehalten, um die Aktualisierungs Richtlinien Anforderungen zu erfüllen.Incremental refresh in dataflows keeps the minimum number of partitions to meet refresh policy requirements. Alte Partitionen, die außerhalb des gültigen Bereichs liegen, werden gelöscht, wodurch ein paralleles Fenster verwaltet wird.Old partitions that go out of range are dropped, which maintains a rolling window. Partitionen werden ggf. zusammengeführt, wodurch die Gesamtanzahl der erforderlichen Partitionen verringert wird.Partitions are opportunistically merged, reducing the total number of partitions required. Hierdurch werden die Komprimierung und in einigen Fällen die Abfrageleistung verbessert.This improves compression and, in some cases, can improve query performance.

In den Beispielen in diesem Abschnitt wird die folgende Richtlinie für die Aktualisierung freigegeben:The examples in this section share the following refresh policy:

  • Speichern von Zeilen im letzten QuartalStore rows in the last 1 Quarter
  • Aktualisieren von Zeilen in den letzten 10 TagenRefresh rows in the last 10 Days
  • Erkennen von Datenänderungen = FALSEDetect data changes = False
  • Aktualisieren von nur vollständigen Tagen = TrueOnly refresh complete days = True

Zusammenführen von PartitionenMerge partitions

In diesem Beispiel werden Tages Partitionen automatisch mit der Month-Ebene zusammengeführt, nachdem Sie den inkrementellen Bereich verlassen haben.In this example, day partitions are automatically merged to the month level after they go outside the incremental range. Partitionen im inkrementellen Bereich müssen auf Tagesebene verwaltet werden, damit sie nur an diesen Tagen aktualisiert werden.Partitions in the incremental range need to be maintained at daily granularity to allow only those days to be refreshed. Beim Aktualisierungsvorgang mit dem Ausführungsdatum 11.12.2016 werden die Tage im November zusammengeführt, da sie außerhalb des inkrementellen Bereichs liegen.The refresh operation with Run Date 12/11/2016 merges the days in November, because they fall outside the incremental range.

Zusammenführen von Partitionen in Dataflows

Löschen von alten PartitionenDrop old partitions

Alte Partitionen, die außerhalb des gesamten Bereichs liegen, werden entfernt.Old partitions that fall outside the total range are removed. Der Aktualisierungs Vorgang mit dem Lauf Datum 1/2/2017 löscht die Partition für den Q3 2016, weil Sie außerhalb des Gesamtbereichs liegt.The refresh operation with Run Date 1/2/2017 drops the partition for Q3 of 2016 because it falls outside the total range.

Löschen von alten Partitionen in Dataflows

Wiederherstellen nach einem längeren AusfallRecovery from prolonged failure

In diesem Beispiel wird simuliert, wie das System nach einem längeren Ausfall ordnungsgemäß wiederhergestellt wird.This example simulates how the system recovers gracefully from prolonged failure. Nehmen wir an, dass die Aktualisierung nicht erfolgreich ausgeführt wird, da die Datenquellen-Anmeldeinformationen abgelaufen sind, und dass die Behebung des Problems 13 Tage dauert.Let's say refresh doesn't run successfully because data source credentials expired, and the issue takes 13 days to resolve. Der inkrementelle Bereich beträgt nur 10 Tage.The incremental range is only 10 days.

Beim nächsten erfolgreichen Aktualisierungsvorgang mit dem Ausführungsdatum 15.01.2017 müssen die fehlenden 13 Tage abgeglichen werden, und die Aktualisierung muss ausgeführt werden.The next successful refresh operation, with Run Date 1/15/2017, needs to backfill the missing 13 days and refresh them. Außerdem müssen Sie die letzten neun Tage aktualisieren, da Sie nicht nach dem normalen Zeitplan aktualisiert wurden.It also needs to refresh the previous nine days because they weren't refreshed on the normal schedule. Dies bedeutet, dass der inkrementelle Bereich von 10 auf 22 Tage erhöht wird.In other words, the incremental range is increased from 10 to 22 days.

Mit dem nächsten Aktualisierungs Vorgang mit dem Lauf Datum 1/16/2017 können Sie die Tage im Dezember und die Monate im vierten Quartal 2016 zusammenführen.The next refresh operation, with Run Date 1/16/2017, takes the opportunity to merge the days in December and the months in Q4 of 2016.

Wiederherstellen nach einem längeren Ausfall in Dataflows

Inkrementelle Aktualisierung von Dataflows und DatasetsDataflow incremental refresh and datasets

Die inkrementelle Aktualisierung von Dataflows und Datasets sind für die Verwendung in Kombination ausgelegt.Dataflow incremental refresh and dataset incremental refresh are designed to work in tandem. Es ist akzeptabel und unterstützt, dass eine Entität mit inkrementeller Aktualisierung in einem Datenfluss, vollständig in ein DataSet geladen oder eine vollständig geladene Entität in einem Datenfluss inkrementell in ein DataSet geladen wird.It's acceptable and supported to have an incrementally refreshing entity in a dataflow, fully loaded into a dataset, or a fully loaded entity in a dataflow incrementally loaded to a dataset.

Beide Ansätze funktionieren gemäß den angegebenen Definitionen in den Aktualisierungs Einstellungen.Both approaches work according to your specified definitions in the refresh settings. Weitere Informationen: inkrementelle Aktualisierung in Power BI PremiumMore information: Incremental refresh in Power BI Premium

Überlegungen und EinschränkungenConsiderations and limitations

Die inkrementelle Aktualisierung in Power Platform Datenflüsse wird nur in Daten Flüssen mit einem Azure Data Lake Storage Konto unterstützt, nicht in Daten Flüssen mit Dataverse als Ziel.Incremental refresh in Power Platform dataflows is only supported in dataflows with an Azure Data Lake Storage account, not in dataflows with Dataverse as the destination.

Siehe auchSee also

In diesem Artikel wird die inkrementelle Aktualisierung für Dataflows beschrieben.This article described incremental refresh for dataflows. Im folgenden finden Sie einige weitere Artikel, die hilfreich sein könnten:Here are some more articles that might be useful:

Weitere Informationen zu Power Query und zur geplanten Aktualisierung finden Sie in den folgenden Artikeln:For more information about Power Query and scheduled refresh, you can read these articles:

Weitere Informationen über das Common Data Model finden Sie im Übersichtsartikel:For more information about Common Data Model, you can read its overview article: