Zum Inhalt springen

Bevor Sie sich mit den erweiterten Funktionen des Data Mapper befassen, hilft eine kurze Wiederholung der Grundfunktionen.

Der Data Mapper dient dazu, Spalten der Quelldaten der Zieltabelle zuzuordnen.

Die Menüschaltfläche Quelle untersuchen bietet zusätzliche Möglichkeiten, Spalten von der Quelle dem Ziel zuzuordnen:

  • Beide Zuordnungstabellen füllen: Übernimmt alle Werte aus der Quelltabelle in die Zieltabelle. Dies ist die Standardeinstellung.
  • Nur Quellzuordnungstabelle füllen: Ordnet nur alle Werte in der Quelltabelle zu. Das ist hilfreich, wenn Sie einen bestehenden Workflow ändern und sich die Spaltenstruktur der Quelle geändert hat.
  • Nur Zielzuordnungstabelle füllen: Übernimmt alle Werte nur in die Zieltabelle.

Wenn die Optionen für Quell- und Zielspalten nicht ausreichen, können Sie auf mehrere Arten weitere Spalten in die Zieltabelle aufnehmen:

  • Alle übernehmen fügt alle Quellspalten in die Zieltabelle ein, unabhängig davon, ob sie bereits vorhanden waren.
  • Ausgewählte übernehmen fügt nur die ausgewählten Quellspalten ein.
  • Klicken Sie auf der Zielseite mit der rechten Maustaste und wählen Sie Zeile einfügen, um unmittelbar über der aktuell ausgewählten Zeile eine Zeile einzufügen.
  • Klicken Sie auf der Zielseite mit der rechten Maustaste und wählen Sie Zeile anhängen, um unten (ganz rechts) in der Zieltabelle eine Zeile einzufügen.

Um Spalten aus der Zieltabelle zu löschen, wählen Sie die gewünschten Spalten aus, klicken Sie mit der rechten Maustaste und wählen Sie Löschen.

Um Spalten in der Zieltabelle neu anzuordnen, wählen Sie die gewünschten Spalten aus. Sie haben dafür zwei Möglichkeiten:

  • Pfeile für Massenverschiebung: Wählen Sie die gewünschte Verschiebeoption über die Pfeile oben rechts.
  • Kontextmenü: Klicken Sie mit der rechten Maustaste und wählen Sie An den Anfang verschieben, Nach oben, Nach unten oder An das Ende verschieben.

Um nur eindeutige Optionen zurückzugeben, wählen Sie die Menüoption Eindeutig. Dadurch wird für jede Spalte der Quelle ein Kontrollkästchen eingeblendet. Aktivieren Sie einfach das Kontrollkästchen neben der entsprechenden Spalte, um nur eindeutige Ergebnisse zurückzugeben.

Um Ergebnisse zu aggregieren, wählen Sie die Menüoption Zusammenfassen. Dadurch wird für jede Spalte der Zieltabelle eine Auswahlliste eingeblendet. Wählen Sie für jede Spalte eine geeignete Zusammenfassungsmethode.

Quellspaltencust_idamtdtnoteZielspaltencustomer_idamountorder_dateumbenennenUmwandlung → decimalumbenennennicht zugeordnet → verworfen
Der Mapper verbindet jede Quellspalte mit einer Zielspalte und benennt sie dabei um oder wandelt ihren Typ um. Nicht zugeordnete Quellspalten werden aus dem Ergebnis ausgelassen.

Um Ergebnisse zu aggregieren, wählen Sie die Menüoption Zusammenfassen. Dadurch wird für jede Spalte der Zieltabelle eine Auswahlliste eingeblendet. Die folgenden Zusammenfassungsoptionen stehen zur Verfügung:

