Pivotieren / Transponieren (transpose) in Informatica

Das dynamische Pivotieren oder Transponieren von Daten in Informatica PowerCenter kann je nach Anforderung eine Herausforderung darstellen, da PowerCenter nicht direkt eine Transformation für dynamische Pivotierungen bereitstellt. Aber durch geschickte Nutzung von vorhandenen Transformationen wie NormalizerExpressionRouter, und Aggregator lässt sich eine Pivotierung implementieren.

Hier sind zwei Ansätze, um in Informatica PowerCenter Daten zu pivotieren bzw. zu transponieren: eine Methode zum Pivotieren von Zeilen in Spalten und eine Methode zum Pivotieren von Spalten in Zeilen:

1. Pivotieren von Zeilen in Spalten (Daten werden von mehreren Zeilen in mehrere Spalten umgewandelt)

Dies ist der häufigste Anwendungsfall, bei dem eine Eingabetabelle mit mehreren Zeilen in eine Ausgabe mit weniger Zeilen, aber mehr Spalten, umgewandelt wird.

Beispiel:

  • Input-Daten:
IDMonatUmsatz
1Jan100
2Feb150
3Mar200

Output-Daten (pivotiert):

IDUmsatz_JanUmsatz_FebUmsatz_Mar
1100150200

Vorgehensweise:

  1. Source Definition: Die Daten kommen aus der Eingabequelle in der Form von mehreren Zeilen (z. B. Monat und Umsatz).
  2. Normalizer Transformation: Normalerweise wird diese verwendet, um Spalten in Zeilen zu transponieren, aber hier würde der Normalizer nicht direkt helfen.
  3. Expression Transformation: Erstelle eine Expression Transformation, um basierend auf dem Wert des Monats dynamisch Felder zu setzen.
  4. Router Transformation: Verwende eine Router Transformation, um Zeilen nach den Monatswerten zu verteilen (z. B. eine Gruppe für jeden Monat).
  5. Aggregator Transformation: Verwende eine Aggregator Transformation, um die Daten pro ID zu gruppieren und den Wert für jeden Monat in ein separates Feld zu aggregieren.
  6. Zieldefinition: Definiere die Ausgabespalten entsprechend der pivotierten Daten.

Beispiel für Router-Logik:

  • Erstelle Gruppen in der Router-Transformation:
    • Gruppe_Jan mit Bedingung Monat = 'Jan'
    • Gruppe_Feb mit Bedingung Monat = 'Feb'
    • Gruppe_Mar mit Bedingung Monat = 'Mar'

Beispiel für Expression-Logik:

  • Erstelle Output-Felder in der Expression für jeden Monat:
    • Umsatz_Jan = IIF(Monat = ‚Jan‘, Umsatz, 0)
    • Umsatz_Feb = IIF(Monat = ‚Feb‘, Umsatz, 0)
    • Umsatz_Mar = IIF(Monat = ‚Mar‘, Umsatz, 0)

Beispiel für Aggregator-Logik:

  • Gruppiere die Daten im Aggregator basierend auf ID und berechne:
    • SUM(Umsatz_Jan)SUM(Umsatz_Feb)SUM(Umsatz_Mar)

2. Pivotieren von Spalten in Zeilen (Transponieren)

Hierbei handelt es sich um die Umwandlung von mehreren Spalten in mehrere Zeilen.

Beispiel:

  • Input-Daten:
IDUmsatz_JanUmsatz_FebUmsatz_Mar
1100150200
  • Output-Daten (transponiert):
IDMONATUMSATZ
1Jan100
2Feb150
3Mar200

Vorgehensweise:

  1. Source Definition: Die Daten kommen aus der Eingabetabelle in Form von wenigen Zeilen und mehreren Spalten (z. B. Umsatz_Jan, Umsatz_Feb, Umsatz_Mar).
  2. Normalizer Transformation: Verwende die Normalizer Transformation, um Spalten in Zeilen zu transponieren.
  3. Konfiguration des Normalizers:
    • Setze die Spaltenanzahl (Occurs) auf 3 für die Umsatz-Spalten (Umsatz_JanUmsatz_FebUmsatz_Mar).
    • Der Normalizer wird die drei Umsatz-Spalten in drei separate Zeilen umwandeln.
    • Definiere in der Normalizer-Transformation generierte Ports wie Umsatz und Monat.
  4. Expression Transformation: Nach dem Normalizer kannst du eine Expression Transformation hinzufügen, um den Wert des Monats korrekt zuzuweisen:
    • Monat = DECODE(GENERATED_COLUMN_NAME, 1, ‚Jan‘, 2, ‚Feb‘, 3, ‚Mar‘)

Schritt-für-Schritt für Normalizer:

  • In der Normalizer-Transformation definiere ein Feld Umsatz mit einer Occurs-Anzahl von 3.
  • Der Normalizer erzeugt dann dynamisch Zeilen für jeden Wert in Umsatz.
  • Die generierte Spalte kann zur Kennzeichnung der Monate genutzt werden, indem du über eine Expression den korrekten Monat setzt.

Zusammenfassung der beiden Ansätze:

  • Zeilen zu Spalten Pivotierung: Benutze Router, Expression, und Aggregator Transformationen.
  • Spalten zu Zeilen Transponierung: Verwende den Normalizer, um dynamisch Spalten in Zeilen umzuwandeln.

Wichtige Hinweise:

  • Der Normalizer ist besonders nützlich, wenn die Anzahl der Spalten, die in Zeilen umgewandelt werden, statischist.
  • Für dynamische Pivotierungen, bei denen sich die Anzahl der Spalten oder die Struktur häufig ändert, kann es notwendig sein, das Mapping regelmäßig anzupassen.
  • Bei komplexeren Anforderungen, bei denen die Pivotierung dynamischer sein soll (ohne feste Spaltenanzahl), kann es sinnvoll sein, Stored Procedures oder vorbereitete SQL-Statements in der Datenbank zu verwenden und die Ergebnisse dann in Informatica zu verarbeiten.

Durch den Einsatz dieser Techniken kannst du Daten in Informatica PowerCenter pivotieren oder transponieren und an die spezifischen Anforderungen deines ETL-Prozesses anpassen.

5 1 vote
Article Rating

You may also like...

Abonnieren
Benachrichtige mich bei
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x