Suche

über alle News und Events

 

Alle News

 

Wir haben während unseres...

Read more

Azure Functions benötigen oft einen...

Read more

In der heutigen Zeit nehmen Erreichbarkeit,...

Read more

Viele unserer Kunden überlegen derzeit, was sie in...

Read more

Lösungsansatz – was benötigt man dafür:

  • Einen...
Read more

Es gibt im Preview die Möglichkeit Azure Blob...

Read more

Die wichtigste Konferenz zu Integration auf der...

Read more

In diesem Blogeintrag werden wir drei sichere und...

Read more

Im vergangenen Jahr war bei uns in Hamburg viel in...

Read more

Heutzutage werden Token für die Authentifizierung...

Read more

How-to: Common Data Model

In diesem Artikel wird das Microsoft Common Data Model erklärt und wie es in einer Data Factory verwendet werden kann.

Nutzen des Common Data Models

Das Microsoft Common Data Model oder kurz CDM hilft dabei, unterschiedliche Quelldaten in einem einzigen Schema zu vereinheitlichen.

Nehmen wir an, Sie haben z.B. Kontodaten aus SAP, Salesforce und weiteren Systemen, diese Daten haben zwar die gleiche Bedeutung, sind aber unterschiedlich aufgebaut und vielleicht sogar in verschiedenen Datenformaten. Hier können nun Schwierigkeiten auftauchen, sollten diese Daten beispielsweise mit Power BI visualisiert und analysiert werden. Mithilfe des CDM und einer Data Factory ist es ohne allzu grosse Schwierigkeiten möglich, diese Daten aufzubereiten und zu vereinheitlichen.

Common Data Model und ADF

In diesem Artikel wird eine einfache Pipeline aufgebaut, welche Daten entgegennimmt, mit einem Data Flow mapped und an einen Data Lake sendet.

Dabei werden drei Möglichkeiten, wie dieses CDM verwendet werden kann, aufgezeigt.

Data Flow

Zuerst wird ein Data Flow erstellt, dieser ist in allen drei Beispielen mehr oder weniger gleich. Zuerst liest er die Daten aus einer SQL-Datenbank, mapped die Felder und schreibt das Resultat in einen Data Lake.

Es werden nur zwei Shapes benötigt, eine Source und eine Sink.

Die Source selbst kann beliebig konfiguriert werden, je nachdem von wo die Daten herkommen und in welchem Format sie sind.

Die Sink hingegen hat einige Standardparameter, die in allen Fällen wie folgt gesetzt werden müssen.

Das Mapping in der Sink erkennt nur teilweise, welche Felder wohin gemapped werden müssen, weshalb es notwendig ist, einige Felder eigenhändig zu mappen.

Pipeline

Die Pipeline selber ist sehr simpel und verwendet nur einen einziges Shape, welcher den erstellten Data Flow aufruft.

Standardweg via Github

Durch die Auswahl von Standard in der Sink im Data Flow wird das zentral verwaltete CDM Github Repository verwendet. Dieses Repository bietet eine breite Auswahl an Entitäten.


Bei der Auswahl der Entität kann entschieden werden, welches Modell für das Mapping verwendet werden soll. Es ist zu beachten, dass das Datenfluss-Debugging aktiviert sein muss, um die verschiedenen Entitäten zu browsen, außerdem kann es eine Weile dauern, bis die Ergebnisse geladen sind.

Standard Common Data Model via Data Lake

Wenn das Standard Microsoft Common Data Model verwendet werden soll, es aber nicht möglich sein sollte, eine Verbindung zum GitHub Repository herzustellen, können alle benötigten Dateien heruntergeladen und in einen Data Lake hochgeladen werden.

Die Azure Data Factory kann sich dann mit diesem Data Lake verbinden, diese Einstellungen erfolgen auch hier über den Data Flow Sink.

Custom Common Data Model via Data Lake

Es gibt einige Gründe, eigene Datenmodelle zu erstellen, entweder enthält das von Microsoft zur Verfügung gestellte Datenmodell nicht alles was gebraucht wird, oder das Model enthält zu viele unbenutzte Felder.

Im ersten Schritt wird eine Entität erstellt, hier beispielsweise für einen Custom account, alle Werte bis auf die Definitions sind standardmäßig immer gleich:

{
    "documentVersion":"1.2.1",
    "jsonSchemaSemanticVersion":"1.0.0",
    "imports":[
        {
            "corpusPath":"github.com/microsoft/CDM/blob/master/schemaDocuments/foundations.cdm.json"
        }
    ],
    "definitions":[
        {
            "entityName":"CustomAccount",
            "hasAttributes":[
                {
                    "name":"AccountId",
                    "purpose":"hasA",
                    "dataFormat":"String"
                },
                {
                    "name":"AccountName",
                    "purpose":"hasA",
                    "dataFormat":"String"
                },
                {
                    "name":"AccountBillingType",
                    "purpose":"hasA",
                    "dataFormat":"String"
                },
                {
                    "name":"AccountCreated",
                    "purpose":"hasA",
                    "dataFormat":"dateTime"
                },
                {
                    "name":"AccountUpdated",
                    "purpose":"hasA",
                    "dataFormat":"dateTime"
                }
            ]
        }
    ]

}

Im zweiten Schritt wird dann das Manifest erstellt, welches auf die Entität verweist:

{
    "manifestName":"Group",
    "entities":[
        {
            "type":"LocalEntity",
            "entityName":"CustomAccount",
            "entityPath":"CustomAccount.cdm.json/CustomAccount",
            "dataPartitionPatterns":[
                {
                    "name":"CustomAccount-data-description",
                    "rootLocation":"CustomAccount",
                    "globPattern":"/*.csv",
                    "regularExpression":"",
                    "exhibitsTraits":[
                        {
                            "traitReference":"is.partition.format.CSV",
                            "arguments":[
                                {
                                    "name":"columnHeaders",
                                    "value":"true"
                                },
                                {
                                    "name":"delimiter",
                                    "value":";"
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ],
    "jsonSchemaSemanticVersion":"1.0.0",
    "imports":[
        {
            "corpusPath":"cdm://foundation.cdm.json"
        }
    ]

}

Diese beiden Dateien werden dann auch wieder wie zuvor in den Data Lake geladen, die Einstellung unterscheidet sich dabei nicht zum Standard Common Data Model via Data Lake.

Ein Beitrag von Patrick Hettich, QUIBIQ Schweiz AG.

Weiterführende Links

Microsoft CDM Dokumentation:
https://docs.microsoft.com/en-us/common-data-model/

Github Standard Entities:
https://github.com/microsoft/CDM/tree/master/schemaDocuments/core/applicationCommon

Github komplettes CDM:
https://github.com/Microsoft/CDM

Ihre Kontaktmöglichkeiten

Sie haben eine konkrete Frage an uns


 

Bleiben Sie immer auf dem Laufenden


 

Mit meinem "Ja" erkläre ich mich mit der Verarbeitung meiner Daten zur Zusendung von Informationen einverstanden. Ich weiß, dass ich diese Erklärung jederzeit durch einfache Mitteilung widerrufen kann. Bei einem Nein an dieser Stelle erhalte ich zukünftig keine Informationen mehr.

© QUIBIQ GmbH · Impressum · Datenschutz