Funktion Beschreibung
Gruppieren nach Gruppiert die Ergebnisse nach dem Wert
Anzahl Anzahl der Beobachtungen ohne Nullwerte in der Gruppe
Anzahl (einschließlich Nullwerte) Anzahl der Beobachtungen in der Gruppe
Summe Summe der Werte in der Gruppe
Mittelwert Mittelwert der Werte in der Gruppe
Median Median der Werte in der Gruppe
Modus Modus der Werte in der Gruppe
Minimum Minimum der Werte in der Gruppe
Maximum Maximum der Werte in der Gruppe
Erster Erster Wert der Werte in der Gruppe in der sortierten Reihenfolge
Letzter Letzter Wert der Werte in der Gruppe in der sortierten Reihenfolge
Standardabweichung Erwartungstreue Standardabweichung in der Gruppe
Stichproben-Standardabweichung Stichproben-Standardabweichung in der Gruppe
Grundgesamtheits-Standardabweichung Grundgesamtheits-Standardabweichung in der Gruppe
Varianz Erwartungstreue Varianz in der Gruppe
Stichprobenvarianz Stichprobenvarianz in der Gruppe
Grundgesamtheitsvarianz Grundgesamtheitsvarianz in der Gruppe
Erweitert (ohne Gruppierung) Spezielle Aggregationsauswahl bei Verwendung von Fensterfunktionen

Wählen Sie die passende Zusammenfassungsmethode für die Spalte.

Aggregationsschlüssel für REST und KI-Assistenten

Abschnitt betitelt „Aggregationsschlüssel für REST und KI-Assistenten“

Wenn Sie einen Schritt über die REST-API oder einen KI-Assistenten festlegen, trägt jede Zielspalte ihre Zusammenfassung in agg, und der aggregation_type des Schritts wählt dieselben Optionen aus. Jeder Schritt mit einem Data Mapper akzeptiert diese Werte:

Schlüssel Zusammenfassung
group Gruppieren nach
dont_group Erweitert (ohne Gruppierung): Die Spalte wird weder gruppiert noch aggregiert, für Ausdrücke, die selbst aggregieren oder Fensterfunktionen verwenden
count Anzahl der Beobachtungen ohne Nullwerte in der Gruppe
count_null Anzahl einschließlich Nullwerte
count_distinct Anzahl der eindeutigen Werte in der Gruppe
sum Summe
avg Mittelwert
median Median
min Minimum
max Maximum
stddev Standardabweichung
stddev_samp Stichproben-Standardabweichung
stddev_pop Grundgesamtheits-Standardabweichung
variance Varianz
var_samp Stichprobenvarianz

Jede Zielspalte kann ein sort tragen: asc, desc oder none, oder ein Objekt {ascending, order}. ascending ist true oder false. order ist eine Ganzzahl, die die Priorität des Schlüssels festlegt: Spalten mit einem order werden zuerst sortiert, die niedrigste Zahl zuerst; danach folgen die übrigen sortierten Spalten in der Reihenfolge ihrer Position.

Wenn Sie eine Fensterfunktion verwenden, wählen Sie Erweitert (ohne Gruppierung) als Aggregationsmethode. Diese spezielle Auswahl ist erforderlich, da die Fensterfunktion bereits eine Aggregation enthält.

Wenn Sie in der Spalte Konstante einen Wert angeben, überschreibt dieser den Wert der Quellspalte (sofern angegeben) und füllt die Spalte mit dem angegebenen konstanten Wert.

Eine Zielspalte übernimmt ihren Wert aus dem Feld, das Sie ausfüllen, in dieser Reihenfolge: Eine Konstante hat Vorrang, dann ein Ausdruck, dann die Quellspalte.

Eine Spalte, die ihren Wert berechnet, benötigt also keine Quelle. Lassen Sie sie bei einer Konstante oder einem Ausdruck leer – die Konstante oder der Ausdruck legt den Wert bereits fest, und eine daneben angegebene Quelle wird ignoriert. Füllen Sie Quelle aus, wenn Sie eine Spalte direkt aus den eingehenden Daten durchreichen, umbenennen oder dabei umwandeln.

Ein Ausdruck liest die eingehenden Spalten über get_column(table, 'Column Name') anhand ihres Namens, nicht über die Zelle Quelle.

Der Data Mapper bietet eine praktische Point-and-Click-Bereinigungsfunktion, um Konvertierungen auf die Daten in einer Spalte anzuwenden.

