Erweiterte Nutzung des Data Mapper
Überblick
Abschnitt betitelt „Überblick“Bevor Sie sich mit den erweiterten Funktionen des Data Mapper befassen, hilft eine kurze Wiederholung der Grundfunktionen.
Data-Mapper-Konfiguration
Abschnitt betitelt „Data-Mapper-Konfiguration“Der Data Mapper dient dazu, Spalten der Quelldaten der Zieltabelle zuzuordnen.
Untersuchen und Füllen des Mappers
Abschnitt betitelt „Untersuchen und Füllen des Mappers“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.
Spalten löschen
Abschnitt betitelt „Spalten löschen“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.
Spaltenreihenfolge ändern
Abschnitt betitelt „Spaltenreihenfolge ändern“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.
Ergebnis auf eindeutige Datensätze reduzieren
Abschnitt betitelt „Ergebnis auf eindeutige Datensätze reduzieren“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.
Aggregation und Gruppierung
Abschnitt betitelt „Aggregation und Gruppierung“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.
Erweiterte Nutzung
Abschnitt betitelt „Erweiterte Nutzung“Aggregationsoptionen
Abschnitt betitelt „Aggregationsoptionen“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 |
Zeilen sortieren
Abschnitt betitelt „Zeilen sortieren“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.
Konstanten
Abschnitt betitelt „Konstanten“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.
Quelle, Konstante und Ausdruck zusammen
Abschnitt betitelt „Quelle, Konstante und Ausdruck zusammen“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.
Bereinigungen
Abschnitt betitelt „Bereinigungen“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
Abschnitt betitelt „Ausdrücke“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.
Umwandlung in Float
Abschnitt betitelt „Umwandlung in Float“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
Numericohne 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.
Eine andere Tabelle aus einem Ausdruck lesen
Abschnitt betitelt „Eine andere Tabelle aus einem Ausdruck lesen“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:
# Refusedsqlalchemy.literal_column('(SELECT rate FROM fx WHERE fx.cc = t.cc)')
# Supported — a single value in a columnsqlalchemy.select(fx.c.rate).where(fx.c.cc == t.c.cc).scalar_subquery()
# Supported — a table to select fromsqlalchemy.select(fx.c.rate).subquery()Ein OR auf oberster Ebene klammern
Abschnitt betitelt „Ein OR auf oberster Ebene klammern“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:
# Refusedsqlalchemy.literal_column("status = 'open' OR status = 'pending'")
# Supportedsqlalchemy.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:
# Refusedsqlalchemy.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:
# Supportedsqlalchemy.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.