Wie funktioniert eine Datentransformation?

Allgemein

Für eine Datentransformation in brandbox benötigen Sie einen ETL basierenden Prozess. ETL steht dabei für Extract, Transform, Load (Lesen, Transformieren, Schreiben). Im folgenden wird beschrieben, welche Aufgaben die jeweiligen Prozessteile übernehmen. Siehe auch: Struktur eines Transformationsprofils

Technische Grundlage für den Transformationsprozess ist https://github.com/wizacode/php-etl (Dokumentation)

Extractor

Extractors sind der Einstiegspunkt eines jeden Prozesses. Um einen Prozess zu starten, müssen Sie einen Extractor einrichten und können dadurch eine Datenquelle (Doctrine oder CSV) lesen. Siehe Verwendung von Quellen

Transformer

Transformer manipulieren nacheinander Daten aus der zuvor im Extraktor definierten Datenquelle. Sie können im selben Prozess Loadern mehrfach verwendet werden. 

Feldmapping

Mit dem Feldmapping werden die Daten aus der Quelle in Variablen überführt und anschließend an die Platzhalter-Logik übergeben. Dort findet dann die Transformation statt.  

Aus obigem Beispiel wäre folgende Konfiguration möglich:

Quell-Datenbankfelder

$1 = Name der Artikelgruppe $2 = Artikelname  $3 = Preis

Variablen

description = {{ output=$1 }} → {{ php=mb_strimwidth string=$2 start=0 width=10 trim_marker=" ..."}} price = {{ output=$3 }} formattedPrice = {{ number=$3 style="currency" decimals=2}}

Verwenden Sie in den Variablen (Platzhalter).

Transformation

{{description}}{{#gt price 1.2}} ({{formattedPrice}}){{/gt}}

Verwenden Sie in der Transformation Handlebars.

Transformation mit den Werten aus den Quell-Datenbankfeldern

Statt mit den Variablen zu arbeiten, ist es zusätzlich möglich direkt mit den Werten aus dem Quell-Datenbankfeld zu arbeiten. Dazu verwenden Sie ebenfalls die Nummer des Feldes und greifen wie folgt auf den Inhalt zu.

Ziel-Datenbankfeld

Beim Ziel-Datenbankfeld gibt man an, wo der Wert gespeichert werden soll. In diesem Beispeil, die Bezeichnung des Preises.

Helper für die Transformation

Name

Beispiel

Name

Beispiel

gt

{{#gt 2 1}} ja {{else}} nein {{/gt}}

lt

{{#lt 2 1}} ja {{else}} nein {{/lt}}

equal

{{#equal 1 1}} ja {{else}} nein {{/equal}}

notEqual

{{#notEqual 1 1}} ja {{else}} nein {{/notEqual}}

inArray

{{#inArray 1 [1,2,3]}} ja {{else}} nein {{/inArray}}

Mehrsprachigkeit

Im Feldmapping bzw. dessen Transformation, können Sie einfach die Felder der jeweiligen Übersetzung mappen. Greifen Sie dabei auf die Übersetzung des Datentyps, den Sie in der Quelle angegeben haben, zu (bspw. TranslationShopArticle.shopArticleName).   

Events

Event-Klasse

Beschreibung

Event-Klasse

Beschreibung

Brandbox\EtlCore\Manipulate\Doctrine\Lib\Event\OnDoctrineRegisterTransformationHelper

Es können individuelle Helper registriert werden

Loader

Loader sind die Datenausgänge des ETL-Prozesses. Sie können im selben Prozess mehrfach verwendet werden. Im Loader wählen Sie ein Importprofil und steuern dadurch ob Daten angelegt und/oder überschrieben werden sollen. Sie wählen außerdem die Ziel-Datentabelle.