Die Bereinigungsoperationen umfassen die folgenden Kategorien:

  • Textkürzung
  • Textformatierung
  • Texttransformationen
  • Konvertierung von und in NULL-Werte
  • Zahlenformatierung
  • Datumsanalyse

Das Ergebnis der Bereinigungsauswahl wird in einen konsolidierten Ausdruck umgewandelt, der in den Ausdrucksinformationen angezeigt wird.

Ausdrücke im Data Mapper gehören zu den leistungsstärksten und flexibelsten Konzepten in PlaidCloud. Sie bieten nahezu unbegrenzte Flexibilität und sind dabei auch bei extrem großen Datenmengen außergewöhnlich performant.

Ausdrücke werden in der Python-SQLAlchemy-Syntax geschrieben, ergänzt durch einige zusätzliche Hilfsfunktionen in PlaidCloud. So kann PlaidCloud den vollen Funktionsumfang des zugrunde liegenden Data Warehouse (z. B. Greenplum, SAP HANA, Redshift usw.) direkt bereitstellen. Außerdem gibt es viele öffentlich verfügbare Ressourcen, die Kurzübersichten zur Verwendung von SQLAlchemy-Operationen bieten. Durch die Verwendung der Standard-SQLAlchemy-Syntax vermeidet PlaidCloud den häufigen Fehler, eine weitere domänenspezifische Syntax zu schaffen.

Der Ausdruckseditor wird durch Doppelklicken auf die Ausdruckszelle der Spalte geöffnet. Nach dem Öffnen wird links die Liste der Spalten und rechts eine umfangreiche Bibliothek von Funktionen angezeigt.

Es ist zwar durchaus möglich, den Ausdruck direkt in den Editor einzugeben, doch ist es normalerweise einfacher, für den Einstieg die Point-and-Click-Auswahl von Funktionen und Spalten zu verwenden. Die Funktionsbibliothek umfasst die folgenden Gruppen:

  • Bedingungen
  • Spaltenspezifische Bedingungen
  • Konvertierungen
  • Datumsfunktionen
  • Mathematik
  • Text
  • Zusammenfassungen
  • Fensterfunktionsoperationen
  • Arrays
  • JSON
  • PostGIS (Geodaten)
  • Trigonometrie

Wenn Sie den Ausdruck fertiggestellt haben, speichern Sie ihn, damit er auf die Spalte angewendet wird.

Beispiele und Ausdrucksfunktionen finden Sie im Bereich Ausdrücke.

cast(x, Float) gibt auf jedem Warehouse eine 64-Bit-Zahl mit doppelter Genauigkeit zurück, sodass ein Betrag wie 1225541207.71 alle Stellen behält. Auf StarRocks wird die Umwandlung in Float nun angewendet, wo sie zuvor übersprungen wurde, und auf Databend ist sie doppelt statt einfach genau. Eine Float-Spalte, die PlaidCloud aus Float-Daten erstellt, hat ebenfalls doppelte Genauigkeit. Eine Tabelle, die bereits eine Spalte mit einfacher Genauigkeit hat, wird doppelt genau, sobald ein Schritt sie das nächste Mal mit Overwrite neu erstellt.

Auf StarRocks gilt:

  • Eine Umwandlung in eine große Ganzzahl (Big Integer) fasst Werte über etwa 2,1 Milliarden hinaus.
  • Eine Umwandlung in Numeric ohne Genauigkeitsangabe behält Dezimalstellen bis zu 10 Stellen, anstatt auf eine ganze Zahl zu runden.
  • Eine Umwandlung in JSON wird angewendet.

Auf jedem Warehouse wird ein Wert, der nicht umgewandelt werden kann, etwa nicht numerischer Text, der in eine Zahl umgewandelt wird, zu Null, anstatt den Schritt anzuhalten.

sqlalchemy.literal_column reicht ein SQL-Fragment unverändert an das Warehouse durch und akzeptiert einen einzelnen Wert – eine Spalte, eine Berechnung, ein CASE, einen Funktionsaufruf, eine Umwandlung, eine Fensterfunktion. Ein literal_column, das eine Unterabfrage enthält ((SELECT ... FROM ...)), wird abgelehnt, weil eine Unterabfrage auf eine Tabelle zugreift, die der Schritt nie deklariert hat.

