Zum Ende der Metadaten springen
Zum Anfang der Metadaten

Sie zeigen eine alte Version dieser Seite an. Zeigen Sie die aktuelle Version an.

Unterschiede anzeigen Seitenhistorie anzeigen

« Vorherige Version anzeigen Version 13 Nächste Version anzeigen »

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. 

Quellen

Quellen repräsentieren die zu lesende Datenstruktur. Dabei wird die Datenstruktur in brandbox in der Form konfiguriert, die tatsächlich existiert. Man so also einen zu lesenden Datenbaum erstellen und linearisieren. Beispiel:

Artikelgruppe
  '-> Artikel
     '-> Preis 

... wird beispielhaft zu

Name der Artikelgruppe | Artikelname | Preis
Dekoartikel | Kunstblume | 2,0 €
Dekoartikel | Spiegel | 18,0 €

Bei einer Quelle kann ein Filter hinterlegt werden, der es ermöglicht das Suchergebnis auf den relevanten Datenbereich einzuschränken.

Quellen die sich auf ForeignKeys beziehen

Es ist zuätzlich möglich, Inhalte aus ForeignKeys oder EntitySelects zu beziehen. Der Aufbau folgt dabei obigem Beispiel, die Quelle wird jedoch auf der gleichen Ebene verknüpft, wie die Tabelle, in der das Feld existiert. Beispiel:

Artikelgruppe
  '-> Artikel
  '-> Lieferzeiten 

Bei der Konfiguration von Lieferzeiten gibt man das Quell-Feld dann an. In dem hier genannten Beispiel wäre das shopArticleDeliveryTime.  

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.

Ziel-Datenbankfeld
Preis-Bezeichnung

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

Helper für die Transformation

NameBeispiel

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}}

Event-KlasseBeschreibung
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. 

  • Keine Stichwörter