Die Regeln in diesem Abschnitt gelten überall dort, wo der Ausdruck geschrieben wird – hier im Mapper, im Filter eines Schritts und in einer Abfrage, die an anderer Stelle zusammengestellt und an die Plattform gesendet wird. Sie werden beim Speichern des Schritts und erneut beim Umwandeln des Ausdrucks in SQL geprüft.

Erstellen Sie die Unterabfrage stattdessen mit sqlalchemy.select(...) – .scalar_subquery(), wenn Sie einen einzelnen Wert in einer Spalte benötigen, oder .subquery(), wenn Sie aus ihr auswählen:

# Refused
sqlalchemy.literal_column('(SELECT rate FROM fx WHERE fx.cc = t.cc)')
# Supported — a single value in a column
sqlalchemy.select(fx.c.rate).where(fx.c.cc == t.c.cc).scalar_subquery()
# Supported — a table to select from
sqlalchemy.select(fx.c.rate).subquery()

Ein literal_column, dessen äußerster Operator OR ist, wird ebenfalls abgelehnt. PlaidCloud reicht den Text unverändert durch, sodass eine danach hinzugefügte Bedingung nur an die Hälfte davon gebunden würde – a OR b, gefolgt von AND region = 'East', wird als a OR (b AND region = 'East') gelesen, und die Zeilen, die Sie ausschließen wollten, kommen zurück.

Mit Klammern funktioniert es wie bisher:

# Refused
sqlalchemy.literal_column("status = 'open' OR status = 'pending'")
# Supported
sqlalchemy.literal_column("(status = 'open' OR status = 'pending')")

Eine Disjunktion irgendwo innerhalb des Ausdrucks – in einem CASE oder bereits geklammert – bleibt unberührt.

XOR wird überall abgelehnt, mit oder ohne Klammern: Warehouses sind sich uneinig, wie stark es bindet, sodass es keine Lesart gibt, die überall sicher ist. Schreiben Sie es stattdessen aus, als (a AND NOT b) OR (NOT a AND b).

Ein literal_column mit einem Kommentar wird aus demselben Grund abgelehnt: Ein Kommentar reicht bis zum Ende der Anweisung, sodass er alles löscht, was PlaidCloud nach Ihrem Ausdruck hinzufügt, und nicht nur das, was Sie geschrieben haben.

-- wird abgelehnt, wo es den Rest der Anweisung erfassen würde. # wird an jeder Stelle im Text abgelehnt, ausnahmslos – auch innerhalb einer Zeichenkette in Anführungszeichen und auch bei den JSON-Pfadoperatoren #> und #>> von Postgres:

# Refused
sqlalchemy.literal_column("attrs #> '{a,b}'")
sqlalchemy.literal_column("code || '#'")

# leitet auf MySQL-kompatiblen Warehouses wie StarRocks einen Kommentar ein, und PlaidCloud weiß beim Schreiben des Ausdrucks nicht, welches Warehouse ihn ausführen wird – es gibt also keine Position im Text, an der es zuverlässig sicher ist, und ein #, das für die eine Engine in Anführungszeichen steht, ist für eine andere der Beginn eines Kommentars. Wenn Sie das Zeichen als Daten benötigen, übergeben Sie es als Wert:

# Supported
sqlalchemy.func.concat(table.code, sqlalchemy.literal('#'))

Dieselben beiden Schreibweisen werden auch in .op('...') abgelehnt.

Alles andere, wofür literal_column üblicherweise verwendet wird, bleibt unberührt – literal_column('current_date'), literal_column("CASE WHEN amount > 0 THEN 'p' ELSE 'n' END") und func.count() funktionieren alle wie bisher. Auch Spaltennamen mit Leerzeichen, Punkten oder Anführungszeichen sind nicht betroffen; das Warehouse setzt sie für Sie in Anführungszeichen.