Datenflussoperatoren verwenden
In "Data Integration" stellen Datenflussoperatoren Eingabequellen, Ausgabeziele und Transformationen dar, die in einem Datenfluss verwendet werden können.
Im Bereich "Operatoren" ziehen Sie die Operatoren auf die Leinwand, um einen Datenfluss zu entwerfen. Anschließend können Sie im Bereich "Eigenschaften" auf der Registerkarte Details grundlegende und erforderliche Eigenschaften für jeden Operator konfigurieren. Verwenden Sie gegebenenfalls die Registerkarte Erweiterte Optionen, um andere Eigenschaften anzugeben.
Im Allgemeinen kann ein Datenflussoperator einen oder mehrere eingehende Ports und einen oder mehrere ausgehende Ports für den Datenfluss aufweisen. Sie können beispielsweise einen ausgehenden Port für eine Quelle mit eingehenden Ports in einem Filter, einem Join und einem Zieloperator verbinden. Sie können auch einen anderen Quelloperator mit demselben eingehenden Port für einen Join verbinden.
Um gültig zu sein, muss ein Datenfluss mindestens einen Quelloperator und einen Zieloperator enthalten. Während Data Integration mehrere Zelloperatoren in einem Datenfluss unterstützt, kann ein Zelloperator nur einen eingehenden Port enthalten.
Um Operatoren zu verbinden, zeigen Sie mit der Maus auf einen Operator, bis der Connector (kleiner Kreis) auf der rechten Seite des Operators angezeigt wird. Verschieben Sie dann den Connector auf den nächsten Operator, mit dem Sie eine Verbindung herstellen möchten. Eine Verbindung ist gültig, wenn die Operatoren mit einer Linie verbunden sind, nachdem Sie den Connector abgelegt haben.
Eine Verbindungslinie symbolisiert den Datenfluss von einem Knoten zum anderen. Sie können zwar einen sichtbaren Connector von einem Objekt zu einem anderen ziehen, Sie können jedoch nicht mehr als eine eingehende Verbindungslinie zu einem Filter-, Ausdrucks-, Aggregat-, Sortier- und Zieloperator verwenden.
Informationen zu unterstützten komplexen Datentypen finden Sie unter Hierarchische Datentypen. Möglicherweise können Sie einige Konfigurationen auf der Registerkarte "Attribute" und der Registerkarte "Daten" im Bereich "Eigenschaften" nicht ausführen.
Datenoperatoren
Data Integration bietet den Quelloperator und Zieloperator für das Hinzufügen von Eingabe- und Ausgabedatenentitys, die als Eingabe für Datenflüsse dienen, sowie die Ausgabe für transformierte Daten.
Um die Eingabe- oder Ausgabedatenentity für einen Datenoperator in einem Datenfluss zu konfigurieren, wählen Sie zunächst ein Datenasset, eine Verbindung und ein Schema (oder einen Bucket) aus.
Sie treffen die Auswahl nur in der Reihenfolge, die auf der Registerkarte Details des Bereichs Eigenschaften angezeigt wird, indem Sie auf Auswählen klicken, wenn die Option neben dem Ressourcentyp aktiviert ist.
Beispiel: Wenn Sie zum ersten Mal einen Quelloperator hinzufügen, ist nur Datenasset zur Auswahl aktiviert. Die Option "Auswählen" für den folgenden Ressourcentyp, Verbindung, wird erst aktiviert, nachdem Sie eine Auswahl für das vorherige Objekt getroffen haben.
Wenn Sie neben einer Ressource auf Auswählen klicken, wird ein Bereich für die Auswahl des gewünschten Objekts angezeigt. Sie können das Objekt im Ressourcenmenü auswählen oder Alle anzeigen auswählen, um einen anderen Bereich zum Durchsuchen oder Suchen zu verwenden, und dann das Objekt auswählen.
Bei der Auswahl eines Ressourcenobjekts basiert jede nachfolgende Auswahl auf der von der vorherigen Auswahl übernommenen hierarchischen Beziehung. Ein Navigationspfad oben im Auswahlbereich zeigt die Auswahlhierarchie an. Beispiel: Sie haben das Datenasset "Oracle Database-Datenasset 1" und die Verbindung "Standardverbindung" ausgewählt. Wenn Sie das Schema auswählen, wird der Navigationspfad als "Von Oracle Database-Daten asset1 mit Verbindung Standardverbindung" angezeigt.
Nachdem Sie ein Datenasset, eine Verbindung und ein Schema (oder einen Bucket) ausgewählt haben, wählen Sie eine Datenentity aus der Liste der verfügbaren Datenentitys aus.
Im Allgemeinen können Sie im Bereich Datenentitys durchsuchen die folgenden Aktionen ausführen:
-
Durchsuchen Sie die verfügbaren Datenentitys, und wählen Sie eine Entity nach ihrem Namen aus.
-
Filtern Sie die verfügbare Liste, und wählen Sie sie aus. Geben Sie im Suchfeld einen Entitynamen vollständig oder teilweise ein, und drücken Sie die Eingabetaste, um die Suche zu starten. Die Suche beachtet die Groß- /Kleinschreibung. Beispiel: Wenn die verfügbaren Datenentitys
BANK_US
undBANK_EU
umfassen, geben SieBANK
ein, und wählen Sie dann aus der gefilterten Liste aus. -
Verwenden Sie mindestens einen Parameter in der Suchzeichenfolge. Beispiel:
CUSTOMERS_${COUNTRY}
Informationen zum Verwenden eines parametrisierten Datenentitynamens zur Auswahl der Eingabe- oder Ausgaberessource finden Sie unter Parameter in Datenentitynamen verwenden.
Je nach Datenassettyp einer Ressource ist nach der Auswahl einer Datenentity möglicherweise eine weitere Konfiguration auf der Registerkarte Details oder der Registerkarte Erweiterte Optionen im Bereich "Eigenschaften" erforderlich.
Um zu verhindern, dass ein Ressourcenobjekt wie ein Datenasset oder eine Verbindung in einem Datenfluss dauerhaft an eine bestimmte Ressource gebunden wird, weisen Sie diesem Objekt einen Parameter zu.
Sie können den Parameter nach oder vor der Auswahl des Ressourcenobjekts zuweisen.
-
fügen Sie den Quell- oder Zieloperator im Datenfluss hinzu. Wenn Sie eine Auswahl für einen Ressourcentyp vorgenommen haben, wählen Sie neben dem Ressourcennamen Parameter zuweisen aus, um einen anderen Bereich zur Auswahl und Zuweisung von Parametern für das ausgewählte Objekt zu nutzen. Wenn kein geeigneter Parametertyp verfügbar ist, können Sie einen Parameter hinzufügen und dann zuweisen.
Hinweis
Parameter zuweisen ist nicht für Datenentitys verfügbar, die einen Parameter enthalten (wieBANK_${REGION}
). Sie können eine parametrisierte Entityressource nicht an einen anderen Parameter binden. -
Sie können auch den Quell- oder Zieloperator hinzufügen. Wählen Sie dann Parameter zuweisen aus, um einen Parameter in einem Bereich zuzuweisen, und wählen Sie gleichzeitig die Ressource für das Objekt aus. Im Bereich Parameter hinzufügen wählen Sie eine Ressource basierend auf der Parent-Child-Beziehung aus, die von der vorherigen Auswahl übernommen wurde. Der Navigationspfad oben im Bereich zeigt die Auswahlhierarchie an.
Sie können einen oder mehrere Datenflussparameter in den Namen der Datenentitätsressource aufnehmen, die Sie für einen Datenoperator angeben.
Die Syntax für einen Datenflussparameter in einem Datenentitynamen lautet ${PARAMETER_NAME}
. Beispiel: CUSTOMERS_${COUNTRY}
Bei einem Parameternamen muss die Groß-/Kleinschreibung beachtet werden, und jeder Parameter muss einen Standardwert aufweisen.
Beispiel: CUSTOMERS_${COUNTRY}
könnte die Datenbanktabelle CUSTOMERS_USA
zurückgeben und BANK_${COUNTRY}/*
die Object Storage-Dateien in BANK_EU
.
So verwenden Sie Parameter in Datenentitynamen, wenn Sie einen Datenoperator konfigurieren:
- Fügen Sie den Parameter dem Datenfluss hinzu, bevor Sie den Datenoperator hinzufügen
- Fügen Sie den Parameter bei der Konfiguration der Datenentity des Operators hinzu
So fügen Sie einen Parameter hinzu
Wählen Sie in einem Datenfluss in der Leinwandsymbolleiste im Menü Anzeigen die Option Parameter aus, um den Bereich "Parameter" zu öffnen.
Wählen Sie im Bereich Parameter die Option Konfig und dann Hinzufügen aus.
Konfigurieren Sie im Bereich Parameter hinzufügen einen Parameter mit dem entsprechenden Datentyp, z.B. VARCHAR oder NUMERIC, und fügen Sie einen Standardwert hinzu.
Während der Datenentitykonfiguration in einem Datenfluss können Sie verfügbare Datenentitys durchsuchen, indem Sie den Parameternamen im Bereich Datenentitys durchsuchen eingeben. Geben Sie im Suchfeld ${
gefolgt von einem beliebigen Zeichen ein. Wenn der vordere Teil des Parameternamens mit vorhandenen Parametern im Datenfluss übereinstimmt, wird eine Liste mit vorgeschlagenen Namen angezeigt. Wählen Sie einen Parameter aus der Liste, vervollständigen Sie die Syntax, indem Sie }
hinzufügen, und drücken Sie dann die Eingabetaste.
So fügen Sie einen Parameter bei der Konfiguration der Datenentity hinzu
Im Bereich Datenentitys durchsuchen können Sie folgende Aktionen ausführen:
-
Wählen Sie im Menü Weitere Aktionen die Option Datenflussparameter hinzufügen aus, um den Bereich Datenflussparameter hinzufügen zu verwenden. Geben Sie den Datentyp, den Standardwert und andere Eigenschaften für den Parameter an, den Sie hinzufügen und verwenden möchten.
-
Geben Sie im Suchfeld
${
gefolgt von einem beliebigen Zeichen ein. Wenn der vordere Teil des Parameternamens mit vorhandenen Parametern im Datenfluss übereinstimmt, wird eine Liste mit vorgeschlagenen Namen angezeigt. Wählen Sie einen Parameter aus der Liste, vervollständigen Sie die Syntax, indem Sie}
hinzufügen, und drücken Sie dann die Eingabetaste. -
Geben Sie im Suchfeld den Parameternamen ein. Beispiel:
${PARAMETER_NAME}
). Wenn der Name des Parameters noch nicht im Datenfluss vorhanden ist und Sie die Eingabe drücken, zeigt Data Integration den Bereich Datenflussparameter hinzufügen an. Wählen Sie alternativ nach Eingabe des Parameternamens im Menü Weitere Aktionen die Option Datenflussparameter hinzufügen aus.Geben Sie im Bereich Datenflussparameter hinzufügen den Datentyp, den Standardwert und andere Eigenschaften für den Parameter an, den Sie hinzufügen und verwenden möchten.
Quelloperator
Mit dem Quelloperator können Sie die Datenentitys angeben, die als Eingabe für den Datenfluss dienen.
Sie können einem Datenfluss mehrere Quelloperatoren hinzufügen.
Wenn Sie eine hierarchische Datenentity für einen Quelloperator verwenden, finden Sie Informationen zu unterstützten Typen finden Sie unter Hierarchische Datentypen. Möglicherweise können Sie einige Konfigurationen auf der Registerkarte "Attribute" oder der Registerkarte "Daten" im Bereich "Eigenschaften" nicht ausführen.
Bei der Konfiguration von OCI Object Storage als Datenquelle können Sie einen regulären Ausdruck verwenden, um ein Dateiformat zur Auswahl von Datenentitys anzugeben.
Ein Dateimuster ist eine Regel zum Suchen nach Dateien, die einem Verzeichnis und einem Dateinamen entsprechen und auf eine bestimmte Weise verarbeitet werden sollen.
Zu verwendende Syntax
In Data Integration wird die Glob-Mustersyntax für das Angeben eines Dateimusters unterstützt.
- Ein Sternchen (
*
) entspricht einer beliebigen Anzahl von Zeichen (einschließlich keiner Zeichen). - Zwei Sternchen,
**
, funktionieren wie*
, überschreiten jedoch Verzeichnisgrenzen, um vollständige Pfade abzugleichen. - Ein Fragezeichen (
?
) entspricht genau einem Zeichen. - Geschweifte Klammern geben eine Sammlung von Untermustern an. Beispiel:
{sun,moon,stars}
entspricht "sun", "moon" oder "stars".{temp*,tmp*}
entspricht allen Zeichenfolgen, die mit "temp" oder "tmp" beginnen.
- In eckigen Klammern wird ein Set von einzelnen Zeichen oder bei Verwendung des Bindestrichs (
-
) ein Zeichenbereich dargestellt. Beispiel:[aeiou]
entspricht einem beliebigen Vokal in Kleinbuchstaben.[0-9]
entspricht einer beliebigen Ziffer.[A-Z]
entspricht einem beliebigen Großbuchstaben.[a-z,A-Z]
entspricht einem beliebigen Groß- oder Kleinbuchstaben.
Innerhalb der eckigen Klammern entsprechen
*
,?
und\
sich selbst. - Alle anderen Zeichen entsprechen sich selbst.
- Um
*
,?
oder die anderen Sonderzeichen anzugeben, können Sie die Zeichen mit dem umgekehrten Schrägstrich (\
) maskieren. Beispiel:\\
entspricht einem einzelnen umgekehrten Schrägstrich, und\?
entspricht einem Fragezeichen.
Beispiele
*.html | Entspricht allen Zeichenfolgen, die auf .html enden |
??? | Entspricht allen Zeichenfolgen mit genau drei Buchstaben oder Ziffern |
*[0-9]* | Entspricht allen Zeichenfolgen mit einem numerischen Wert |
*.{htm,html,pdf} | Entspricht einer Zeichenfolge, die mit .htm , .html oder .pdf endet |
a?*.java | Entspricht einer Zeichenfolge, die mit a beginnt, gefolgt von mindestens einem Buchstaben oder einer Ziffer, und mit .java endet |
{foo*,*[0-9]*} | Entspricht einer Zeichenfolge, die mit foo beginnt, oder einer Zeichenfolge, die einen numerischen Wert enthält |
directory1/20200209/part-*[0-9]*json | Entspricht allen Dateien im Ordner, deren Dateiname mit part- beginnt, beliebig viele Ziffern 0-9 enthält und mit json endet |
directory3/**.csv | Entspricht allen Dateien mit der Erweiterung csv , die sich im Ordner directory3 und seinen Unterordnern befinden |
directory3/*.csv | Entspricht allen Dateien mit der Erweiterung csv , die sich nur im Hauptordner directory3 befinden. Dateien in Unterordnern sind nicht eingeschlossen. |
Sie können den Ausdruck testen, um sicherzustellen, dass das gewünschte Muster die Object Storage-Dateien für eine oder mehrere Datenentitys abruft.
-
Wählen Sie im Bereich Datenentity auswählen die Option Nach Muster durchsuchen aus.
-
Wählen Sie im Bereich Datenentitys nach Muster durchsuchen im Menü Weitere Aktionen die Option Muster testen aus.
-
Geben Sie im Bereich Muster testen im Feld Suchmuster einen Musterausdruck ein, den Sie vor der Verwendung testen möchten.
Beispiel: Geben Sie
department1/2020/*.json
ein, um alle Dateien mit der Erweiterung.json
zu suchen, die sich im Verzeichnisdepartment1/2020
befinden. Sie können die Parametersyntax${}
im Feld Suchmuster verwenden. -
Um das Suchmuster zu testen, geben Sie im Block Testdateinamen einen Dateinamen oder mehrere durch Zeilenvorschub getrennte Dateinamen an. Beispiel: Für das Muster
BANK_C*/*
können die Dateinamen wie folgt lauten:BANK_CITY/part-00002-0aaf87d57fbc-c000.csv BANK_COUNTRY/part-00000-a66df3ab02fd-c000.csv
-
Wählen Sie Testmuster aus.
Prüfen Sie, ob die Testdateien im Block Resultierender Dateiname zurückgegeben werden.
-
Wählen Sie Muster verwenden aus, um dem Bereich Datenentitys nach Muster durchsuchen den Musterausdruck hinzuzufügen.
Sie kehren zum Bereich Datenobjekte nach Muster durchsuchen zurück. Die Dateien, die mit dem Musterausdruck übereinstimmen, werden in der Tabelle angezeigt.
-
Klicken Sie auf Muster auswählen.
Sie werden zum Bereich Datenentity auswählen zurückgegeben. Der Musterausdruck wird neben Data Entity angezeigt.
Wenn Sie einen Musterausdruck verwenden, wird davon ausgegangen, dass alle vorhandenen Dateien, die dem Muster entsprechen, dieselbe Struktur aufweisen. Die übereinstimmenden Dateien werden im Datenfluss als eine Entity behandelt. Alle zukünftigen neuen Dateien, die dem Muster entsprechen, werden ebenfalls verarbeitet.
Beim inkrementellen Laden werden nur neue oder aktualisierte Daten aus einer Quelle in ein Ziel geladen. Wenn Sie in Data Integration BICC Oracle Fusion Applications als Quelldaten konfigurieren, können Sie die inkrementelle Extraktstrategie Verwaltet verwenden, um inkrementelle Daten zu laden.
Wenn Sie die inkrementelle Exportstrategie verwenden, werden nur neue oder aktualisierte Datensätze aus der Quelle basierend auf einem letzten Exportdatum extrahiert. Data Integration bietet zwei Optionen für das Datum der letzten Extraktion:
-
Benutzerdefiniert: Sie geben ein letztes Exportdatum für jede Aufgabenausführung an.
-
Verwaltet: Data Integration verwaltet das Datum für Sie, indem der Zeitstempel der Aufgabenausführung verfolgt und das letzte erfolgreiche Ladedatum in aufeinanderfolgenden Ausführungen als Wasserzeichen gespeichert wird.
Mit der Option für das Datum der letzten Extraktion von Data Integration müssen Sie kein Datum für eine Aufgabenausführung explizit angeben. Sie können das Datum jedoch zur Laufzeit überschreiben.
Aufgabenausführungen, die von einem Aufgabenplan initiiert wurden
Data Integration verfolgt eine Aufgabenausführung unabhängig von einer Aufgabenausführung, die durch einen Aufgabenplan initiiert wird. Wenn Sie also die Option Verwaltet für das Datum der letzten Extraktion verwenden und auch einen Aufgabenplan einrichten, verfolgt Data Integration automatisch den Zeitstempel der letzten erfolgreichen Aufgabenausführung von aufgabengeplanten Ausführungen getrennt vom Zeitstempel der letzten erfolgreichen Aufgabenausführung von Aufgabenausführungen, die nicht von einem Aufgabenplan initiiert werden. Dies bedeutet, dass das letzte Datum, das innerhalb eines Aufgabenplans verwaltet wird, oder das letzte Datum, das innerhalb einer Aufgabe verwaltet wird, nicht durch den anderen Ausführungsvorgang geändert wird.
Inkrementelles Laden für verschiedene Datenentitys in einem Datenfluss
Angenommen, Sie möchten das inkrementelle Laden für verschiedene Datenentitys in einem Datenfluss einrichten. Sie können dies erreichen, indem Sie Parameter verwenden und einen Aufgabenplan für jede Datenentity erstellen. Allgemeine Schritte:
- Weisen Sie im Datenfluss Parameter für das Quellschema (BICC-Angebot) und die Datenentity (BICC-VO) zu.
- Erstellen und veröffentlichen Sie eine Integrationsaufgabe für den parametrisierten Datenfluss.
- Erstellen Sie einen Aufgabenplan für die Integrationsaufgabe. Geben Sie auf der Seite Parameter konfigurieren die Schema- und Datenentitywerte für den Aufgabenplan an.
- Erstellen Sie einen weiteren Aufgabenplan für dieselbe Integrationsaufgabe. Legen Sie auf der Seite Parameter konfigurieren die Schema- und Datenentitywerte für diesen Aufgabenplan fest.
Inkrementelles Laden mehrmals an einem Tag
Um einen inkrementellen Ladevorgang mehr als einmal pro Tag auszuführen, fügen Sie einen Filteroperator direkt nach dem BICC-Quelloperator im Datenfluss hinzu. Erstellen Sie dann einen Bedingungsausdruck, um bereits verarbeitete Daten herauszufiltern. Beispiel: Wenn die Spalte last_update_date des BICC-VO LastUpdateDateField
lautet, kann der Ausdruck wie folgt lauten:
FILTER_1.MYSOURCE_1.LastUpdateDateField > ${SYS.LAST_LOAD_DATE}
Zieloperator
Mit dem Zieloperator können Sie die Datenentitys angeben, die als Ausgabe für das Speichern transformierter Daten dienen.
Sie können einem Datenfluss mehrere Zieloperatoren hinzufügen. Jedes Ziel darf nur einen eingehenden Port aufweisen.
Wenn Sie eine hierarchische Datenentity für einen Zieloperator verwenden, finden Sie Informationen zu unterstützten Typen finden Sie unter Hierarchische Datentypen. Möglicherweise können Sie einige Konfigurationen auf den Registerkarten "Attribute", "Zuordnen" und "Daten" im Bereich "Eigenschaften" nicht ausführen.
Auf der Registerkarte Daten werden die transformierten Daten basierend auf den im Datenfluss angewendeten Operatoren angezeigt.
Wenn Sie eine hierarchische Datenentity für einen Zieloperator verwenden, finden Sie Informationen zu unterstützten Typen finden Sie unter Hierarchische Datentypen.
Sie können Daten in der Zielentity nach einem Namensmuster oder Datentyp filtern. Um Daten nach einem Namensmuster zu filtern, geben Sie ein einfaches reguläres Ausdrucksmuster oder die Platzhalter "?" und "*" im Feld "Nach Muster filtern" ein. Um Daten nach einem Typ zu filtern, wählen Sie den Datentyp im Menü neben dem Musterfeld aus.
Transformationen können nicht auf den Zieloperator angewendet werden, da die Daten schreibgeschützt sind.
Die Registerkarte Map ist nur für einen Zieoperator verfügbar.
Wenn Sie eine hierarchische Datenentity für einen Zieloperator verwenden, finden Sie Informationen zu unterstützten Typen finden Sie unter Hierarchische Datentypen.
Wenn Sie eine neue Zieldatenentity erstellen, ist die Registerkarte "Zuordnen" nicht verfügbar. Die eingehenden Attribute werden verwendet, um die Tabellen- oder Dateistruktur mit einer Eins-zu-Eins-Zuordnung zu erstellen.
Wenn Sie eine vorhandene Zieldatenentity verwenden, ordnen Sie die eingehenden Attribute den Attributen der Zieldatenentity zu. Sie können die folgenden Aktionen ausführen:
Ordnet eingehende Attribute den Zielentityattributen entsprechend ihrer Position in den Listen zu.
Wählen Sie im Menü Aktionen die Option Automatisch nach Position zuordnen aus. Die Regel für die automatische Zuordnung nach Position wird hinzugefügt.
Ordnet eingehende Attribute den Zielattributen mit demselben Namen zu.
Wählen Sie im Menü Aktionen die Option Automatisch nach Name zuordnen aus. Die Regel für die automatische Zuordnung nach Namen wird hinzugefügt.
Ordnet eingehende Attribute anhand einfacher, benutzerdefinierter Regex-Regeln Zielattributen zu.
Wählen Sie im Menü Aktionen die OptionNach Muster zuordnen aus. Geben Sie ein Quellmuster und ein Zielmuster ein. Wählen Sie dann das Mapping Vorschau aus, um die Quell- und Zielmuster zu testen.
Um ein Muster zu definieren, können Sie Sternchen (*) und Fragezeichen (?) verwenden. Verwenden Sie ein Sternchen, um einen Platzhalter mit einer beliebigen Anzahl von Zeichen in einem Zeichenfolgenmuster anzugeben. Verwenden Sie ein Fragezeichen, um einen Platzhalter für ein einzelnes Zeichen anzugeben. Beispiel: *INPUT?
ordnet ein übereinstimmendes Attribut zu, das mit n Zeichen beginnt und die Zeichenfolge INPUT
gefolgt von einem einzelnen Zeichen enthält, wie NEWINPUTS
.
Beim Musterabgleich wird standardmäßig die Groß-/Kleinschreibung nicht beachtet. Beispiel: Das Quellmuster *Name
entspricht dem Zielnamen CUSTOMER_NAME
und Customer_Name
.
Um verschiedene Capture-Gruppen anzugeben, verwenden Sie $n
. Beispiel: Sie möchten LAST_NAME
, FIRST_NAME
und USERNAME
von einem Quell- oder Upstreamoperator TGT_LAST_NAME
, TGT_FIRST_NAME
und TGT_USERNAME
in der Zieldatenentity zuordnen. Geben Sie *NAME
in das Feld Quellmuster und TGT_$1
in das Feld Zielmuster ein. Das Sternchen (*) in *NAME
bedeutet, dass die Zeichenfolge vor NAME
mit der Zeichenfolge in $1
des Zielmusters identisch sein muss. $1
bezieht sich auf die erste Erfassungsgruppe im Quellmuster, in diesem Fall das Sternchen (*).
Wenn Sie einen Musterabgleich zwischen Groß- und Kleinschreibung benötigen, fügen Sie das Präfix (?c)
zum Quellmuster hinzu. Beispiel: Sie möchten das Quellattribut CustomerName
, das im Namen Camel-Großbuchstaben verwendet, dem Zielattribut mit dem Namen Customer_Name
zuordnen. Sie geben (?c)([A-Z][a-z]+)([A-Z][a-z]+)
als Quellmuster und $1_$2
als Zielmuster ein. Wenn das Präfix (?c)
am Anfang eines Quellmusters hinzugefügt wird, wird der Mustervergleich zwischen Groß- und Kleinschreibung für die Zuordnung aktiviert. Data Integration erkennt, dass das "N" in CustomerName
der Start eines neuen Musters ist, und behandelt ([A-Z][a-z]+)([A-Z][a-z]+)
daher beim Abgleich als zwei verschiedene Wörter (Capture-Gruppen).
Ziehen Sie ein eingehendes Attribut aus der Quellliste in ein Attribut in der Zielliste, um ein Mapping zu erstellen.
Alternativ können Sie im Menü Aktionen auf die Option Manuelle Map klicken. Erstellen Sie anschließend im Dialogfeld "Attribut zuordnen" eine Zuordnung, indem Sie ein Quellattribut und ein Zielattribut auswählen.
Entfernt die ausgewählte Zuordnung.
Wählen Sie Regeln anzeigen aus. Wählen Sie im Bereich "Regeln" mindestens eine Regel aus, und wählen Sie Entfernen. Alternativ können Sie im Menü "Aktionen" der Regel die Option Entfernen auswählen (), um diese Regel löschen zu lassen.
Entfernt alle Zuordnungen.
Wählen Sie im Menü Aktionen die Option Zuordnungen zurücksetzen aus. Alle Regeln für die manuelle und automatische Zuordnung werden entfernt.
Modellierungsoperatoren
Informationen zu unterstützten komplexen Datentypen finden Sie unter Hierarchische Datentypen. Möglicherweise können Sie einige Konfigurationen auf der Registerkarte "Attribute" und der Registerkarte "Daten" im Bereich "Eigenschaften" nicht ausführen.
Filteroperator
Mit dem Filteroperator können Sie eine Teilmenge von Daten aus dem eingehenden Port auswählen und basierend auf einer Filterbedingung zum ausgehenden Port weiterleiten.
Mit dem Bedingungsbuilder können Sie Elemente visuell auswählen, um eine Filterbedingung zu erstellen. Sie können eine Filterbedingung auch manuell im Editor eingeben.
Wenn Sie eine Filterbedingung erstellen, können Sie eine Teilmenge von Daten aus einem Upstreamoperator basierend auf der Bedingung auswählen.
Die Elemente, die Sie in einer Filterbedingung verwenden können, umfassen eingehende Attribute, Parameter und Funktionen. Sie können ein Element in der Liste doppelklicken oder ziehen, um es dem Editor hinzuzufügen und eine Bedingung zu erstellen. Sie können die Bedingung vor dem Erstellen validieren.
Eingehend zeigt die Attribute des vorgelagerten Operators an, die bei diesem Filteroperator eingehen.
Beispiel: Um Daten nach einem Ortsnamen zu filtern, können Sie den Bedingungsausdruck wie folgt erstellen:
FILTER_1.ADDRESSES.CITY='Redwood Shores'
Parameter sind die Ausdrucksparameter, die dem Datenfluss mit dem Condition Builder (Filter-, Join-, Lookup- und Aufteilungsoperatoren) oder Expression Builder (Ausdrucks- und Aggregatoperatoren) hinzugefügt wurden. Ein Ausdrucksparameter hat einen Namen, einen Typ und einen Standardwert. Siehe Ausdrucksparameter hinzufügen.
Angenommen, Sie möchten einen Parameter für den Ortsnamen in der Filterbedingung verwenden. Sie können einen VARCHAR
-Parameter mit dem Namen P_VARCHAR_CITY
erstellen und den Standardwert auf Redwood Shores
setzen. Anschließend können Sie den Filterausdruck wie folgt erstellen:
FILTER_1.ADDRESSES.CITY=$P_VARCHAR_CITY
Funktionen sind die in Data Integration verfügbaren Funktionen, die Sie in einer Bedingung verwenden können. Funktionen sind Vorgänge, die für an die Funktion übergebene Argumente ausgeführt werden. Funktionen berechnen, bearbeiten oder extrahieren Datenwerte aus Argumenten.
Beispiel: Um Daten nach einem Ortsnamen oder nach Population zu filtern, können Sie die Funktion OR
verwenden, um den Filterbedingungsausdruck wie folgt zu erstellen:
FILTER_1.COUNTRIES.CITY=$P_VARCHAR_CITY OR FILTER_1.COUNTRIES.POPULATION>100000000
FILTER_1.COUNTRIES.CITY=$P_VARCHAR_CITY OR FILTER_1.COUNTRIES.POPULATION>$P_NUMERIC
Im Folgenden finden Sie eine Liste der Funktionen, die Sie beim Erstellen von Bedingungen hinzufügen können:
Funktion | Beschreibung | Beispiel |
---|---|---|
MD5(all data types) | Berechnet eine MD5 -Prüfsumme des Datentyps und gibt einen Zeichenfolgenwert zurück. | MD5(column_name) |
SHA1(all data types) | Berechnet einen SHA-1 -Hashwert des Datentyps und gibt einen Zeichenfolgenwert zurück. | SHA1(column_name) |
SHA2(all data types, bitLength) | Berechnet einen SHA-2 -Hashwert des Datentyps und gibt einen Zeichenfolgenwert zurück. bitLength ist eine Ganzzahl. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Berechnet einen Hashwert für
Oracle wendet die Hash-Funktion auf die Kombination aus |
|
Funktion | Beschreibung | Beispiel |
---|---|---|
ABS(numeric) | Gibt die absolute Potenz des Wertes numeric zurück. | ABS(-1) |
CEIL(numeric) | Gibt die kleinste Ganzzahl zurück, die nicht größer als der Wert numeric ist. | CEIL(-1,2) |
FLOOR(numeric) | Gibt die größte Ganzzahl zurück, die nicht größer als der Wert numeric ist. | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Gibt den Rest zurück, nachdem numeric1 durch numeric2 geteilt wurde. | MOD(8,2) |
POWER(numeric1, numeric2) | Entspricht numeric1 hoch numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Gibt numeric1 gerundet auf numeric2 Dezimalstellen zurück. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Gibt numeric1 gekürzt auf numeric2 Dezimalstellen zurück. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Konvertiert expr basierend auf den Angaben für format und locale (optional) in eine Zahl. Das Standardgebietsschema ist en-US . Unterstützte Sprachtags.Unterstützte Formatmuster:
|
|
Funktion | Beschreibung | Beispiel |
---|---|---|
CURRENT_DATE |
Gibt das aktuelle Datum zurück. | CURRENT_DATE gibt das aktuelle Datum zurück, z.B. 2023-05-26 |
CURRENT_TIMESTAMP |
Gibt das aktuelle Datum und die Zeit für die Session-Zeitzone zurück. | CURRENT_TIMESTAMP gibt das aktuelle Datum und die aktuelle Uhrzeit zurück, wie 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Gibt das Datum zurück, das number von Tagen nach dem angegebenen Datum date liegt. |
DATE_ADD('2017-07-30', 1) gibt 2017-07-31 zurück |
DATE_FORMAT(expr, format[, locale]) |
Formatiert Unterstützte Datumsformatmuster:
|
|
DAYOFMONTH(date) |
Gibt den Tag des Monats für das Datum zurück. | DAYOFMONTH('2020-12-25') gibt 25 zurück |
DAYOFWEEK(date) |
Gibt den Tag der Woche für das Datum zurück. | DAYOFWEEK('2020-12-25') gibt 6 für Freitag zurück. In den USA gilt der Sonntag als 1, der Montag als 2 usw. |
DAYOFYEAR(date) |
Gibt den Tag des Jahres für das Datum zurück. | DAYOFYEAR('2020-12-25') gibt 360 zurück |
WEEKOFYEAR(date) |
Gibt die Woche des Jahres für das Datum zurück. |
|
HOUR(datetime) |
Gibt den Stundenwert für das Datum/die Uhrzeit zurück. | HOUR('2020-12-25 15:10:30') gibt 15 zurück |
LAST_DAY(date) |
Gibt den letzten Tag des Monats für das Datum zurück. | LAST_DAY('2020-12-25') gibt 31 zurück |
MINUTE(datetime) |
Gibt den Minutenwert für das Datum/die Uhrzeit zurück. | HOUR('2020-12-25 15:10:30') gibt 10 zurück |
MONTH(date) |
Gibt den Monatswert für das Datum zurück. | MONTH('2020-06-25') gibt 6 zurück |
QUARTER(date) |
Gibt das Quartal des Jahres zurück, in dem das Datum liegt. | QUARTER('2020-12-25') gibt 4 zurück |
SECOND(datetime) |
Gibt den Sekundenwert für das Datum/die Uhrzeit zurück. | SECOND('2020-12-25 15:10:30') gibt 30 zurück |
TO_DATE(string, format_string[, localeStr]) |
Parst den Zeichenfolgenausdruck mit dem Ausdruck format_string in ein Datum. Das Gebietsschema ist optional. Der Standardwert ist en-US . Unterstützte Sprachtags.In Pipelineausdrücken muss
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Konvertiert expr vom Typ "VARCHAR" basierend auf den Angaben für format_string und localeStr (optional) in einen TIMESTAMP-Wert.In Pipelineausdrücken muss
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') gibt ein TIMESTAMP-Objekt zurück, das 11am 10:10 Oct 11th, 2020 darstellt |
WEEK(date) |
Gibt den Wochenwert für das Datum zurück. |
WEEK('2020-06-25') gibt 4 zurück |
YEAR(date) |
Gibt den Jahreswert für das Datum zurück. | YEAR('2020-06-25') gibt 2020 zurück |
ADD_MONTHS(date_expr, number_months) |
Gibt das Datum nach dem Hinzufügen der angegebenen Anzahl von Monaten zum angegebenen Datum, zum Zeitstempel oder zur Zeichenfolge mit einem Format wie yyyy-MM-dd oder yyyy-MM-dd HH:mm:ss.SSS zurück. |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Gibt die Anzahl der Monate zwischen Eine Ganzzahl wird zurückgegeben, wenn beide Datumsangaben denselben Tag im Monat oder den letzten Tag im jeweiligen Monat angeben. Andernfalls wird die Differenz auf Basis von 31 Tagen pro Monat berechnet. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpretiert ein Datum, einen Zeitstempel oder eine Zeichenfolge als UTC-Zeit und konvertiert diese Zeit in einen Zeitstempel in der angegebenen Zeitzone. Verwenden Sie für eine Zeichenfolge ein Format wie Das Zeitzonenformat ist entweder eine regionsbasierte Zonen-ID (z.B. "Region/Ort", wie "Asia/Seoul") oder ein Zeitzonenversatz (z.B. UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') gibt 2017-07-14 03:40:00.0 zurück |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Konvertiert ein Datum, einen Zeitstempel oder eine Zeichenfolge in der angegebenen Zeitzone in einen UTC-Zeitstempel. Verwenden Sie für eine Zeichenfolge ein Format wie Das Zeitzonenformat ist entweder eine regionsbasierte Zonen-ID (z.B. "Region/Ort", wie "Asia/Seoul") oder ein Zeitzonenversatz (z.B. UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') gibt 2017-07-14 01:40:00.0 zurück
|
FROM_UNIXTIME(unix_time[, fmt]) |
Konvertiert die angegebene Unix-Zeit oder -Epoche in eine Zeichenfolge, die den Zeitstempel dieses Zeitpunkts in der aktuellen Systemzeitzone und im angegebenen Format darstellt. Hinweis: Die Unix-Zeit ist die Anzahl der Sekunden, die seit dem 1. Januar 1970 00:00:00 UTC verstrichen sind. Wenn |
Die Standardzeitzone in den Beispielen ist PST. |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Konvertiert die aktuelle oder angegebene Zeit in einen Unix-Zeitstempel in Sekunden.
Wenn Wenn |
Die Standardzeitzone in diesem Beispiel ist PST. |
INTERVAL 'year' YEAR[(year_precision)] |
Gibt einen Zeitraum in Jahren zurück. year_precision ist die Anzahl der Stellen im Feld year. Der Wert muss zwischen 0 und 9 liegen. Wenn year_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Gibt einen Zeitraum in Jahren und Monaten zurück. Verwenden Sie diese Option, um einen Zeitraum mit den Feldern year und month zu speichern. year_precision ist die Anzahl der Stellen im Feld year. Der Wert muss zwischen 0 und 9 liegen. Wenn year_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
INTERVAL '100-5' YEAR(3) TO MONTH gibt ein Intervall von 100 Jahren und 5 Monaten zurück. Sie müssen 3 als führende Gesamtstellenanzahl für das Jahr angeben. |
INTERVAL 'month' MONTH[(month_precision)] |
Gibt einen Zeitraum in Monaten zurück. month_precision ist die Anzahl der Stellen im Feld Monat. Der Wert muss 0 bis 9 sein. Wenn month_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
INTERVAL '200' MONTH(3) gibt ein Intervall von 200 Monaten zurück. Sie müssen 3 als Gesamtstellenanzahl für den Monat angeben. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Tagen, Stunden, Minuten und Sekunden zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) gibt ein Intervall von 11 Tagen, 10 Stunden, 09 Minuten, 08 Sekunden und 555 Tausendstelsekunden zurück |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Tagen, Stunden und Minuten zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '11 10:09' DAY TO MINUTE gibt ein Intervall von 11 Tagen, 10 Stunden und 09 Minuten zurück |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Gibt einen Zeitraum in Tagen und Stunden zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. |
INTERVAL '100 10' DAY(3) TO HOUR gibt ein Intervall von 100 Tagen und 10 Stunden zurück |
INTERVAL 'day' DAY[(day_precision)] |
Gibt einen Zeitraum in Tagen zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. |
INTERVAL '999' DAY(3) gibt ein Intervall von 999 Tagen zurück |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Stunden, Minuten und Sekunden zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) gibt ein Intervall von 9 Stunden, 08 Minuten und 7,6666666 Sekunden zurück |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Stunden und Minuten zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '09:30' HOUR TO MINUTE gibt ein Intervall von 9 Stunden und 30 Minuten zurück |
INTERVAL 'hour' HOUR[(hour_precision)] |
Gibt einen Zeitraum in Stunden zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. |
INTERVAL '40' HOUR gibt ein Intervall von 40 Stunden zurück |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Minuten zurück. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '15' MINUTE gibt ein Intervall von 15 Minuten zurück |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Minuten und Sekunden zurück. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '15:30' MINUTE TO SECOND gibt ein Intervall von 15 Minuten und 30 Sekunden zurück |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Sekunden zurück. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des Feldes zweite. Er muss zwischen 0 und 9 liegen. Der Standard ist 3. |
INTERVAL '15.678' SECOND gibt ein Intervall von 15,678 Sekunden zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Gibt den Wert zurück, der in der Zeile ausgewertet wird, die der ersten Zeile des Fensterrahmens entspricht. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) gibt den ersten Wert von BANK_ID in einem Fenster zurück, über das die Zeilen als die aktuelle Zeile und 1 Zeile nach dieser Zeile berechnet werden, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Gibt den Wert zurück, der in der Zeile mit einem bestimmten Offset vor der aktuellen Zeile innerhalb der Partition ausgewertet wird. Wenn keine solche Zeile vorhanden ist, wird der Standardwert zurückgegeben. Sowohl Offset- als auch Standardwert werden in Bezug auf die aktuelle Zeile ausgewertet. Wenn keine Angabe gemacht wird, wird Offset standardmäßig auf 1 und standardmäßig auf NULL gesetzt. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) gibt den Wert von BANK_ID aus der zweiten Zeile vor der aktuellen Zeile zurück, unterteilt nach BANK_ID und in absteigender Reihenfolge von BANK_NAME . Wenn kein solcher Wert vorhanden ist, wird hello zurückgegeben. |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Gibt den Wert zurück, der in der Zeile ausgewertet wird, die die letzte Zeile des Fensterrahmens ist. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) gibt den letzten Wert von BANK_ID in einem Fenster zurück, über das die Zeilen als die aktuelle Zeile und 1 Zeile nach dieser Zeile berechnet werden, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Gibt den Wert zurück, der in der Zeile mit einem bestimmten Offset nach der aktuellen Zeile innerhalb der Partition ausgewertet wird. Wenn keine solche Zeile vorhanden ist, wird der Standardwert zurückgegeben. Sowohl Offset- als auch Standardwert werden in Bezug auf die aktuelle Zeile ausgewertet. Wenn keine Angabe gemacht wird, wird Offset standardmäßig auf 1 und standardmäßig auf NULL gesetzt. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt den Wert von BANK_ID aus der zweiten Zeile nach der aktuellen Zeile zurück, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . Wenn kein solcher Wert vorhanden ist, wird hello zurückgegeben. |
RANK() OVER([ partition_clause ] order_by_clause) |
Gibt den Rang der aktuellen Zeile mit Lücken beginnend mit 1 zurück. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt den Rang der einzelnen Zeilen in der Partitionsgruppe von BANK_ID in aufsteigender Reihenfolge von BANK_NAME zurück. |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Gibt die eindeutige Nummer der aktuellen Zeile innerhalb der zugehörigen Partition beginnend mit 1 zurück. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt die eindeutige Zeilennummer der einzelnen Zeilen innerhalb der Partitionsgruppe von BANK_ID in aufsteigender Reihenfolge von BANK_NAME zurück. |
Funktionen | Beschreibung | Beispiel |
---|---|---|
CAST(value AS type) | Gibt den angegebenen Wert im angegebenen Typ zurück. | CAST("10" AS INT) gibt 10 zurück |
CONCAT(string, string) | Gibt die kombinierten Werte von Zeichenfolgen oder Spalten zurück. | CONCAT('Oracle','SQL') gibt OracleSQL zurück |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Gibt die kombinierten Werte von Zeichenfolgen oder Spalten mit dem angegebenen Trennzeichen zwischen den Zeichenfolgen oder Spalten zurück. Ein Trennzeichen ist erforderlich und muss eine Zeichenfolge sein. Nach dem Trennzeichen muss mindestens ein Ausdruck angegeben werden. Beispiel: |
CONCAT_WS('-', 'Hello', 'Oracle') gibt Hello-Oracle zurück
Wenn ein untergeordnetes Element der Funktion ein Array ist, wird das Array vereinfacht:
|
INITCAP(string) | Gibt die Zeichenfolge so zurück, dass jedes Wort mit einem Großbuchstaben beginnt, die anderen Buchstaben Kleinbuchstaben sind und die einzelnen Wörter durch ein Leerzeichen getrennt werden. | INITCAP('oRACLE sql') gibt Oracle Sql zurück |
INSTR(string, substring[start_position]) | Gibt den (1-basierten) Index des ersten Vorkommens von substring in string zurück. | INSTR('OracleSQL', 'SQL') gibt 7 zurück |
LOWER(string) | Gibt die Zeichenfolge zurück, wobei alle Buchstaben in Kleinbuchstaben umgewandelt werden. | LOWER('ORACLE') gibt oracle zurück |
LENGTH(string) | Gibt die Länge der Zeichenfolge in Zeichen oder die Anzahl der Byte von Binärdaten zurück. Nachgestellte Leerzeichen werden mitgezählt. | LENGTH('Oracle') gibt 6 zurück |
LTRIM(string) | Gibt die Zeichenfolge zurück, wobei vorangestellte Leerzeichen von links entfernt werden. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Gibt das Argument zurück, das nicht Null ist. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Sucht und extrahiert die Zeichenfolge, die einem regulären Ausdrucksmuster aus der Eingabezeichenfolge entspricht. Wenn der optionale Erfassungsgruppenindex angegeben ist, extrahiert die Funktion die spezifische Gruppe. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) gibt 22 zurück |
REPLACE(string, search, replacement) | Ersetzt alle Vorkommen von search durch replacement .Wird Wenn | REPLACE('ABCabc', 'abc', 'DEF') gibt ABCDEF zurück |
RTRIM(string) | Gibt die Zeichenfolge zurück, wobei vorangestellte Leerzeichen von rechts entfernt werden. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Gibt die erste Teilzeichenfolge ab der Position zurück. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) gibt rac zurück |
Für Zahlen, TO_CHAR(expr) und für Datumsangaben TO_CHAR(expr, format[, locale]) | Konvertiert Zahlen und Datumsangaben in Zeichenfolgen. Für Zahlen ist kein Format erforderlich. Verwenden Sie für Datumsangaben dasselbe Format wie DATE_FORMAT , das unter Datums- und Zeitfunktionen beschrieben wird. Das Standardgebietsschema ist en-US . Siehe unterstützte Sprachtags.In Pipelineausdrücken muss
| Zahlenbeispiel: Datumsbeispiel: |
UPPER(string) | Gibt eine Zeichenfolge zurück, wobei alle Buchstaben in Großbuchstaben geändert werden. | UPPER('oracle') gibt ORACLE zurück |
LPAD(str, len[, pad]) | Gibt eine Zeichenfolge zurück, die links mit angegebenen Zeichen auf eine bestimmte Länge aufgefüllt wird. Wenn Sie das pad-Zeichen auslassen, wird standardmäßig ein Speicherplatz verwendet. | LPAD('ABC', 5, '*') gibt '**ABC' zurück |
RPAD(str, len[, pad]) | Gibt eine Zeichenfolge zurück, die rechts mit angegebenen Zeichen auf eine bestimmte Länge aufgefüllt wird. Wenn Sie das pad-Zeichen auslassen, wird standardmäßig ein Speicherplatz verwendet. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Funktion | Beschreibung | Beispiel |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Gibt den Wert zurück, für den eine Bedingung erfüllt wird. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END gibt ABC zurück, wenn 1> 0 . Andernfalls wird XYZ zurückgegeben |
AND | Der logische AND-Operator. Gibt "true" zurück, wenn beide Operanden wahr sind. Andernfalls wird "false" zurückgegeben. | (x = 10 AND y = 20) gibt "true" zurück, wenn x gleich 10 und y gleich 20 ist. Wenn einer der Operanden nicht wahr ist, wird "false" zurückgegeben |
OR | Der logische OR-Operator. Gibt "true" zurück, wenn einer der Operanden wahr ist oder beide wahr sind. Andernfalls wird "false" zurückgegeben. | (x = 10 OR y = 20) gibt "false" zurück, wenn x nicht gleich 10 und y nicht gleich 20 ist. Wenn einer der Operanden wahr ist, wird "true" zurückgegeben |
NOT | Der logische NOT-Operator. | |
LIKE | Ermittelt durch Mustervergleich, ob die Zeichenfolge string1 mit dem Muster in string2 übereinstimmt. | |
= | Führt einen Gleichheitstest aus. Gibt "true" zurück, wenn expr1 gleich expr2 ist. Andernfalls wird "false" zurückgegeben. | x = 10 gibt "true" zurück, wenn der Wert von x gleich 10 ist. Andernfalls wird "false" zurückgegeben |
!= | Führt einen Ungleichheitstest aus. Gibt "true" zurück, wenn expr1 nicht gleich expr2 ist. Andernfalls wird "false" zurückgegeben. | x != 10 gibt "false" zurück, wenn der Wert von x gleich 10 ist. Andernfalls wird "true" zurückgegeben |
> | Testet, ob ein Ausdruck "größer als" ist. Gibt "true" zurück, wenn expr1 größer als expr2 ist. | x > 10 gibt "true" zurück, wenn der Wert von x größer als 10 ist. Andernfalls wird "false" zurückgegeben |
>= | Testet, ob ein Ausdruck "größer/gleich" ist. Gibt "true" zurück, wenn expr1 größer als oder gleich expr2 ist. | x >= 10 gibt "true" zurück, wenn der Wert von x größer als oder gleich 10 ist. Andernfalls wird "false" zurückgegeben |
< | Testet, ob ein Ausdruck "kleiner als" ist. Gibt "true" zurück, wenn expr1 kleiner als expr2 ist. | x < 10 gibt "true" zurück, wenn der Wert von x kleiner als 10 ist. Andernfalls wird "false" zurückgegeben |
<= | Testet, ob ein Ausdruck "kleiner/gleich" ist. Gibt "true" zurück, wenn expr1 kleiner oder gleich expr2 ist. | x <= 10 gibt "true" zurück, wenn der Wert von x kleiner als 10 ist. Andernfalls wird "false" zurückgegeben |
|| | Verkettet zwei Zeichenfolgen. | 'XYZ' || 'hello' gibt 'XYZhello' zurück |
BETWEEN | Bewertet einen Bereich. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Testet, ob ein Ausdruck mit einer Werteliste übereinstimmt. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Funktion | Beschreibung | Beispiel |
---|---|---|
NUMERIC_ID() | Generiert eine universell eindeutige ID, die eine 64-Bit-Zahl für jede Zeile darstellt. | NUMERIC_ID() gibt beispielsweise 3458761969522180096 und 3458762008176885761 zurück |
ROWID() | Generiert monoton aufsteigende 64-Bit-Zahlen. | ROWID() gibt beispielsweise 0 , 1 , 2 usw. zurück |
UUID() | Generiert eine universell eindeutige ID, die in einer 128-Bit-Zeichenfolge für jede Zeile besteht. | UUID() gibt zum Beispiel 20d45c2f-0d56-4356-8910-162f4f40fb6d zurück |
MONOTONICALLY_INCREASING_ID() |
Generiert eindeutige, monoton aufsteigende 64-Bit-Ganzzahlen, die keine aufeinanderfolgenden Zahlen sind. | MONOTONICALLY_INCREASING_ID() gibt beispielsweise 8589934592 und 25769803776 zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
COALESCE(value, value [, value]*) | Gibt das erste Nicht-Null-Argument zurück, falls vorhanden. Andernfalls wird Null zurückgegeben. | COALESCE(NULL, 1, NULL) gibt 1 zurück |
NULLIF(value, value) | Gibt Null zurück, wenn die beiden Werte gleich sind. Andernfalls wird der erste Wert zurückgegeben. | NULLIF('ABC','XYZ') gibt ABC zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
SCHEMA_OF_JSON(string) | Parst eine JSON-Zeichenfolge und leitet das Schema im DDL-Format ab. |
|
FROM_JSON(column, string) | Parst eine Spalte mit einer JSON-Zeichenfolge in einen der folgenden Typen mit dem angegebenen Schema.
|
|
TO_JSON(column) | Konvertiert eine Spalte vom Typ "Struct" oder "Struct-Array" oder vom Typ "Map" oder "Map-Array" in eine JSON-Zeichenfolge. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) gibt eine JSON-Zeichenfolge {"s1":[1,2,3],"s2":{"key":"value"}} zurück |
TO_MAP(string,column[,string,column]*) | Erstellt eine neue Spalte vom Typ "Map". Die Eingabespalten müssen als Schlüssel/Wert-Paare gruppiert werden. Die Eingabeschlüsselspalten dürfen nicht Null sein und müssen alle denselben Datentyp aufweisen. Die Eingabewertspalten müssen alle denselben Datentyp aufweisen. |
|
TO_STRUCT(string,column[,string,column]*) | Erstellt eine neue Spalte vom Typ "Struct". Die Eingabespalten müssen als Schlüssel/Wert-Paare gruppiert werden. |
|
TO_ARRAY(column[,column]*) | Erstellt eine neue Spalte vom Typ "Array". Die Eingabespalten müssen alle denselben Datentyp aufweisen. |
|
Datenflussoperatoren, die das Erstellen von Ausdrücken und hierarchischen Datentypen unterstützen, können Funktionen höherer Ordnung verwenden.
Die folgenden Operatoren werden unterstützt:
-
Aggregieren
-
Ausdruck
-
Filter
-
Join
-
Referenz
-
Teilen
-
Drehen
Funktion | Beschreibung | Beispiel |
---|---|---|
TRANSFORM(column, lambda_function) | Nimmt ein Array und eine anonyme Funktion an. Richten Sie ein neues Array ein, indem Sie die Funktion auf jedes Element anwenden und das Ergebnis dem Ausgabearray zuweisen. | Für ein Eingabearray mit Ganzzahlen [1, 2, 3] gibt TRANSFORM(array, x -> x + 1) ein neues Array von [2, 3, 4] zurück. |
TRANSFORM_KEYS(column, lambda_function) | Nimmt eine Karte und eine Funktion mit 2 Argumenten (Schlüssel und Wert) und gibt eine Karte zurück, in der die Schlüssel den Typ des Ergebnisses der Lambda-Funktion haben und die Werte den Typ der Spaltenzuordnungswerte haben. | Bei einer Eingabezuordnung mit Ganzzahlschlüsseln und Zeichenfolgenwerten von {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} gibt TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) eine neue Zuordnung von {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} zurück. |
TRANSFORM_VALUES(column, lambda_function) | Nimmt eine Karte und eine Funktion mit 2 Argumenten (Schlüssel und Wert) und gibt eine Karte zurück, in der die Werte den Typ des Ergebnisses der Lambda-Funktionen haben und die Schlüssel den Typ der Spaltenzuordnungsschlüssel haben. | Bei einer Eingabezuordnung mit Zeichenfolgenschlüsseln und Zeichenfolgenwerten von {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} gibt TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) eine neue Zuordnung von {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} zurück. |
ARRAY_SORT(array(...), lambda_function) |
Nur der Ausdrucksoperator unterstützt Nimmt ein Array an und sortiert nach der angegebenen Funktion, die 2 Argumente annimmt. Die Funktion muss -1, 0 oder 1 zurückgeben, je nachdem, ob das erste Element kleiner, gleich oder größer als das zweite Element ist. Wenn die Funktion ausgelassen wird, wird das Array in aufsteigender Reihenfolge sortiert. |
Das zurückgegebene Array ist: [1,5,6] |
Join-Operator
Mit dem Join-Operator können Sie Daten aus mehreren eingehenden Quellen verknüpfen.
Mit dem Bedingungsbuilder können Sie Elemente visuell auswählen, um eine Join-Bedingung zu erstellen. Sie können eine Join-Bedingung auch manuell im Editor eingeben.
Wenn Sie eine Join-Bedingung erstellen, können Sie Daten aus zwei eingehenden Quellen basierend auf der Bedingung auswählen.
Die Elemente, die Sie in einer Join-Bedingung verwenden können, umfassen eingehende Attribute, Parameter und Funktionen. Sie können ein Element in der Liste doppelklicken oder ziehen, um es dem Editor hinzuzufügen und eine Bedingung zu erstellen. Sie können die Bedingung vor dem Erstellen validieren.
Eingehend zeigt die Attribute der Upstreamports, die mit dem JOIN-Operator verbunden sind, als zwei separate JOIN-Ordner an. Zeigen Sie die Attribute der einzelnen Ports an, indem Sie den entsprechenden JOIN-Ordner ein- oder ausblenden. Beispiel: JOIN_1_1 und JOIN_1_2.
JOIN_1_1.BANK_CUSTOMER.ADDRESS_ID = JOIN_1_2.BANK_ADDRESS.ADDRESS_ID
Parameter sind die Ausdrucksparameter, die dem Datenfluss mit dem Condition Builder (Filter-, Join-, Lookup- und Aufteilungsoperatoren) oder Expression Builder (Ausdrucks- und Aggregatoperatoren) hinzugefügt wurden. Ein Ausdrucksparameter hat einen Namen, einen Typ und einen Standardwert. Siehe Ausdrucksparameter hinzufügen.
Angenommen, Sie möchten zwei Quellen verknüpfen und nur die Zeilen mit BANK_NAME='ABC Bank'
beibehalten. Sie können einen VARCHAR
-Parameter mit dem Namen P_VARCHAR
erstellen und den Standardwert auf ABC BANK
setzen. Anschließend können Sie den Join-Ausdruck wie folgt erstellen:
JOIN_1_1.ADDRESSES.BANK_ID = JOIN_1_2.BANK.BANK_ID AND JOIN_1_2.BANK.BANK_NAME = $P_VARCHAR
Funktionen sind die in Data Integration verfügbaren Funktionen, die Sie in einer Bedingung verwenden können. Funktionen sind Vorgänge, die für an die Funktion übergebene Argumente ausgeführt werden. Funktionen berechnen, bearbeiten oder extrahieren Datenwerte aus Argumenten.
Im Folgenden finden Sie eine Liste der Funktionen, die Sie beim Erstellen von Bedingungen hinzufügen können:
Funktion | Beschreibung | Beispiel |
---|---|---|
MD5(all data types) | Berechnet eine MD5 -Prüfsumme des Datentyps und gibt einen Zeichenfolgenwert zurück. | MD5(column_name) |
SHA1(all data types) | Berechnet einen SHA-1 -Hashwert des Datentyps und gibt einen Zeichenfolgenwert zurück. | SHA1(column_name) |
SHA2(all data types, bitLength) | Berechnet einen SHA-2 -Hashwert des Datentyps und gibt einen Zeichenfolgenwert zurück. bitLength ist eine Ganzzahl. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Berechnet einen Hashwert für
Oracle wendet die Hash-Funktion auf die Kombination aus |
|
Funktion | Beschreibung | Beispiel |
---|---|---|
ABS(numeric) | Gibt die absolute Potenz des Wertes numeric zurück. | ABS(-1) |
CEIL(numeric) | Gibt die kleinste Ganzzahl zurück, die nicht größer als der Wert numeric ist. | CEIL(-1,2) |
FLOOR(numeric) | Gibt die größte Ganzzahl zurück, die nicht größer als der Wert numeric ist. | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Gibt den Rest zurück, nachdem numeric1 durch numeric2 geteilt wurde. | MOD(8,2) |
POWER(numeric1, numeric2) | Entspricht numeric1 hoch numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Gibt numeric1 gerundet auf numeric2 Dezimalstellen zurück. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Gibt numeric1 gekürzt auf numeric2 Dezimalstellen zurück. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Konvertiert expr basierend auf den Angaben für format und locale (optional) in eine Zahl. Das Standardgebietsschema ist en-US . Unterstützte Sprachtags.Unterstützte Formatmuster:
|
|
Funktion | Beschreibung | Beispiel |
---|---|---|
CURRENT_DATE |
Gibt das aktuelle Datum zurück. | CURRENT_DATE gibt das aktuelle Datum zurück, z.B. 2023-05-26 |
CURRENT_TIMESTAMP |
Gibt das aktuelle Datum und die Zeit für die Session-Zeitzone zurück. | CURRENT_TIMESTAMP gibt das aktuelle Datum und die aktuelle Uhrzeit zurück, wie 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Gibt das Datum zurück, das number von Tagen nach dem angegebenen Datum date liegt. |
DATE_ADD('2017-07-30', 1) gibt 2017-07-31 zurück |
DATE_FORMAT(expr, format[, locale]) |
Formatiert Unterstützte Datumsformatmuster:
|
|
DAYOFMONTH(date) |
Gibt den Tag des Monats für das Datum zurück. | DAYOFMONTH('2020-12-25') gibt 25 zurück |
DAYOFWEEK(date) |
Gibt den Tag der Woche für das Datum zurück. | DAYOFWEEK('2020-12-25') gibt 6 für Freitag zurück. In den USA gilt der Sonntag als 1, der Montag als 2 usw. |
DAYOFYEAR(date) |
Gibt den Tag des Jahres für das Datum zurück. | DAYOFYEAR('2020-12-25') gibt 360 zurück |
WEEKOFYEAR(date) |
Gibt die Woche des Jahres für das Datum zurück. |
|
HOUR(datetime) |
Gibt den Stundenwert für das Datum/die Uhrzeit zurück. | HOUR('2020-12-25 15:10:30') gibt 15 zurück |
LAST_DAY(date) |
Gibt den letzten Tag des Monats für das Datum zurück. | LAST_DAY('2020-12-25') gibt 31 zurück |
MINUTE(datetime) |
Gibt den Minutenwert für das Datum/die Uhrzeit zurück. | HOUR('2020-12-25 15:10:30') gibt 10 zurück |
MONTH(date) |
Gibt den Monatswert für das Datum zurück. | MONTH('2020-06-25') gibt 6 zurück |
QUARTER(date) |
Gibt das Quartal des Jahres zurück, in dem das Datum liegt. | QUARTER('2020-12-25') gibt 4 zurück |
SECOND(datetime) |
Gibt den Sekundenwert für das Datum/die Uhrzeit zurück. | SECOND('2020-12-25 15:10:30') gibt 30 zurück |
TO_DATE(string, format_string[, localeStr]) |
Parst den Zeichenfolgenausdruck mit dem Ausdruck format_string in ein Datum. Das Gebietsschema ist optional. Der Standardwert ist en-US . Unterstützte Sprachtags.In Pipelineausdrücken muss
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Konvertiert expr vom Typ "VARCHAR" basierend auf den Angaben für format_string und localeStr (optional) in einen TIMESTAMP-Wert.In Pipelineausdrücken muss
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') gibt ein TIMESTAMP-Objekt zurück, das 11am 10:10 Oct 11th, 2020 darstellt |
WEEK(date) |
Gibt den Wochenwert für das Datum zurück. |
WEEK('2020-06-25') gibt 4 zurück |
YEAR(date) |
Gibt den Jahreswert für das Datum zurück. | YEAR('2020-06-25') gibt 2020 zurück |
ADD_MONTHS(date_expr, number_months) |
Gibt das Datum nach dem Hinzufügen der angegebenen Anzahl von Monaten zum angegebenen Datum, zum Zeitstempel oder zur Zeichenfolge mit einem Format wie yyyy-MM-dd oder yyyy-MM-dd HH:mm:ss.SSS zurück. |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Gibt die Anzahl der Monate zwischen Eine Ganzzahl wird zurückgegeben, wenn beide Datumsangaben denselben Tag im Monat oder den letzten Tag im jeweiligen Monat angeben. Andernfalls wird die Differenz auf Basis von 31 Tagen pro Monat berechnet. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpretiert ein Datum, einen Zeitstempel oder eine Zeichenfolge als UTC-Zeit und konvertiert diese Zeit in einen Zeitstempel in der angegebenen Zeitzone. Verwenden Sie für eine Zeichenfolge ein Format wie Das Zeitzonenformat ist entweder eine regionsbasierte Zonen-ID (z.B. "Region/Ort", wie "Asia/Seoul") oder ein Zeitzonenversatz (z.B. UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') gibt 2017-07-14 03:40:00.0 zurück |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Konvertiert ein Datum, einen Zeitstempel oder eine Zeichenfolge in der angegebenen Zeitzone in einen UTC-Zeitstempel. Verwenden Sie für eine Zeichenfolge ein Format wie Das Zeitzonenformat ist entweder eine regionsbasierte Zonen-ID (z.B. "Region/Ort", wie "Asia/Seoul") oder ein Zeitzonenversatz (z.B. UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') gibt 2017-07-14 01:40:00.0 zurück
|
FROM_UNIXTIME(unix_time[, fmt]) |
Konvertiert die angegebene Unix-Zeit oder -Epoche in eine Zeichenfolge, die den Zeitstempel dieses Zeitpunkts in der aktuellen Systemzeitzone und im angegebenen Format darstellt. Hinweis: Die Unix-Zeit ist die Anzahl der Sekunden, die seit dem 1. Januar 1970 00:00:00 UTC verstrichen sind. Wenn |
Die Standardzeitzone in den Beispielen ist PST. |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Konvertiert die aktuelle oder angegebene Zeit in einen Unix-Zeitstempel in Sekunden.
Wenn Wenn |
Die Standardzeitzone in diesem Beispiel ist PST. |
INTERVAL 'year' YEAR[(year_precision)] |
Gibt einen Zeitraum in Jahren zurück. year_precision ist die Anzahl der Stellen im Feld year. Der Wert muss zwischen 0 und 9 liegen. Wenn year_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Gibt einen Zeitraum in Jahren und Monaten zurück. Verwenden Sie diese Option, um einen Zeitraum mit den Feldern year und month zu speichern. year_precision ist die Anzahl der Stellen im Feld year. Der Wert muss zwischen 0 und 9 liegen. Wenn year_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
INTERVAL '100-5' YEAR(3) TO MONTH gibt ein Intervall von 100 Jahren und 5 Monaten zurück. Sie müssen 3 als führende Gesamtstellenanzahl für das Jahr angeben. |
INTERVAL 'month' MONTH[(month_precision)] |
Gibt einen Zeitraum in Monaten zurück. month_precision ist die Anzahl der Stellen im Feld Monat. Der Wert muss 0 bis 9 sein. Wenn month_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
INTERVAL '200' MONTH(3) gibt ein Intervall von 200 Monaten zurück. Sie müssen 3 als Gesamtstellenanzahl für den Monat angeben. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Tagen, Stunden, Minuten und Sekunden zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) gibt ein Intervall von 11 Tagen, 10 Stunden, 09 Minuten, 08 Sekunden und 555 Tausendstelsekunden zurück |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Tagen, Stunden und Minuten zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '11 10:09' DAY TO MINUTE gibt ein Intervall von 11 Tagen, 10 Stunden und 09 Minuten zurück |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Gibt einen Zeitraum in Tagen und Stunden zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. |
INTERVAL '100 10' DAY(3) TO HOUR gibt ein Intervall von 100 Tagen und 10 Stunden zurück |
INTERVAL 'day' DAY[(day_precision)] |
Gibt einen Zeitraum in Tagen zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. |
INTERVAL '999' DAY(3) gibt ein Intervall von 999 Tagen zurück |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Stunden, Minuten und Sekunden zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) gibt ein Intervall von 9 Stunden, 08 Minuten und 7,6666666 Sekunden zurück |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Stunden und Minuten zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '09:30' HOUR TO MINUTE gibt ein Intervall von 9 Stunden und 30 Minuten zurück |
INTERVAL 'hour' HOUR[(hour_precision)] |
Gibt einen Zeitraum in Stunden zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. |
INTERVAL '40' HOUR gibt ein Intervall von 40 Stunden zurück |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Minuten zurück. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '15' MINUTE gibt ein Intervall von 15 Minuten zurück |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Minuten und Sekunden zurück. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '15:30' MINUTE TO SECOND gibt ein Intervall von 15 Minuten und 30 Sekunden zurück |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Sekunden zurück. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des Feldes zweite. Er muss zwischen 0 und 9 liegen. Der Standard ist 3. |
INTERVAL '15.678' SECOND gibt ein Intervall von 15,678 Sekunden zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Gibt den Wert zurück, der in der Zeile ausgewertet wird, die der ersten Zeile des Fensterrahmens entspricht. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) gibt den ersten Wert von BANK_ID in einem Fenster zurück, über das die Zeilen als die aktuelle Zeile und 1 Zeile nach dieser Zeile berechnet werden, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Gibt den Wert zurück, der in der Zeile mit einem bestimmten Offset vor der aktuellen Zeile innerhalb der Partition ausgewertet wird. Wenn keine solche Zeile vorhanden ist, wird der Standardwert zurückgegeben. Sowohl Offset- als auch Standardwert werden in Bezug auf die aktuelle Zeile ausgewertet. Wenn keine Angabe gemacht wird, wird Offset standardmäßig auf 1 und standardmäßig auf NULL gesetzt. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) gibt den Wert von BANK_ID aus der zweiten Zeile vor der aktuellen Zeile zurück, unterteilt nach BANK_ID und in absteigender Reihenfolge von BANK_NAME . Wenn kein solcher Wert vorhanden ist, wird hello zurückgegeben. |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Gibt den Wert zurück, der in der Zeile ausgewertet wird, die die letzte Zeile des Fensterrahmens ist. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) gibt den letzten Wert von BANK_ID in einem Fenster zurück, über das die Zeilen als die aktuelle Zeile und 1 Zeile nach dieser Zeile berechnet werden, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Gibt den Wert zurück, der in der Zeile mit einem bestimmten Offset nach der aktuellen Zeile innerhalb der Partition ausgewertet wird. Wenn keine solche Zeile vorhanden ist, wird der Standardwert zurückgegeben. Sowohl Offset- als auch Standardwert werden in Bezug auf die aktuelle Zeile ausgewertet. Wenn keine Angabe gemacht wird, wird Offset standardmäßig auf 1 und standardmäßig auf NULL gesetzt. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt den Wert von BANK_ID aus der zweiten Zeile nach der aktuellen Zeile zurück, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . Wenn kein solcher Wert vorhanden ist, wird hello zurückgegeben. |
RANK() OVER([ partition_clause ] order_by_clause) |
Gibt den Rang der aktuellen Zeile mit Lücken beginnend mit 1 zurück. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt den Rang der einzelnen Zeilen in der Partitionsgruppe von BANK_ID in aufsteigender Reihenfolge von BANK_NAME zurück. |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Gibt die eindeutige Nummer der aktuellen Zeile innerhalb der zugehörigen Partition beginnend mit 1 zurück. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt die eindeutige Zeilennummer der einzelnen Zeilen innerhalb der Partitionsgruppe von BANK_ID in aufsteigender Reihenfolge von BANK_NAME zurück. |
Funktionen | Beschreibung | Beispiel |
---|---|---|
CAST(value AS type) | Gibt den angegebenen Wert im angegebenen Typ zurück. | CAST("10" AS INT) gibt 10 zurück |
CONCAT(string, string) | Gibt die kombinierten Werte von Zeichenfolgen oder Spalten zurück. | CONCAT('Oracle','SQL') gibt OracleSQL zurück |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Gibt die kombinierten Werte von Zeichenfolgen oder Spalten mit dem angegebenen Trennzeichen zwischen den Zeichenfolgen oder Spalten zurück. Ein Trennzeichen ist erforderlich und muss eine Zeichenfolge sein. Nach dem Trennzeichen muss mindestens ein Ausdruck angegeben werden. Beispiel: |
CONCAT_WS('-', 'Hello', 'Oracle') gibt Hello-Oracle zurück
Wenn ein untergeordnetes Element der Funktion ein Array ist, wird das Array vereinfacht:
|
INITCAP(string) | Gibt die Zeichenfolge so zurück, dass jedes Wort mit einem Großbuchstaben beginnt, die anderen Buchstaben Kleinbuchstaben sind und die einzelnen Wörter durch ein Leerzeichen getrennt werden. | INITCAP('oRACLE sql') gibt Oracle Sql zurück |
INSTR(string, substring[start_position]) | Gibt den (1-basierten) Index des ersten Vorkommens von substring in string zurück. | INSTR('OracleSQL', 'SQL') gibt 7 zurück |
LOWER(string) | Gibt die Zeichenfolge zurück, wobei alle Buchstaben in Kleinbuchstaben umgewandelt werden. | LOWER('ORACLE') gibt oracle zurück |
LENGTH(string) | Gibt die Länge der Zeichenfolge in Zeichen oder die Anzahl der Byte von Binärdaten zurück. Nachgestellte Leerzeichen werden mitgezählt. | LENGTH('Oracle') gibt 6 zurück |
LTRIM(string) | Gibt die Zeichenfolge zurück, wobei vorangestellte Leerzeichen von links entfernt werden. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Gibt das Argument zurück, das nicht Null ist. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Sucht und extrahiert die Zeichenfolge, die einem regulären Ausdrucksmuster aus der Eingabezeichenfolge entspricht. Wenn der optionale Erfassungsgruppenindex angegeben ist, extrahiert die Funktion die spezifische Gruppe. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) gibt 22 zurück |
REPLACE(string, search, replacement) | Ersetzt alle Vorkommen von search durch replacement .Wird Wenn | REPLACE('ABCabc', 'abc', 'DEF') gibt ABCDEF zurück |
RTRIM(string) | Gibt die Zeichenfolge zurück, wobei vorangestellte Leerzeichen von rechts entfernt werden. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Gibt die erste Teilzeichenfolge ab der Position zurück. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) gibt rac zurück |
Für Zahlen, TO_CHAR(expr) und für Datumsangaben TO_CHAR(expr, format[, locale]) | Konvertiert Zahlen und Datumsangaben in Zeichenfolgen. Für Zahlen ist kein Format erforderlich. Verwenden Sie für Datumsangaben dasselbe Format wie DATE_FORMAT , das unter Datums- und Zeitfunktionen beschrieben wird. Das Standardgebietsschema ist en-US . Siehe unterstützte Sprachtags.In Pipelineausdrücken muss
| Zahlenbeispiel: Datumsbeispiel: |
UPPER(string) | Gibt eine Zeichenfolge zurück, wobei alle Buchstaben in Großbuchstaben geändert werden. | UPPER('oracle') gibt ORACLE zurück |
LPAD(str, len[, pad]) | Gibt eine Zeichenfolge zurück, die links mit angegebenen Zeichen auf eine bestimmte Länge aufgefüllt wird. Wenn Sie das pad-Zeichen auslassen, wird standardmäßig ein Speicherplatz verwendet. | LPAD('ABC', 5, '*') gibt '**ABC' zurück |
RPAD(str, len[, pad]) | Gibt eine Zeichenfolge zurück, die rechts mit angegebenen Zeichen auf eine bestimmte Länge aufgefüllt wird. Wenn Sie das pad-Zeichen auslassen, wird standardmäßig ein Speicherplatz verwendet. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Funktion | Beschreibung | Beispiel |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Gibt den Wert zurück, für den eine Bedingung erfüllt wird. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END gibt ABC zurück, wenn 1> 0 . Andernfalls wird XYZ zurückgegeben |
AND | Der logische AND-Operator. Gibt "true" zurück, wenn beide Operanden wahr sind. Andernfalls wird "false" zurückgegeben. | (x = 10 AND y = 20) gibt "true" zurück, wenn x gleich 10 und y gleich 20 ist. Wenn einer der Operanden nicht wahr ist, wird "false" zurückgegeben |
OR | Der logische OR-Operator. Gibt "true" zurück, wenn einer der Operanden wahr ist oder beide wahr sind. Andernfalls wird "false" zurückgegeben. | (x = 10 OR y = 20) gibt "false" zurück, wenn x nicht gleich 10 und y nicht gleich 20 ist. Wenn einer der Operanden wahr ist, wird "true" zurückgegeben |
NOT | Der logische NOT-Operator. | |
LIKE | Ermittelt durch Mustervergleich, ob die Zeichenfolge string1 mit dem Muster in string2 übereinstimmt. | |
= | Führt einen Gleichheitstest aus. Gibt "true" zurück, wenn expr1 gleich expr2 ist. Andernfalls wird "false" zurückgegeben. | x = 10 gibt "true" zurück, wenn der Wert von x gleich 10 ist. Andernfalls wird "false" zurückgegeben |
!= | Führt einen Ungleichheitstest aus. Gibt "true" zurück, wenn expr1 nicht gleich expr2 ist. Andernfalls wird "false" zurückgegeben. | x != 10 gibt "false" zurück, wenn der Wert von x gleich 10 ist. Andernfalls wird "true" zurückgegeben |
> | Testet, ob ein Ausdruck "größer als" ist. Gibt "true" zurück, wenn expr1 größer als expr2 ist. | x > 10 gibt "true" zurück, wenn der Wert von x größer als 10 ist. Andernfalls wird "false" zurückgegeben |
>= | Testet, ob ein Ausdruck "größer/gleich" ist. Gibt "true" zurück, wenn expr1 größer als oder gleich expr2 ist. | x >= 10 gibt "true" zurück, wenn der Wert von x größer als oder gleich 10 ist. Andernfalls wird "false" zurückgegeben |
< | Testet, ob ein Ausdruck "kleiner als" ist. Gibt "true" zurück, wenn expr1 kleiner als expr2 ist. | x < 10 gibt "true" zurück, wenn der Wert von x kleiner als 10 ist. Andernfalls wird "false" zurückgegeben |
<= | Testet, ob ein Ausdruck "kleiner/gleich" ist. Gibt "true" zurück, wenn expr1 kleiner oder gleich expr2 ist. | x <= 10 gibt "true" zurück, wenn der Wert von x kleiner als 10 ist. Andernfalls wird "false" zurückgegeben |
|| | Verkettet zwei Zeichenfolgen. | 'XYZ' || 'hello' gibt 'XYZhello' zurück |
BETWEEN | Bewertet einen Bereich. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Testet, ob ein Ausdruck mit einer Werteliste übereinstimmt. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Funktion | Beschreibung | Beispiel |
---|---|---|
NUMERIC_ID() | Generiert eine universell eindeutige ID, die eine 64-Bit-Zahl für jede Zeile darstellt. | NUMERIC_ID() gibt beispielsweise 3458761969522180096 und 3458762008176885761 zurück |
ROWID() | Generiert monoton aufsteigende 64-Bit-Zahlen. | ROWID() gibt beispielsweise 0 , 1 , 2 usw. zurück |
UUID() | Generiert eine universell eindeutige ID, die in einer 128-Bit-Zeichenfolge für jede Zeile besteht. | UUID() gibt zum Beispiel 20d45c2f-0d56-4356-8910-162f4f40fb6d zurück |
MONOTONICALLY_INCREASING_ID() |
Generiert eindeutige, monoton aufsteigende 64-Bit-Ganzzahlen, die keine aufeinanderfolgenden Zahlen sind. | MONOTONICALLY_INCREASING_ID() gibt beispielsweise 8589934592 und 25769803776 zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
COALESCE(value, value [, value]*) | Gibt das erste Nicht-Null-Argument zurück, falls vorhanden. Andernfalls wird Null zurückgegeben. | COALESCE(NULL, 1, NULL) gibt 1 zurück |
NULLIF(value, value) | Gibt Null zurück, wenn die beiden Werte gleich sind. Andernfalls wird der erste Wert zurückgegeben. | NULLIF('ABC','XYZ') gibt ABC zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
SCHEMA_OF_JSON(string) | Parst eine JSON-Zeichenfolge und leitet das Schema im DDL-Format ab. |
|
FROM_JSON(column, string) | Parst eine Spalte mit einer JSON-Zeichenfolge in einen der folgenden Typen mit dem angegebenen Schema.
|
|
TO_JSON(column) | Konvertiert eine Spalte vom Typ "Struct" oder "Struct-Array" oder vom Typ "Map" oder "Map-Array" in eine JSON-Zeichenfolge. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) gibt eine JSON-Zeichenfolge {"s1":[1,2,3],"s2":{"key":"value"}} zurück |
TO_MAP(string,column[,string,column]*) | Erstellt eine neue Spalte vom Typ "Map". Die Eingabespalten müssen als Schlüssel/Wert-Paare gruppiert werden. Die Eingabeschlüsselspalten dürfen nicht Null sein und müssen alle denselben Datentyp aufweisen. Die Eingabewertspalten müssen alle denselben Datentyp aufweisen. |
|
TO_STRUCT(string,column[,string,column]*) | Erstellt eine neue Spalte vom Typ "Struct". Die Eingabespalten müssen als Schlüssel/Wert-Paare gruppiert werden. |
|
TO_ARRAY(column[,column]*) | Erstellt eine neue Spalte vom Typ "Array". Die Eingabespalten müssen alle denselben Datentyp aufweisen. |
|
Datenflussoperatoren, die das Erstellen von Ausdrücken und hierarchischen Datentypen unterstützen, können Funktionen höherer Ordnung verwenden.
Die folgenden Operatoren werden unterstützt:
-
Aggregieren
-
Ausdruck
-
Filter
-
Join
-
Referenz
-
Teilen
-
Drehen
Funktion | Beschreibung | Beispiel |
---|---|---|
TRANSFORM(column, lambda_function) | Nimmt ein Array und eine anonyme Funktion an. Richten Sie ein neues Array ein, indem Sie die Funktion auf jedes Element anwenden und das Ergebnis dem Ausgabearray zuweisen. | Für ein Eingabearray mit Ganzzahlen [1, 2, 3] gibt TRANSFORM(array, x -> x + 1) ein neues Array von [2, 3, 4] zurück. |
TRANSFORM_KEYS(column, lambda_function) | Nimmt eine Karte und eine Funktion mit 2 Argumenten (Schlüssel und Wert) und gibt eine Karte zurück, in der die Schlüssel den Typ des Ergebnisses der Lambda-Funktion haben und die Werte den Typ der Spaltenzuordnungswerte haben. | Bei einer Eingabezuordnung mit Ganzzahlschlüsseln und Zeichenfolgenwerten von {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} gibt TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) eine neue Zuordnung von {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} zurück. |
TRANSFORM_VALUES(column, lambda_function) | Nimmt eine Karte und eine Funktion mit 2 Argumenten (Schlüssel und Wert) und gibt eine Karte zurück, in der die Werte den Typ des Ergebnisses der Lambda-Funktionen haben und die Schlüssel den Typ der Spaltenzuordnungsschlüssel haben. | Bei einer Eingabezuordnung mit Zeichenfolgenschlüsseln und Zeichenfolgenwerten von {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} gibt TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) eine neue Zuordnung von {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} zurück. |
ARRAY_SORT(array(...), lambda_function) |
Nur der Ausdrucksoperator unterstützt Nimmt ein Array an und sortiert nach der angegebenen Funktion, die 2 Argumente annimmt. Die Funktion muss -1, 0 oder 1 zurückgeben, je nachdem, ob das erste Element kleiner, gleich oder größer als das zweite Element ist. Wenn die Funktion ausgelassen wird, wird das Array in aufsteigender Reihenfolge sortiert. |
Das zurückgegebene Array ist: [1,5,6] |
Ausdrucksoperator
Mit dem Ausdrucksoperator können Sie eine oder mehrere Transformationen für eine einzelne Datenzeile ausführen, um neue abgeleitete Felder zu erstellen.
Informationen zum Ändern des Datentyps einer Attributgruppe mit dem Ausdrucksoperator finden Sie unter Datentyp einer Attributgruppe ändern.
Mit dem Ausdrucksoperator können Sie den Datentyp von Attributen mit einer Bulktransformationsaktion ändern.
Mit dem Expression Builder können Sie Elemente visuell auswählen, um einen Ausdruck im Editor zu erstellen. Sie können einen Ausdruck auch selbst manuell schreiben.
Beachten Sie beim Erstellen von Ausdrücken Folgendes:
Setzen Sie ein Zeichenfolgenliteral in einfache Anführungszeichen. Beispiel:
CONCAT('We ', 'like')
undUPPER('oracle')
.Setzen Sie einen Attributnamen in doppelte Anführungszeichen. Beispiel:
UPPER("Sales")
undCONCAT(CONCAT("EXPRESSION_1.EMP_UTF8_EN_COL_CSV.EN_NAME", ' '), "EXPRESSION_1.EMP_UTF8_EN_COL_CSV.NAME")
.Die Verwendung von doppelten Anführungszeichen um Attributnamen ist für Multibyte-Zeichen und Namen mit Sonderzeichen im vollqualifizierten Namen obligatorisch.
Der Bereich "Ausdruck hinzufügen" umfasst zwei Abschnitte: Informationen zu Ausdrücken und Expression Builder. Mit den Feldern im Abschnitt Informationen zu Ausdrücken können Sie einen Namen und Datentyp für den Ausdruck angeben. Sie können den Ausdruck auch so erstellen, dass er auf zwei oder mehr Attribute angewendet wird. Wenn Sie mit komplexen Datentypen wie "Map", "Array" und "Struct" arbeiten, die eventuell Ebenen verschachtelter Typen aufweisen, können Sie festlegen, dass der Builder den Datentyp aus dem eingegebenen Ausdruck erkennt. Wenn der Builder den Datentyp ableitet, können Sie den Datentyp in der Vorschau anzeigen und aktualisieren und den Ausdruck validieren.
Im Abschnitt Expression Builder werden die Elemente aufgeführt, mit denen Sie einen Ausdruck erstellen können. Die Elemente, die Sie in einem Ausdruck verwenden können, umfassen eingehende Attribute, Parameter und Funktionen. Doppelklicken Sie auf ein Element, oder ziehen Sie es aus der Liste, um es dem Editor hinzuzufügen und den Ausdruck zu erstellen, oder schreiben Sie den Ausdruck selbst manuell. Sie können den Ausdruck vor dem Erstellen validieren.
Unter Eingehend werden die Attribute des vorgelagerten Operators angezeigt, die bei diesem Ausdrucksoperator kommen. Unter der Attributliste befindet sich ein Kontrollkästchen, mit dem Sie Ausschlussregeln anwenden können. Wenn Sie eingehende Attribute aus der Ausgabe dieses Ausdrucks ausschließen möchten, aktivieren Sie das Kontrollkästchen Eingehende Attribute ausschließen. Fügen Sie dann über das Menü die eingehenden Attribute hinzu, die Sie aus der Ausgabe ausschließen möchten. Auf jedes Attribut, das Sie ausschließen möchten, wird eine Ausschlussregel angewendet. Sie können Attribute nur ausschließen, wenn Sie den Ausdruck zum ersten Mal hinzufügen. Wenn Sie den Ausdruck bearbeiten, ist das Kontrollkästchen Eingehende Attribute ausschließen nicht verfügbar.
Zu den Parametern gehören sowohl benutzerdefinierte als auch systemgenerierte Parameter.
Benutzerdefinierte Parameter sind die Ausdrucksparameter, die im Datenfluss mit dem Bedingungsbuilder (Filter-, Join-, Lookup- und Aufteilungsoperatoren) oder Expression Builder (Ausdrucks- und Aggregatoperatoren) hinzugefügt wurden. Siehe Ausdrucksparameter hinzufügen. Die Syntax lautet $PARAMETER_NAME
. Beispiel: EXPRESSION_1.ADDRESSES.POSTAL_CODE=$P_CODE
Data Integration generiert Systemparameter wie SYS.TASK_START_TIME
. Die Werte der Systemparameter können in Ausdrücken zur Protokollierung von Systeminformationen verwendet werden. Die Syntax lautet ${SYSTEM_PARAMETER}
. Beispiel: ${SYS.TASK_RUN_NAME}
Funktionen sind die in Data Integration verfügbaren Funktionen, die Sie in einem Ausdruck verwenden können. Funktionen sind Vorgänge, die für an die Funktion übergebene Argumente ausgeführt werden. Funktionen berechnen, bearbeiten oder extrahieren Datenwerte aus Argumenten. Sie können auch Benutzerdefinierte Funktionen hinzufügen, die Sie im Workspace erstellt haben. Beispiel: MYLIBRARY.MYFUNCTION
Folgende Funktionen können in Data Integration verwendet werden:
Funktion | Beschreibung | Beispiel |
---|---|---|
MD5(all data types) | Berechnet eine MD5 -Prüfsumme des Datentyps und gibt einen Zeichenfolgenwert zurück. | MD5(column_name) |
SHA1(all data types) | Berechnet einen SHA-1 -Hashwert des Datentyps und gibt einen Zeichenfolgenwert zurück. | SHA1(column_name) |
SHA2(all data types, bitLength) | Berechnet einen SHA-2 -Hashwert des Datentyps und gibt einen Zeichenfolgenwert zurück. bitLength ist eine Ganzzahl. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Berechnet einen Hashwert für
Oracle wendet die Hash-Funktion auf die Kombination aus |
|
Funktion | Beschreibung | Beispiel |
---|---|---|
ABS(numeric) | Gibt die absolute Potenz des Wertes numeric zurück. | ABS(-1) |
CEIL(numeric) | Gibt die kleinste Ganzzahl zurück, die nicht größer als der Wert numeric ist. | CEIL(-1,2) |
FLOOR(numeric) | Gibt die größte Ganzzahl zurück, die nicht größer als der Wert numeric ist. | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Gibt den Rest zurück, nachdem numeric1 durch numeric2 geteilt wurde. | MOD(8,2) |
POWER(numeric1, numeric2) | Entspricht numeric1 hoch numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Gibt numeric1 gerundet auf numeric2 Dezimalstellen zurück. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Gibt numeric1 gekürzt auf numeric2 Dezimalstellen zurück. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Konvertiert expr basierend auf den Angaben für format und locale (optional) in eine Zahl. Das Standardgebietsschema ist en-US . Unterstützte Sprachtags.Unterstützte Formatmuster:
|
|
Nur der Ausdrucksoperator unterstützt Arrayfunktionen.
Funktion | Beschreibung | Beispiel |
---|---|---|
ARRAY_POSITION(array(...), element) | Gibt die Position des ersten Vorkommens des angegebenen Elements im angegebenen Array zurück. Die Position basiert nicht auf Null, sondern beginnt mit 1. | ARRAY_POSITION(array(3, 2, 1, 4, 1), 1) gibt 3 zurück |
REVERSE(array(...)) |
Gibt das angegebene Elementarray in umgekehrter Reihenfolge zurück. | REVERSE(array(2, 1, 4, 3)) gibt [3,4,1,2] zurück |
ELEMENT_AT(array(...), index) |
Gibt das Element des angegebenen Arrays an der angegebenen Indexposition zurück. Der Index basiert nicht auf Null, sondern beginnt mit 1. Wenn |
ELEMENT_AT(array(1, 2, 3), 2) gibt 2 zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
CURRENT_DATE |
Gibt das aktuelle Datum zurück. | CURRENT_DATE gibt das aktuelle Datum zurück, z.B. 2023-05-26 |
CURRENT_TIMESTAMP |
Gibt das aktuelle Datum und die Zeit für die Session-Zeitzone zurück. | CURRENT_TIMESTAMP gibt das aktuelle Datum und die aktuelle Uhrzeit zurück, wie 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Gibt das Datum zurück, das number von Tagen nach dem angegebenen Datum date liegt. |
DATE_ADD('2017-07-30', 1) gibt 2017-07-31 zurück |
DATE_FORMAT(expr, format[, locale]) |
Formatiert Unterstützte Datumsformatmuster:
|
|
DAYOFMONTH(date) |
Gibt den Tag des Monats für das Datum zurück. | DAYOFMONTH('2020-12-25') gibt 25 zurück |
DAYOFWEEK(date) |
Gibt den Tag der Woche für das Datum zurück. | DAYOFWEEK('2020-12-25') gibt 6 für Freitag zurück. In den USA gilt der Sonntag als 1, der Montag als 2 usw. |
DAYOFYEAR(date) |
Gibt den Tag des Jahres für das Datum zurück. | DAYOFYEAR('2020-12-25') gibt 360 zurück |
WEEKOFYEAR(date) |
Gibt die Woche des Jahres für das Datum zurück. |
|
HOUR(datetime) |
Gibt den Stundenwert für das Datum/die Uhrzeit zurück. | HOUR('2020-12-25 15:10:30') gibt 15 zurück |
LAST_DAY(date) |
Gibt den letzten Tag des Monats für das Datum zurück. | LAST_DAY('2020-12-25') gibt 31 zurück |
MINUTE(datetime) |
Gibt den Minutenwert für das Datum/die Uhrzeit zurück. | HOUR('2020-12-25 15:10:30') gibt 10 zurück |
MONTH(date) |
Gibt den Monatswert für das Datum zurück. | MONTH('2020-06-25') gibt 6 zurück |
QUARTER(date) |
Gibt das Quartal des Jahres zurück, in dem das Datum liegt. | QUARTER('2020-12-25') gibt 4 zurück |
SECOND(datetime) |
Gibt den Sekundenwert für das Datum/die Uhrzeit zurück. | SECOND('2020-12-25 15:10:30') gibt 30 zurück |
TO_DATE(string, format_string[, localeStr]) |
Parst den Zeichenfolgenausdruck mit dem Ausdruck format_string in ein Datum. Das Gebietsschema ist optional. Der Standardwert ist en-US . Unterstützte Sprachtags.In Pipelineausdrücken muss
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Konvertiert expr vom Typ "VARCHAR" basierend auf den Angaben für format_string und localeStr (optional) in einen TIMESTAMP-Wert.In Pipelineausdrücken muss
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') gibt ein TIMESTAMP-Objekt zurück, das 11am 10:10 Oct 11th, 2020 darstellt |
WEEK(date) |
Gibt den Wochenwert für das Datum zurück. |
WEEK('2020-06-25') gibt 4 zurück |
YEAR(date) |
Gibt den Jahreswert für das Datum zurück. | YEAR('2020-06-25') gibt 2020 zurück |
ADD_MONTHS(date_expr, number_months) |
Gibt das Datum nach dem Hinzufügen der angegebenen Anzahl von Monaten zum angegebenen Datum, zum Zeitstempel oder zur Zeichenfolge mit einem Format wie yyyy-MM-dd oder yyyy-MM-dd HH:mm:ss.SSS zurück. |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Gibt die Anzahl der Monate zwischen Eine Ganzzahl wird zurückgegeben, wenn beide Datumsangaben denselben Tag im Monat oder den letzten Tag im jeweiligen Monat angeben. Andernfalls wird die Differenz auf Basis von 31 Tagen pro Monat berechnet. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpretiert ein Datum, einen Zeitstempel oder eine Zeichenfolge als UTC-Zeit und konvertiert diese Zeit in einen Zeitstempel in der angegebenen Zeitzone. Verwenden Sie für eine Zeichenfolge ein Format wie Das Zeitzonenformat ist entweder eine regionsbasierte Zonen-ID (z.B. "Region/Ort", wie "Asia/Seoul") oder ein Zeitzonenversatz (z.B. UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') gibt 2017-07-14 03:40:00.0 zurück |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Konvertiert ein Datum, einen Zeitstempel oder eine Zeichenfolge in der angegebenen Zeitzone in einen UTC-Zeitstempel. Verwenden Sie für eine Zeichenfolge ein Format wie Das Zeitzonenformat ist entweder eine regionsbasierte Zonen-ID (z.B. "Region/Ort", wie "Asia/Seoul") oder ein Zeitzonenversatz (z.B. UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') gibt 2017-07-14 01:40:00.0 zurück
|
FROM_UNIXTIME(unix_time[, fmt]) |
Konvertiert die angegebene Unix-Zeit oder -Epoche in eine Zeichenfolge, die den Zeitstempel dieses Zeitpunkts in der aktuellen Systemzeitzone und im angegebenen Format darstellt. Hinweis: Die Unix-Zeit ist die Anzahl der Sekunden, die seit dem 1. Januar 1970 00:00:00 UTC verstrichen sind. Wenn |
Die Standardzeitzone in den Beispielen ist PST. |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Konvertiert die aktuelle oder angegebene Zeit in einen Unix-Zeitstempel in Sekunden.
Wenn Wenn |
Die Standardzeitzone in diesem Beispiel ist PST. |
INTERVAL 'year' YEAR[(year_precision)] |
Gibt einen Zeitraum in Jahren zurück. year_precision ist die Anzahl der Stellen im Feld year. Der Wert muss zwischen 0 und 9 liegen. Wenn year_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Gibt einen Zeitraum in Jahren und Monaten zurück. Verwenden Sie diese Option, um einen Zeitraum mit den Feldern year und month zu speichern. year_precision ist die Anzahl der Stellen im Feld year. Der Wert muss zwischen 0 und 9 liegen. Wenn year_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
INTERVAL '100-5' YEAR(3) TO MONTH gibt ein Intervall von 100 Jahren und 5 Monaten zurück. Sie müssen 3 als führende Gesamtstellenanzahl für das Jahr angeben. |
INTERVAL 'month' MONTH[(month_precision)] |
Gibt einen Zeitraum in Monaten zurück. month_precision ist die Anzahl der Stellen im Feld Monat. Der Wert muss 0 bis 9 sein. Wenn month_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
INTERVAL '200' MONTH(3) gibt ein Intervall von 200 Monaten zurück. Sie müssen 3 als Gesamtstellenanzahl für den Monat angeben. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Tagen, Stunden, Minuten und Sekunden zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) gibt ein Intervall von 11 Tagen, 10 Stunden, 09 Minuten, 08 Sekunden und 555 Tausendstelsekunden zurück |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Tagen, Stunden und Minuten zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '11 10:09' DAY TO MINUTE gibt ein Intervall von 11 Tagen, 10 Stunden und 09 Minuten zurück |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Gibt einen Zeitraum in Tagen und Stunden zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. |
INTERVAL '100 10' DAY(3) TO HOUR gibt ein Intervall von 100 Tagen und 10 Stunden zurück |
INTERVAL 'day' DAY[(day_precision)] |
Gibt einen Zeitraum in Tagen zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. |
INTERVAL '999' DAY(3) gibt ein Intervall von 999 Tagen zurück |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Stunden, Minuten und Sekunden zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) gibt ein Intervall von 9 Stunden, 08 Minuten und 7,6666666 Sekunden zurück |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Stunden und Minuten zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '09:30' HOUR TO MINUTE gibt ein Intervall von 9 Stunden und 30 Minuten zurück |
INTERVAL 'hour' HOUR[(hour_precision)] |
Gibt einen Zeitraum in Stunden zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. |
INTERVAL '40' HOUR gibt ein Intervall von 40 Stunden zurück |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Minuten zurück. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '15' MINUTE gibt ein Intervall von 15 Minuten zurück |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Minuten und Sekunden zurück. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '15:30' MINUTE TO SECOND gibt ein Intervall von 15 Minuten und 30 Sekunden zurück |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Sekunden zurück. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des Feldes zweite. Er muss zwischen 0 und 9 liegen. Der Standard ist 3. |
INTERVAL '15.678' SECOND gibt ein Intervall von 15,678 Sekunden zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Gibt den Wert zurück, der in der Zeile ausgewertet wird, die der ersten Zeile des Fensterrahmens entspricht. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) gibt den ersten Wert von BANK_ID in einem Fenster zurück, über das die Zeilen als die aktuelle Zeile und 1 Zeile nach dieser Zeile berechnet werden, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Gibt den Wert zurück, der in der Zeile mit einem bestimmten Offset vor der aktuellen Zeile innerhalb der Partition ausgewertet wird. Wenn keine solche Zeile vorhanden ist, wird der Standardwert zurückgegeben. Sowohl Offset- als auch Standardwert werden in Bezug auf die aktuelle Zeile ausgewertet. Wenn keine Angabe gemacht wird, wird Offset standardmäßig auf 1 und standardmäßig auf NULL gesetzt. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) gibt den Wert von BANK_ID aus der zweiten Zeile vor der aktuellen Zeile zurück, unterteilt nach BANK_ID und in absteigender Reihenfolge von BANK_NAME . Wenn kein solcher Wert vorhanden ist, wird hello zurückgegeben. |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Gibt den Wert zurück, der in der Zeile ausgewertet wird, die die letzte Zeile des Fensterrahmens ist. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) gibt den letzten Wert von BANK_ID in einem Fenster zurück, über das die Zeilen als die aktuelle Zeile und 1 Zeile nach dieser Zeile berechnet werden, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Gibt den Wert zurück, der in der Zeile mit einem bestimmten Offset nach der aktuellen Zeile innerhalb der Partition ausgewertet wird. Wenn keine solche Zeile vorhanden ist, wird der Standardwert zurückgegeben. Sowohl Offset- als auch Standardwert werden in Bezug auf die aktuelle Zeile ausgewertet. Wenn keine Angabe gemacht wird, wird Offset standardmäßig auf 1 und standardmäßig auf NULL gesetzt. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt den Wert von BANK_ID aus der zweiten Zeile nach der aktuellen Zeile zurück, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . Wenn kein solcher Wert vorhanden ist, wird hello zurückgegeben. |
RANK() OVER([ partition_clause ] order_by_clause) |
Gibt den Rang der aktuellen Zeile mit Lücken beginnend mit 1 zurück. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt den Rang der einzelnen Zeilen in der Partitionsgruppe von BANK_ID in aufsteigender Reihenfolge von BANK_NAME zurück. |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Gibt die eindeutige Nummer der aktuellen Zeile innerhalb der zugehörigen Partition beginnend mit 1 zurück. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt die eindeutige Zeilennummer der einzelnen Zeilen innerhalb der Partitionsgruppe von BANK_ID in aufsteigender Reihenfolge von BANK_NAME zurück. |
Funktionen | Beschreibung | Beispiel |
---|---|---|
CAST(value AS type) | Gibt den angegebenen Wert im angegebenen Typ zurück. | CAST("10" AS INT) gibt 10 zurück |
CONCAT(string, string) | Gibt die kombinierten Werte von Zeichenfolgen oder Spalten zurück. | CONCAT('Oracle','SQL') gibt OracleSQL zurück |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Gibt die kombinierten Werte von Zeichenfolgen oder Spalten mit dem angegebenen Trennzeichen zwischen den Zeichenfolgen oder Spalten zurück. Ein Trennzeichen ist erforderlich und muss eine Zeichenfolge sein. Nach dem Trennzeichen muss mindestens ein Ausdruck angegeben werden. Beispiel: |
CONCAT_WS('-', 'Hello', 'Oracle') gibt Hello-Oracle zurück
Wenn ein untergeordnetes Element der Funktion ein Array ist, wird das Array vereinfacht:
|
INITCAP(string) | Gibt die Zeichenfolge so zurück, dass jedes Wort mit einem Großbuchstaben beginnt, die anderen Buchstaben Kleinbuchstaben sind und die einzelnen Wörter durch ein Leerzeichen getrennt werden. | INITCAP('oRACLE sql') gibt Oracle Sql zurück |
INSTR(string, substring[start_position]) | Gibt den (1-basierten) Index des ersten Vorkommens von substring in string zurück. | INSTR('OracleSQL', 'SQL') gibt 7 zurück |
LOWER(string) | Gibt die Zeichenfolge zurück, wobei alle Buchstaben in Kleinbuchstaben umgewandelt werden. | LOWER('ORACLE') gibt oracle zurück |
LENGTH(string) | Gibt die Länge der Zeichenfolge in Zeichen oder die Anzahl der Byte von Binärdaten zurück. Nachgestellte Leerzeichen werden mitgezählt. | LENGTH('Oracle') gibt 6 zurück |
LTRIM(string) | Gibt die Zeichenfolge zurück, wobei vorangestellte Leerzeichen von links entfernt werden. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Gibt das Argument zurück, das nicht Null ist. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Sucht und extrahiert die Zeichenfolge, die einem regulären Ausdrucksmuster aus der Eingabezeichenfolge entspricht. Wenn der optionale Erfassungsgruppenindex angegeben ist, extrahiert die Funktion die spezifische Gruppe. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) gibt 22 zurück |
REPLACE(string, search, replacement) | Ersetzt alle Vorkommen von search durch replacement .Wird Wenn | REPLACE('ABCabc', 'abc', 'DEF') gibt ABCDEF zurück |
RTRIM(string) | Gibt die Zeichenfolge zurück, wobei vorangestellte Leerzeichen von rechts entfernt werden. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Gibt die erste Teilzeichenfolge ab der Position zurück. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) gibt rac zurück |
Für Zahlen, TO_CHAR(expr) und für Datumsangaben TO_CHAR(expr, format[, locale]) | Konvertiert Zahlen und Datumsangaben in Zeichenfolgen. Für Zahlen ist kein Format erforderlich. Verwenden Sie für Datumsangaben dasselbe Format wie DATE_FORMAT , das unter Datums- und Zeitfunktionen beschrieben wird. Das Standardgebietsschema ist en-US . Siehe unterstützte Sprachtags.In Pipelineausdrücken muss
| Zahlenbeispiel: Datumsbeispiel: |
UPPER(string) | Gibt eine Zeichenfolge zurück, wobei alle Buchstaben in Großbuchstaben geändert werden. | UPPER('oracle') gibt ORACLE zurück |
LPAD(str, len[, pad]) | Gibt eine Zeichenfolge zurück, die links mit angegebenen Zeichen auf eine bestimmte Länge aufgefüllt wird. Wenn Sie das pad-Zeichen auslassen, wird standardmäßig ein Speicherplatz verwendet. | LPAD('ABC', 5, '*') gibt '**ABC' zurück |
RPAD(str, len[, pad]) | Gibt eine Zeichenfolge zurück, die rechts mit angegebenen Zeichen auf eine bestimmte Länge aufgefüllt wird. Wenn Sie das pad-Zeichen auslassen, wird standardmäßig ein Speicherplatz verwendet. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Funktion | Beschreibung | Beispiel |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Gibt den Wert zurück, für den eine Bedingung erfüllt wird. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END gibt ABC zurück, wenn 1> 0 . Andernfalls wird XYZ zurückgegeben |
AND | Der logische AND-Operator. Gibt "true" zurück, wenn beide Operanden wahr sind. Andernfalls wird "false" zurückgegeben. | (x = 10 AND y = 20) gibt "true" zurück, wenn x gleich 10 und y gleich 20 ist. Wenn einer der Operanden nicht wahr ist, wird "false" zurückgegeben |
OR | Der logische OR-Operator. Gibt "true" zurück, wenn einer der Operanden wahr ist oder beide wahr sind. Andernfalls wird "false" zurückgegeben. | (x = 10 OR y = 20) gibt "false" zurück, wenn x nicht gleich 10 und y nicht gleich 20 ist. Wenn einer der Operanden wahr ist, wird "true" zurückgegeben |
NOT | Der logische NOT-Operator. | |
LIKE | Ermittelt durch Mustervergleich, ob die Zeichenfolge string1 mit dem Muster in string2 übereinstimmt. | |
= | Führt einen Gleichheitstest aus. Gibt "true" zurück, wenn expr1 gleich expr2 ist. Andernfalls wird "false" zurückgegeben. | x = 10 gibt "true" zurück, wenn der Wert von x gleich 10 ist. Andernfalls wird "false" zurückgegeben |
!= | Führt einen Ungleichheitstest aus. Gibt "true" zurück, wenn expr1 nicht gleich expr2 ist. Andernfalls wird "false" zurückgegeben. | x != 10 gibt "false" zurück, wenn der Wert von x gleich 10 ist. Andernfalls wird "true" zurückgegeben |
> | Testet, ob ein Ausdruck "größer als" ist. Gibt "true" zurück, wenn expr1 größer als expr2 ist. | x > 10 gibt "true" zurück, wenn der Wert von x größer als 10 ist. Andernfalls wird "false" zurückgegeben |
>= | Testet, ob ein Ausdruck "größer/gleich" ist. Gibt "true" zurück, wenn expr1 größer als oder gleich expr2 ist. | x >= 10 gibt "true" zurück, wenn der Wert von x größer als oder gleich 10 ist. Andernfalls wird "false" zurückgegeben |
< | Testet, ob ein Ausdruck "kleiner als" ist. Gibt "true" zurück, wenn expr1 kleiner als expr2 ist. | x < 10 gibt "true" zurück, wenn der Wert von x kleiner als 10 ist. Andernfalls wird "false" zurückgegeben |
<= | Testet, ob ein Ausdruck "kleiner/gleich" ist. Gibt "true" zurück, wenn expr1 kleiner oder gleich expr2 ist. | x <= 10 gibt "true" zurück, wenn der Wert von x kleiner als 10 ist. Andernfalls wird "false" zurückgegeben |
|| | Verkettet zwei Zeichenfolgen. | 'XYZ' || 'hello' gibt 'XYZhello' zurück |
BETWEEN | Bewertet einen Bereich. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Testet, ob ein Ausdruck mit einer Werteliste übereinstimmt. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Funktion | Beschreibung | Beispiel |
---|---|---|
NUMERIC_ID() | Generiert eine universell eindeutige ID, die eine 64-Bit-Zahl für jede Zeile darstellt. | NUMERIC_ID() gibt beispielsweise 3458761969522180096 und 3458762008176885761 zurück |
ROWID() | Generiert monoton aufsteigende 64-Bit-Zahlen. | ROWID() gibt beispielsweise 0 , 1 , 2 usw. zurück |
UUID() | Generiert eine universell eindeutige ID, die in einer 128-Bit-Zeichenfolge für jede Zeile besteht. | UUID() gibt zum Beispiel 20d45c2f-0d56-4356-8910-162f4f40fb6d zurück |
MONOTONICALLY_INCREASING_ID() |
Generiert eindeutige, monoton aufsteigende 64-Bit-Ganzzahlen, die keine aufeinanderfolgenden Zahlen sind. | MONOTONICALLY_INCREASING_ID() gibt beispielsweise 8589934592 und 25769803776 zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
COALESCE(value, value [, value]*) | Gibt das erste Nicht-Null-Argument zurück, falls vorhanden. Andernfalls wird Null zurückgegeben. | COALESCE(NULL, 1, NULL) gibt 1 zurück |
NULLIF(value, value) | Gibt Null zurück, wenn die beiden Werte gleich sind. Andernfalls wird der erste Wert zurückgegeben. | NULLIF('ABC','XYZ') gibt ABC zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
SCHEMA_OF_JSON(string) | Parst eine JSON-Zeichenfolge und leitet das Schema im DDL-Format ab. |
|
FROM_JSON(column, string) | Parst eine Spalte mit einer JSON-Zeichenfolge in einen der folgenden Typen mit dem angegebenen Schema.
|
|
TO_JSON(column) | Konvertiert eine Spalte vom Typ "Struct" oder "Struct-Array" oder vom Typ "Map" oder "Map-Array" in eine JSON-Zeichenfolge. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) gibt eine JSON-Zeichenfolge {"s1":[1,2,3],"s2":{"key":"value"}} zurück |
TO_MAP(string,column[,string,column]*) | Erstellt eine neue Spalte vom Typ "Map". Die Eingabespalten müssen als Schlüssel/Wert-Paare gruppiert werden. Die Eingabeschlüsselspalten dürfen nicht Null sein und müssen alle denselben Datentyp aufweisen. Die Eingabewertspalten müssen alle denselben Datentyp aufweisen. |
|
TO_STRUCT(string,column[,string,column]*) | Erstellt eine neue Spalte vom Typ "Struct". Die Eingabespalten müssen als Schlüssel/Wert-Paare gruppiert werden. |
|
TO_ARRAY(column[,column]*) | Erstellt eine neue Spalte vom Typ "Array". Die Eingabespalten müssen alle denselben Datentyp aufweisen. |
|
Datenflussoperatoren, die das Erstellen von Ausdrücken und hierarchischen Datentypen unterstützen, können Funktionen höherer Ordnung verwenden.
Die folgenden Operatoren werden unterstützt:
-
Aggregieren
-
Ausdruck
-
Filter
-
Join
-
Referenz
-
Teilen
-
Drehen
Funktion | Beschreibung | Beispiel |
---|---|---|
TRANSFORM(column, lambda_function) | Nimmt ein Array und eine anonyme Funktion an. Richten Sie ein neues Array ein, indem Sie die Funktion auf jedes Element anwenden und das Ergebnis dem Ausgabearray zuweisen. | Für ein Eingabearray mit Ganzzahlen [1, 2, 3] gibt TRANSFORM(array, x -> x + 1) ein neues Array von [2, 3, 4] zurück. |
TRANSFORM_KEYS(column, lambda_function) | Nimmt eine Karte und eine Funktion mit 2 Argumenten (Schlüssel und Wert) und gibt eine Karte zurück, in der die Schlüssel den Typ des Ergebnisses der Lambda-Funktion haben und die Werte den Typ der Spaltenzuordnungswerte haben. | Bei einer Eingabezuordnung mit Ganzzahlschlüsseln und Zeichenfolgenwerten von {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} gibt TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) eine neue Zuordnung von {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} zurück. |
TRANSFORM_VALUES(column, lambda_function) | Nimmt eine Karte und eine Funktion mit 2 Argumenten (Schlüssel und Wert) und gibt eine Karte zurück, in der die Werte den Typ des Ergebnisses der Lambda-Funktionen haben und die Schlüssel den Typ der Spaltenzuordnungsschlüssel haben. | Bei einer Eingabezuordnung mit Zeichenfolgenschlüsseln und Zeichenfolgenwerten von {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} gibt TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) eine neue Zuordnung von {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} zurück. |
ARRAY_SORT(array(...), lambda_function) |
Nur der Ausdrucksoperator unterstützt Nimmt ein Array an und sortiert nach der angegebenen Funktion, die 2 Argumente annimmt. Die Funktion muss -1, 0 oder 1 zurückgeben, je nachdem, ob das erste Element kleiner, gleich oder größer als das zweite Element ist. Wenn die Funktion ausgelassen wird, wird das Array in aufsteigender Reihenfolge sortiert. |
Das zurückgegebene Array ist: [1,5,6] |
Sie können Ausdrücke duplizieren, die einem Ausdrucksoperator hinzugefügt wurden.
Sie können die Reihenfolge der Ausdrücke ändern, die einem Ausdrucksoperator hinzugefügt wurden.
Aggregatoperator
Mit dem Aggregatoperator können Sie Berechnungen wie Summe oder Anzahl für alle Zeilen oder eine Gruppe von Zeilen ausführen, um neue, derivative Attribute zu erstellen.
Mit dem Expression Builder können Sie Elemente visuell auswählen, um einen Ausdruck im Editor zu erstellen. Sie können einen Ausdruck auch selbst manuell schreiben.
Der Bereich "Ausdruck hinzufügen" umfasst zwei Abschnitte: Informationen zu Ausdrücken und Expression Builder. Mit den Feldern im Abschnitt Informationen zu Ausdrücken können Sie einen Namen und Datentyp für den Ausdruck angeben. Sie können den Ausdruck auch so erstellen, dass er auf zwei oder mehr Attribute angewendet wird. Wenn Sie mit komplexen Datentypen wie "Map", "Array" und "Struct" arbeiten, die eventuell Ebenen verschachtelter Typen aufweisen, können Sie festlegen, dass der Builder den Datentyp aus dem eingegebenen Ausdruck erkennt. Wenn der Builder den Datentyp ableitet, können Sie den Datentyp in der Vorschau anzeigen und aktualisieren und den Ausdruck validieren.
Im Abschnitt Expression Builder werden die Elemente aufgeführt, mit denen Sie einen Ausdruck erstellen können. Die Elemente, die Sie in einem Ausdruck verwenden können, umfassen eingehende Attribute, Parameter und Funktionen. Doppelklicken Sie auf ein Element, oder ziehen Sie es aus der Liste, um es dem Editor hinzuzufügen und den Ausdruck zu erstellen, oder schreiben Sie den Ausdruck selbst manuell. Sie können den Ausdruck vor dem Erstellen validieren.
Unter Eingehend werden die Attribute des vorgelagerten Operators angezeigt, die bei diesem Ausdrucksoperator kommen. Unter der Attributliste befindet sich ein Kontrollkästchen, mit dem Sie Ausschlussregeln anwenden können. Wenn Sie eingehende Attribute aus der Ausgabe dieses Ausdrucks ausschließen möchten, aktivieren Sie das Kontrollkästchen Eingehende Attribute ausschließen. Fügen Sie dann über das Menü die eingehenden Attribute hinzu, die Sie aus der Ausgabe ausschließen möchten. Auf jedes Attribut, das Sie ausschließen möchten, wird eine Ausschlussregel angewendet. Sie können Attribute nur ausschließen, wenn Sie den Ausdruck zum ersten Mal hinzufügen. Wenn Sie den Ausdruck bearbeiten, ist das Kontrollkästchen Eingehende Attribute ausschließen nicht verfügbar.
Parameter sind die Ausdrucksparameter, die dem Datenfluss mit dem Condition Builder (Filter-, Join-, Lookup- und Aufteilungsoperatoren) oder Expression Builder (Ausdrucks- und Aggregatoperatoren) hinzugefügt wurden. Ein Ausdrucksparameter hat einen Namen, einen Typ und einen Standardwert. Siehe Ausdrucksparameter hinzufügen.
Funktionen sind Vorgänge, die für an die Funktion übergebene Argumente ausgeführt werden. Funktionen berechnen, bearbeiten oder extrahieren Datenwerte aus Argumenten. Im Folgenden finden Sie eine Liste der Funktionen, mit denen Sie Ausdrücke erstellen können:
Funktion | Beschreibung | Beispiel |
---|---|---|
COUNT(value[, value]*) | Gibt die Anzahl der Zeilen zurück, für die mindestens ein angegebener Ausdruck nicht Null ist. | COUNT(expr1) |
COUNT(*) | Gibt die Gesamtanzahl der abgerufenen Zeilen zurück, einschließlich Zeilen, die Null enthalten. | COUNT(*) |
MAX(value) | Gibt den Höchstwert des Arguments zurück. | MAX(expr) |
MIN(value) | Gibt den Mindestwert des Arguments zurück. | MIN(expr) |
SUM(numeric) | Gibt die aus Werten einer Gruppe berechnete Summe zurück. | SUM(expr1) |
AVG(numeric) | Gibt den Durchschnitt numerischer Werte in einem Ausdruck zurück. | AVG(AGGREGATE_1.src1.attribute1) |
LISTAGG(column[, delimiter]) WITHIN GROUP (order_by_clause) | Verkettet Werte der Eingabespalte mit dem angegebenen Begrenzungszeichen für jede Gruppe basierend auf der Order-Klausel. column enthält die Werte, die Sie im Ergebnis verketten möchten. Das Trennzeichen trennt die column-Werte im Ergebnis. Wenn Sie kein Begrenzungszeichen angeben, wird ein leeres Zeichen verwendet. order_by_clause bestimmt die Reihenfolge, in der die verketteten Werte zurückgegeben werden. Diese Funktion kann nur als Aggregator und mit oder ohne Gruppierung verwendet werden. Bei Verwendung ohne Gruppierung ist das Ergebnis eine einzelne Zeile. Wenn Sie eine Gruppierung verwenden, gibt die Funktion eine Zeile für jede Gruppe zurück. | Sie verwenden eine Tabelle mit zwei Spalten:
Beispiel 1: Ohne Gruppierung
Beispiel 2: Gruppierung nach
|
Datenflussoperatoren, die das Erstellen von Ausdrücken und hierarchischen Datentypen unterstützen, können Funktionen höherer Ordnung verwenden.
Die folgenden Operatoren werden unterstützt:
-
Aggregieren
-
Ausdruck
-
Filter
-
Join
-
Referenz
-
Teilen
-
Drehen
Funktion | Beschreibung | Beispiel |
---|---|---|
TRANSFORM(column, lambda_function) | Nimmt ein Array und eine anonyme Funktion an. Richten Sie ein neues Array ein, indem Sie die Funktion auf jedes Element anwenden und das Ergebnis dem Ausgabearray zuweisen. | Für ein Eingabearray mit Ganzzahlen [1, 2, 3] gibt TRANSFORM(array, x -> x + 1) ein neues Array von [2, 3, 4] zurück. |
TRANSFORM_KEYS(column, lambda_function) | Nimmt eine Karte und eine Funktion mit 2 Argumenten (Schlüssel und Wert) und gibt eine Karte zurück, in der die Schlüssel den Typ des Ergebnisses der Lambda-Funktion haben und die Werte den Typ der Spaltenzuordnungswerte haben. | Bei einer Eingabezuordnung mit Ganzzahlschlüsseln und Zeichenfolgenwerten von {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} gibt TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) eine neue Zuordnung von {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} zurück. |
TRANSFORM_VALUES(column, lambda_function) | Nimmt eine Karte und eine Funktion mit 2 Argumenten (Schlüssel und Wert) und gibt eine Karte zurück, in der die Werte den Typ des Ergebnisses der Lambda-Funktionen haben und die Schlüssel den Typ der Spaltenzuordnungsschlüssel haben. | Bei einer Eingabezuordnung mit Zeichenfolgenschlüsseln und Zeichenfolgenwerten von {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} gibt TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) eine neue Zuordnung von {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} zurück. |
ARRAY_SORT(array(...), lambda_function) |
Nur der Ausdrucksoperator unterstützt Nimmt ein Array an und sortiert nach der angegebenen Funktion, die 2 Argumente annimmt. Die Funktion muss -1, 0 oder 1 zurückgeben, je nachdem, ob das erste Element kleiner, gleich oder größer als das zweite Element ist. Wenn die Funktion ausgelassen wird, wird das Array in aufsteigender Reihenfolge sortiert. |
Das zurückgegebene Array ist: [1,5,6] |
Eindeutiger Operator
Mit dem eindeutigen Operator werden nur verschiedene Zeilen zurückgegeben, deren Werte sich unterscheiden.
Sortieroperator
Mit dem Sortieroperator können Sie Daten in auf- oder absteigender Reihenfolge sortieren.
Wenn Sie einen Sortieroperator verwenden, sollten Sie den Sortieroperator anwenden, nachdem Sie andere Operatoren angewendet haben. Dadurch wird sichergestellt, dass der Sortieroperator unmittelbar vor dem Zieloperator bleibt, sodass Daten in einer bestimmten Reihenfolge in das Ziel eingefügt werden können.
Wenn Sie einen Sortieroperator verwenden, wenden Sie den Sortieroperator nach anderen Modellierungsoperatoren und vor dem Operator an, der eine Sortierung von Daten erfordert.
Beispiel: Wenden Sie den Sortieroperator vor einem Zieloperator an, um Daten in einer bestimmten Sortierreihenfolge im Ziel einzufügen.
Nachdem Sie einen Sortieroperator auf der Leinwand hinzugefügt und mit einem anderen Operator verbunden haben, können Sie eine Sortierbedingung hinzufügen.
Im Bereich "Sortierbedingung hinzufügen" können Sie Attribute zum Sortieren aus den aufgeführten Feldern auswählen oder Attributnamen anhand von Mustern filtern. Beim Datentyp "Zeichenfolge" wird der Sortiervorgang basierend auf der lexikografischen Ordnung ausgeführt.
So fügen Sie Sortierbedingungen hinzu:
- Gehen Sie in der Registerkarte Details zum Abschnitt Sortierbedingungen, und wählen Sie Hinzufügen aus.
Im Bereich "Sortierbedingung hinzufügen" werden alle Attributfelder angezeigt, die aus der Quelltabelle abgerufen wurden.
- Wählen Sie im Bereich Sortierbedingung hinzufügen das Attribut aus, nach dem die Daten sortiert werden sollen.
- Um Attribute mithilfe von Namensmustern zu filtern, geben Sie ein Namensmuster ein, z.B. *CITY*.
- Wählen Sie unter Sortierfolge die Option Aufsteigend oder Absteigend aus, und wählen Sie Hinzufügen aus.
Jede hinzugefügte Bedingung wird in der Liste der Sortierbedingungen angezeigt.
Hinweis
Sie können mehrere Sortierbedingungen nacheinander hinzufügen. Die Sortierung erfolgt basierend auf der Reihenfolge der Sortierbedingungen in der Liste. Beispiel: Die Sortierung erfolgt zuerst basierend auf der ersten Bedingung in der Liste. Anschließend werden die sortierten Daten basierend auf der zweiten Bedingung erneut sortiert und so weiter.
Verschieben Sie die Sortierbedingungen in der Liste nach oben oder nach unten, um die Sortierung zu priorisieren.
Wenn Sie die Sortierbedingungen nach oben oder unten verschieben, können Sie zuerst nach einer Bedingung mit hoher Priorität sortieren und dann die sortierten Daten nach der nächsten Bedingung in der Liste erneut sortieren. Beispiel: Um zuerst nach Adresse und dann nach PLZ zu sortieren, verschieben Sie die Sortierbedingung mit der Adresse an den Anfang.
So priorisieren Sie Sortierbedingungen:
So bearbeiten Sie Sortierbedingungen:
Sie können Sortierbedingungen einzeln oder in einem Bulkvorgang löschen.
So löschen Sie Sortierbedingungen:
- Gehen Sie auf der Registerkarte Details zum Abschnitt Sortierbedingungen.
-
Wenn Sie Sortierbedingungen nacheinander löschen möchten, wählen Sie das Menü "Aktionen" (
) aus, das der zu löschenden Sortierbedingung entspricht.
- Wenn Sie mehrere Sortierbedingungen löschen möchten, aktivieren Sie die entsprechenden Kontrollkästchen, und wählen Sie oben in der Liste die Option Löschen aus.
Vereinigungsmengenoperator
Mit dem Gewerkschaftsoperator können Sie einen Gewerkschaftsvorgang zwischen zwei oder mehr Datasets ausführen.
Sie können einen Vereinigungsmengenvorgang für bis zu zehn Quelloperatoren ausführen. Sie müssen mindestens zwei Quelleingaben konfigurieren. Sie können den Vereinigungsmengenvorgang ausführen, indem Sie Attributnamen für die Quelleingabeattribute abgleichen, oder Sie können die Attribute nach ihrer Attributposition abgleichen.
Sehen Sie sich die folgenden beiden Beispiele für Datenentitys an. Datenentity 1 wird als primäre Eingabe festgelegt. Die resultierende Datenentity zeigt, wie die Daten aus den beiden Eingaben bei einem Vorgang "Vereinigungsmenge nach Name" kombiniert werden. Die resultierende Datenentity verwendet den Attributnamen, die Reihenfolge und den Datentyp aus der Datenentity mit der primären Eingabe.
Datenentity 1, primäre Eingabe
Abteilung | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Versand | 1500 | Southlake, Texas |
Buchhaltung | 1700 | New Jersey |
Datenentity 2
Warehouse | LOCATION-ID | Abteilung |
---|---|---|
Denver | 1600 | Leistungen |
New York | 1400 | Bau |
Resultierende Datenentity
Abteilung | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Versand | 1500 | Southlake, Texas |
Buchhaltung | 1700 | New Jersey |
Leistungen | 1600 | Denver |
Bau | 1400 | New York |
Sehen Sie sich die folgenden beiden Beispiele für Datenentitys an. Datenentity 2 wird als primäre Eingabe festgelegt. Die resultierende Datenentity zeigt, wie die Daten aus den beiden Eingaben bei einem Vorgang "Vereinigungsmenge nach Position" kombiniert werden. Die resultierende Datenentity verwendet den Attributnamen, die Reihenfolge und den Datentyp aus der Datenentity mit der primären Eingabe.
Datenentity 1
Abteilung | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Versand | 1500 | Southlake, Texas |
Buchhaltung | 1700 | New Jersey |
Datenentity 2, primäre Eingabe
Warehouse | LOCATION-ID | Abteilung |
---|---|---|
Denver | 1600 | Leistungen |
New York | 1400 | Bau |
Resultierende Datenentity
Warehouse | LOCATION-ID | Abteilung |
---|---|---|
Denver | 1600 | Leistungen |
New York | 1400 | Bau |
IT | 1400 | San Francisco |
Versand | 1500 | Southlake, Texas |
Buchhaltung | 1700 | New Jersey |
Minusoperator
Mit dem Minusoperator können Sie zwei Datenentitys vergleichen und die Zeilen zurückgeben, die in einer Entity, aber nicht in der anderen Entity vorhanden sind.
Sie können auswählen, ob doppelte Zeilen in den resultierenden Daten beibehalten oder entfernt werden sollen.
Sie können einen Minusvorgang nur für zwei Quelloperatoren ausführen. Sie können den Minusvorgang ausführen, indem Sie Attributnamen für die Quelleingabeattribute abgleichen, oder Sie können die Attribute nach ihrer Attributposition abgleichen.
Sehen Sie sich die folgenden beiden Beispiele für Datenentitys an. Datenentity 1 wird als primäre Eingabe festgelegt. Die resultierende Datenentity zeigt, wie die Daten aus den beiden Eingaben bei einem Vorgang "Minus nach Name" subtrahiert werden. Die resultierende Datenentity verwendet den Attributnamen, die Reihenfolge und den Datentyp aus der Datenentity mit der primären Eingabe.
Datenentity 1, primäre Eingabe
Abteilung | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Versand | 1500 | Austin |
Buchhaltung | 1700 | New Jersey |
Datenentity 2
Abteilung | Warehouse | LOCATION-ID |
---|---|---|
Leistungen | Denver | 1600 |
IT | San Francisco | 1400 |
Resultierende Datenentity
Abteilung | LOCATION-ID | Warehouse |
---|---|---|
Versand | 1500 | Austin |
Buchhaltung | 1700 | New Jersey |
Sehen Sie sich die folgenden beiden Beispiele für Datenentitys an. Datenentity 2 wird als primäre Eingabe festgelegt. Die resultierende Datenentity zeigt, wie die Daten aus den beiden Eingaben bei einem Vorgang "Minus nach Position" subtrahiert werden. Die resultierende Datenentity verwendet den Attributnamen, die Reihenfolge und den Datentyp aus der Datenentity mit der primären Eingabe.
Datenentity 1
Abteilung | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Versand | 1500 | Austin |
Buchhaltung | 1700 | New Jersey |
Datenentity 2, primäre Eingabe
Abteilungsname | Standort | Warehouse-Ort |
---|---|---|
Leistungen | 1600 | Denver |
IT | 1400 | San Francisco |
Resultierende Datenentity
Abteilungsname | Standort | Warehouse-Ort |
---|---|---|
Leistungen | 1600 | Denver |
Schnittmengenoperator
Mit dem Schnittmengenoperator können Sie zwei oder mehr Datenentitys vergleichen und die Zeilen zurückgeben, die in den verbundenen Entitys vorhanden sind.
Sie können auswählen, ob doppelte Zeilen in den resultierenden Daten beibehalten oder entfernt werden sollen.
Sie können einen Schnittmengenvorgang für zwei oder mehr Quelloperatoren ausführen. Sie können den Vorgang ausführen, indem Sie Attributnamen für die Quelleingabeattribute abgleichen, oder Sie können die Attribute nach ihrer Attributposition abgleichen.
Sehen Sie sich die folgenden beiden Beispiele für Datenentitys an. Datenentity 1 wird als primäre Eingabe festgelegt. Die resultierende Datenentity zeigt, wie für die Daten aus den beiden Eingaben die Schnittmenge nach Attributname gebildet wird. Die resultierende Datenentity verwendet den Attributnamen, die Reihenfolge und den Datentyp aus der Datenentity mit der primären Eingabe.
Datenentity 1, primäre Eingabe
Abteilung | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Versand | 1500 | Austin |
Buchhaltung | 1700 | New Jersey |
Datenentity 2
Abteilung | Warehouse | LOCATION-ID |
---|---|---|
Leistungen | Denver | 1600 |
IT | San Francisco | 1400 |
Resultierende Datenentity
Abteilung | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Sehen Sie sich die folgenden beiden Beispiele für Datenentitys an. Datenentity 2 wird als primäre Eingabe festgelegt. Die resultierende Datenentity zeigt, wie für die Daten aus den beiden Eingaben die Schnittmenge nach Attributposition gebildet wird. Die resultierende Datenentity verwendet den Attributnamen, die Reihenfolge und den Datentyp aus der Datenentity mit der primären Eingabe.
Datenentity 1
Abteilung | LOCATION-ID | Warehouse |
---|---|---|
IT | 1400 | San Francisco |
Versand | 1500 | Austin |
Buchhaltung | 1700 | New Jersey |
Datenentity 2, primäre Eingabe
Abteilungsname | Standort | Warehouse-Ort |
---|---|---|
Leistungen | 1600 | Denver |
IT | 1400 | San Francisco |
Resultierende Datenentity
Abteilungsname | Standort | Warehouse-Ort |
---|---|---|
IT | 1400 | San Francisco |
Aufteilungsoperator
Mit dem Aufteilungsoperator können Sie eine Eingabedatenquelle basierend auf Aufteilungsbedingungen, die in einer Sequenz ausgewertet werden, auf zwei oder mehr Ausgabeports aufteilen.
Jede Aufteilungsbedingung hat einen Ausgabeport. Daten, die eine Bedingung erfüllen, werden an den entsprechenden Ausgabeport geleitet.
Standardmäßig wird ein Aufteilungsoperator mit der Bedingung "Keine Übereinstimmung" konfiguriert, die immer als letzte Bedingung in der Sequenz verfügbar ist. Sie können keine eigene Bedingung zur Bedingung "Keine Übereinstimmung" hinzufügen. Sie können die Bedingung "Keine Übereinstimmung" auch nicht löschen.
Der Operator wertet die Bedingungen nacheinander aus. Nachdem alle Bedingungen in der Sequenz ausgewertet wurden, werden Daten, die keine Bedingung erfüllen, an den Ausgabeport für "Keine Übereinstimmung" geleitet.
Angenommen, Sie verwenden die Datenentity BANK mit den Attributen BANK_ID und BANK_NAME.
Sie richten zwei Aufteilungsbedingungen ein. Die vollständige Sequenz, einschließlich der Bedingung "Keine Übereinstimmung" sieht wie folgt aus:
Ausgabeport für Bedingung | Bedingung |
---|---|
CONDITION1 | SPLIT_1.BANK.BANK_ID<102 |
CONDITION2 | SPLIT_1.BANK.BANK_ID<104 |
UNMATCHED | Die Standardbedingung UNMATCHED (Keine Übereinstimmung) leitet alle Daten, die die anderen Bedingungen in der Sequenz nicht erfüllen, an den Ausgabeport für UNMATCHED weiter |
Datenentity BANK
Die Datenentity umfasst vier Zeilen.
BANK_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
102 | B Bank 102 |
103 | C Bank 103 |
104 | D Bank 104 |
Ausgabe für Condition1, erste übereinstimmende Bedingung
CONDITION1 gibt eine übereinstimmende Zeile zurück.
BANK_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
Ausgabe für Condition2, erste übereinstimmende Bedingung
CONDITION2 gibt zwei übereinstimmende Zeilen zurück (aus den nicht übereinstimmenden Zeilen nach CONDITION1).
BANK_ID | BANK_NAME |
---|---|
102 | B Bank 102 |
103 | C Bank 103 |
Ausgabe für Bedingung "Keine Übereinstimmung", erste übereinstimmende Bedingung
Bedingung UNMATCHED gibt die verbleibende Zeile zurück.
BANK_ID | BANK_NAME |
---|---|
104 | D Bank 104 |
Ausgabe für Condition1, alle übereinstimmenden Bedingungen
CONDITION1 gibt eine übereinstimmende Zeile zurück.
BANK_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
Ausgabe für Condition2, alle übereinstimmenden Bedingungen
Alle Daten werden nach CONDITION2 ausgewertet, wobei drei übereinstimmende Zeilen zurückgegeben werden.
BANK_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
102 | B Bank 102 |
103 | C Bank 103 |
Ausgabe für Bedingung "Keine Übereinstimmung", alle übereinstimmenden Bedingungen
Bedingung UNMATCHED gibt die Zeilen zurück, die CONDITION1 und CONDITION2 nicht erfüllen.
BANK_ID | BANK_NAME |
---|---|
104 | D Bank 104 |
Wenn Sie einen Aufteilungsoperator auf der Leinwand hinzufügen, wird standardmäßig das Aufteilungsoperatorsymbol eingeblendet, und die Aufteilungsbedingung "Keine Übereinstimmung" wird angezeigt. Die Bedingung "Keine Übereinstimmung" leitet alle Daten weiter, die die anderen Bedingungen nicht erfüllen, die Sie der Sequenz hinzufügen.
Mit dem Bedingungsbuilder können Sie Elemente visuell auswählen, um eine Aufteilungsbedingung zu erstellen. Sie können eine Aufteilungsbedingung auch manuell im Editor eingeben.
Sie können Aufteilungsbedingungen zu einer vorhandenen Sequenz von Bedingungen hinzufügen. Aufteilungsbedingungen werden am Ende der Sequenz vor der Bedingung "Keine Übereinstimmung" hinzugefügt. Sie können keine eigene Bedingung zur Bedingung "Keine Übereinstimmung" hinzufügen.
Die Elemente, die Sie in einer Aufteilungsbedingung verwenden können, umfassen eingehende Attribute, Parameter und Funktionen. Sie können ein Element in der Liste doppelklicken oder ziehen, um es dem Editor hinzuzufügen und eine Bedingung zu erstellen. Sie können die Bedingung vor dem Erstellen validieren.
Unter Eingehend werden die Attribute aus dem Upstreamport angezeigt. Beispiel:
SPLIT_1.BANK.BANK_NAME='ABC Bank'
Parameter sind die Ausdrucksparameter, die dem Datenfluss mit dem Condition Builder (Filter-, Join-, Lookup- und Aufteilungsoperatoren) oder Expression Builder (Ausdrucks- und Aggregatoperatoren) hinzugefügt wurden. Ein Ausdrucksparameter hat einen Namen, einen Typ und einen Standardwert. Siehe Ausdrucksparameter hinzufügen.
Angenommen, Sie erstellen einen VARCHAR
-Parameter mit dem Namen P_VARCHAR_NAME
und setzen den Standardwert auf ABC BANK
. Anschließend können Sie den Parameter in einer Aufteilungsbedingung wie folgt verwenden:
SPLIT_1.BANK.BANK_NAME=$P_VARCHAR_NAME
Funktionen sind die in Data Integration verfügbaren Funktionen, die Sie in einer Bedingung verwenden können. Funktionen sind Vorgänge, die für an die Funktion übergebene Argumente ausgeführt werden. Funktionen berechnen, bearbeiten oder extrahieren Datenwerte aus Argumenten.
Angenommen, Sie erstellen einen VARCHAR
-Parameter mit dem Namen P_VARCHAR_LIKE
und setzen den Standardwert auf B%
. Anschließend können Sie den Parameter in einer Aufteilungsbedingung wie folgt verwenden:
SPLIT_1.BANK.BANK_NAME LIKE $P_VARCHAR_LIKE
Im Folgenden finden Sie eine Liste der Funktionen, die Sie beim Erstellen von Bedingungen hinzufügen können:
Funktion | Beschreibung | Beispiel |
---|---|---|
MD5(all data types) | Berechnet eine MD5 -Prüfsumme des Datentyps und gibt einen Zeichenfolgenwert zurück. | MD5(column_name) |
SHA1(all data types) | Berechnet einen SHA-1 -Hashwert des Datentyps und gibt einen Zeichenfolgenwert zurück. | SHA1(column_name) |
SHA2(all data types, bitLength) | Berechnet einen SHA-2 -Hashwert des Datentyps und gibt einen Zeichenfolgenwert zurück. bitLength ist eine Ganzzahl. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Berechnet einen Hashwert für
Oracle wendet die Hash-Funktion auf die Kombination aus |
|
Funktion | Beschreibung | Beispiel |
---|---|---|
ABS(numeric) | Gibt die absolute Potenz des Wertes numeric zurück. | ABS(-1) |
CEIL(numeric) | Gibt die kleinste Ganzzahl zurück, die nicht größer als der Wert numeric ist. | CEIL(-1,2) |
FLOOR(numeric) | Gibt die größte Ganzzahl zurück, die nicht größer als der Wert numeric ist. | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Gibt den Rest zurück, nachdem numeric1 durch numeric2 geteilt wurde. | MOD(8,2) |
POWER(numeric1, numeric2) | Entspricht numeric1 hoch numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Gibt numeric1 gerundet auf numeric2 Dezimalstellen zurück. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Gibt numeric1 gekürzt auf numeric2 Dezimalstellen zurück. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Konvertiert expr basierend auf den Angaben für format und locale (optional) in eine Zahl. Das Standardgebietsschema ist en-US . Unterstützte Sprachtags.Unterstützte Formatmuster:
|
|
Funktion | Beschreibung | Beispiel |
---|---|---|
CURRENT_DATE |
Gibt das aktuelle Datum zurück. | CURRENT_DATE gibt das aktuelle Datum zurück, z.B. 2023-05-26 |
CURRENT_TIMESTAMP |
Gibt das aktuelle Datum und die Zeit für die Session-Zeitzone zurück. | CURRENT_TIMESTAMP gibt das aktuelle Datum und die aktuelle Uhrzeit zurück, wie 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Gibt das Datum zurück, das number von Tagen nach dem angegebenen Datum date liegt. |
DATE_ADD('2017-07-30', 1) gibt 2017-07-31 zurück |
DATE_FORMAT(expr, format[, locale]) |
Formatiert Unterstützte Datumsformatmuster:
|
|
DAYOFMONTH(date) |
Gibt den Tag des Monats für das Datum zurück. | DAYOFMONTH('2020-12-25') gibt 25 zurück |
DAYOFWEEK(date) |
Gibt den Tag der Woche für das Datum zurück. | DAYOFWEEK('2020-12-25') gibt 6 für Freitag zurück. In den USA gilt der Sonntag als 1, der Montag als 2 usw. |
DAYOFYEAR(date) |
Gibt den Tag des Jahres für das Datum zurück. | DAYOFYEAR('2020-12-25') gibt 360 zurück |
WEEKOFYEAR(date) |
Gibt die Woche des Jahres für das Datum zurück. |
|
HOUR(datetime) |
Gibt den Stundenwert für das Datum/die Uhrzeit zurück. | HOUR('2020-12-25 15:10:30') gibt 15 zurück |
LAST_DAY(date) |
Gibt den letzten Tag des Monats für das Datum zurück. | LAST_DAY('2020-12-25') gibt 31 zurück |
MINUTE(datetime) |
Gibt den Minutenwert für das Datum/die Uhrzeit zurück. | HOUR('2020-12-25 15:10:30') gibt 10 zurück |
MONTH(date) |
Gibt den Monatswert für das Datum zurück. | MONTH('2020-06-25') gibt 6 zurück |
QUARTER(date) |
Gibt das Quartal des Jahres zurück, in dem das Datum liegt. | QUARTER('2020-12-25') gibt 4 zurück |
SECOND(datetime) |
Gibt den Sekundenwert für das Datum/die Uhrzeit zurück. | SECOND('2020-12-25 15:10:30') gibt 30 zurück |
TO_DATE(string, format_string[, localeStr]) |
Parst den Zeichenfolgenausdruck mit dem Ausdruck format_string in ein Datum. Das Gebietsschema ist optional. Der Standardwert ist en-US . Unterstützte Sprachtags.In Pipelineausdrücken muss
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Konvertiert expr vom Typ "VARCHAR" basierend auf den Angaben für format_string und localeStr (optional) in einen TIMESTAMP-Wert.In Pipelineausdrücken muss
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') gibt ein TIMESTAMP-Objekt zurück, das 11am 10:10 Oct 11th, 2020 darstellt |
WEEK(date) |
Gibt den Wochenwert für das Datum zurück. |
WEEK('2020-06-25') gibt 4 zurück |
YEAR(date) |
Gibt den Jahreswert für das Datum zurück. | YEAR('2020-06-25') gibt 2020 zurück |
ADD_MONTHS(date_expr, number_months) |
Gibt das Datum nach dem Hinzufügen der angegebenen Anzahl von Monaten zum angegebenen Datum, zum Zeitstempel oder zur Zeichenfolge mit einem Format wie yyyy-MM-dd oder yyyy-MM-dd HH:mm:ss.SSS zurück. |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Gibt die Anzahl der Monate zwischen Eine Ganzzahl wird zurückgegeben, wenn beide Datumsangaben denselben Tag im Monat oder den letzten Tag im jeweiligen Monat angeben. Andernfalls wird die Differenz auf Basis von 31 Tagen pro Monat berechnet. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpretiert ein Datum, einen Zeitstempel oder eine Zeichenfolge als UTC-Zeit und konvertiert diese Zeit in einen Zeitstempel in der angegebenen Zeitzone. Verwenden Sie für eine Zeichenfolge ein Format wie Das Zeitzonenformat ist entweder eine regionsbasierte Zonen-ID (z.B. "Region/Ort", wie "Asia/Seoul") oder ein Zeitzonenversatz (z.B. UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') gibt 2017-07-14 03:40:00.0 zurück |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Konvertiert ein Datum, einen Zeitstempel oder eine Zeichenfolge in der angegebenen Zeitzone in einen UTC-Zeitstempel. Verwenden Sie für eine Zeichenfolge ein Format wie Das Zeitzonenformat ist entweder eine regionsbasierte Zonen-ID (z.B. "Region/Ort", wie "Asia/Seoul") oder ein Zeitzonenversatz (z.B. UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') gibt 2017-07-14 01:40:00.0 zurück
|
FROM_UNIXTIME(unix_time[, fmt]) |
Konvertiert die angegebene Unix-Zeit oder -Epoche in eine Zeichenfolge, die den Zeitstempel dieses Zeitpunkts in der aktuellen Systemzeitzone und im angegebenen Format darstellt. Hinweis: Die Unix-Zeit ist die Anzahl der Sekunden, die seit dem 1. Januar 1970 00:00:00 UTC verstrichen sind. Wenn |
Die Standardzeitzone in den Beispielen ist PST. |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Konvertiert die aktuelle oder angegebene Zeit in einen Unix-Zeitstempel in Sekunden.
Wenn Wenn |
Die Standardzeitzone in diesem Beispiel ist PST. |
INTERVAL 'year' YEAR[(year_precision)] |
Gibt einen Zeitraum in Jahren zurück. year_precision ist die Anzahl der Stellen im Feld year. Der Wert muss zwischen 0 und 9 liegen. Wenn year_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Gibt einen Zeitraum in Jahren und Monaten zurück. Verwenden Sie diese Option, um einen Zeitraum mit den Feldern year und month zu speichern. year_precision ist die Anzahl der Stellen im Feld year. Der Wert muss zwischen 0 und 9 liegen. Wenn year_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
INTERVAL '100-5' YEAR(3) TO MONTH gibt ein Intervall von 100 Jahren und 5 Monaten zurück. Sie müssen 3 als führende Gesamtstellenanzahl für das Jahr angeben. |
INTERVAL 'month' MONTH[(month_precision)] |
Gibt einen Zeitraum in Monaten zurück. month_precision ist die Anzahl der Stellen im Feld Monat. Der Wert muss 0 bis 9 sein. Wenn month_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
INTERVAL '200' MONTH(3) gibt ein Intervall von 200 Monaten zurück. Sie müssen 3 als Gesamtstellenanzahl für den Monat angeben. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Tagen, Stunden, Minuten und Sekunden zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) gibt ein Intervall von 11 Tagen, 10 Stunden, 09 Minuten, 08 Sekunden und 555 Tausendstelsekunden zurück |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Tagen, Stunden und Minuten zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '11 10:09' DAY TO MINUTE gibt ein Intervall von 11 Tagen, 10 Stunden und 09 Minuten zurück |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Gibt einen Zeitraum in Tagen und Stunden zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. |
INTERVAL '100 10' DAY(3) TO HOUR gibt ein Intervall von 100 Tagen und 10 Stunden zurück |
INTERVAL 'day' DAY[(day_precision)] |
Gibt einen Zeitraum in Tagen zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. |
INTERVAL '999' DAY(3) gibt ein Intervall von 999 Tagen zurück |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Stunden, Minuten und Sekunden zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) gibt ein Intervall von 9 Stunden, 08 Minuten und 7,6666666 Sekunden zurück |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Stunden und Minuten zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '09:30' HOUR TO MINUTE gibt ein Intervall von 9 Stunden und 30 Minuten zurück |
INTERVAL 'hour' HOUR[(hour_precision)] |
Gibt einen Zeitraum in Stunden zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. |
INTERVAL '40' HOUR gibt ein Intervall von 40 Stunden zurück |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Minuten zurück. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '15' MINUTE gibt ein Intervall von 15 Minuten zurück |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Minuten und Sekunden zurück. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '15:30' MINUTE TO SECOND gibt ein Intervall von 15 Minuten und 30 Sekunden zurück |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Sekunden zurück. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des Feldes zweite. Er muss zwischen 0 und 9 liegen. Der Standard ist 3. |
INTERVAL '15.678' SECOND gibt ein Intervall von 15,678 Sekunden zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Gibt den Wert zurück, der in der Zeile ausgewertet wird, die der ersten Zeile des Fensterrahmens entspricht. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) gibt den ersten Wert von BANK_ID in einem Fenster zurück, über das die Zeilen als die aktuelle Zeile und 1 Zeile nach dieser Zeile berechnet werden, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Gibt den Wert zurück, der in der Zeile mit einem bestimmten Offset vor der aktuellen Zeile innerhalb der Partition ausgewertet wird. Wenn keine solche Zeile vorhanden ist, wird der Standardwert zurückgegeben. Sowohl Offset- als auch Standardwert werden in Bezug auf die aktuelle Zeile ausgewertet. Wenn keine Angabe gemacht wird, wird Offset standardmäßig auf 1 und standardmäßig auf NULL gesetzt. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) gibt den Wert von BANK_ID aus der zweiten Zeile vor der aktuellen Zeile zurück, unterteilt nach BANK_ID und in absteigender Reihenfolge von BANK_NAME . Wenn kein solcher Wert vorhanden ist, wird hello zurückgegeben. |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Gibt den Wert zurück, der in der Zeile ausgewertet wird, die die letzte Zeile des Fensterrahmens ist. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) gibt den letzten Wert von BANK_ID in einem Fenster zurück, über das die Zeilen als die aktuelle Zeile und 1 Zeile nach dieser Zeile berechnet werden, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Gibt den Wert zurück, der in der Zeile mit einem bestimmten Offset nach der aktuellen Zeile innerhalb der Partition ausgewertet wird. Wenn keine solche Zeile vorhanden ist, wird der Standardwert zurückgegeben. Sowohl Offset- als auch Standardwert werden in Bezug auf die aktuelle Zeile ausgewertet. Wenn keine Angabe gemacht wird, wird Offset standardmäßig auf 1 und standardmäßig auf NULL gesetzt. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt den Wert von BANK_ID aus der zweiten Zeile nach der aktuellen Zeile zurück, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . Wenn kein solcher Wert vorhanden ist, wird hello zurückgegeben. |
RANK() OVER([ partition_clause ] order_by_clause) |
Gibt den Rang der aktuellen Zeile mit Lücken beginnend mit 1 zurück. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt den Rang der einzelnen Zeilen in der Partitionsgruppe von BANK_ID in aufsteigender Reihenfolge von BANK_NAME zurück. |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Gibt die eindeutige Nummer der aktuellen Zeile innerhalb der zugehörigen Partition beginnend mit 1 zurück. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt die eindeutige Zeilennummer der einzelnen Zeilen innerhalb der Partitionsgruppe von BANK_ID in aufsteigender Reihenfolge von BANK_NAME zurück. |
Funktionen | Beschreibung | Beispiel |
---|---|---|
CAST(value AS type) | Gibt den angegebenen Wert im angegebenen Typ zurück. | CAST("10" AS INT) gibt 10 zurück |
CONCAT(string, string) | Gibt die kombinierten Werte von Zeichenfolgen oder Spalten zurück. | CONCAT('Oracle','SQL') gibt OracleSQL zurück |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Gibt die kombinierten Werte von Zeichenfolgen oder Spalten mit dem angegebenen Trennzeichen zwischen den Zeichenfolgen oder Spalten zurück. Ein Trennzeichen ist erforderlich und muss eine Zeichenfolge sein. Nach dem Trennzeichen muss mindestens ein Ausdruck angegeben werden. Beispiel: |
CONCAT_WS('-', 'Hello', 'Oracle') gibt Hello-Oracle zurück
Wenn ein untergeordnetes Element der Funktion ein Array ist, wird das Array vereinfacht:
|
INITCAP(string) | Gibt die Zeichenfolge so zurück, dass jedes Wort mit einem Großbuchstaben beginnt, die anderen Buchstaben Kleinbuchstaben sind und die einzelnen Wörter durch ein Leerzeichen getrennt werden. | INITCAP('oRACLE sql') gibt Oracle Sql zurück |
INSTR(string, substring[start_position]) | Gibt den (1-basierten) Index des ersten Vorkommens von substring in string zurück. | INSTR('OracleSQL', 'SQL') gibt 7 zurück |
LOWER(string) | Gibt die Zeichenfolge zurück, wobei alle Buchstaben in Kleinbuchstaben umgewandelt werden. | LOWER('ORACLE') gibt oracle zurück |
LENGTH(string) | Gibt die Länge der Zeichenfolge in Zeichen oder die Anzahl der Byte von Binärdaten zurück. Nachgestellte Leerzeichen werden mitgezählt. | LENGTH('Oracle') gibt 6 zurück |
LTRIM(string) | Gibt die Zeichenfolge zurück, wobei vorangestellte Leerzeichen von links entfernt werden. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Gibt das Argument zurück, das nicht Null ist. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Sucht und extrahiert die Zeichenfolge, die einem regulären Ausdrucksmuster aus der Eingabezeichenfolge entspricht. Wenn der optionale Erfassungsgruppenindex angegeben ist, extrahiert die Funktion die spezifische Gruppe. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) gibt 22 zurück |
REPLACE(string, search, replacement) | Ersetzt alle Vorkommen von search durch replacement .Wird Wenn | REPLACE('ABCabc', 'abc', 'DEF') gibt ABCDEF zurück |
RTRIM(string) | Gibt die Zeichenfolge zurück, wobei vorangestellte Leerzeichen von rechts entfernt werden. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Gibt die erste Teilzeichenfolge ab der Position zurück. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) gibt rac zurück |
Für Zahlen, TO_CHAR(expr) und für Datumsangaben TO_CHAR(expr, format[, locale]) | Konvertiert Zahlen und Datumsangaben in Zeichenfolgen. Für Zahlen ist kein Format erforderlich. Verwenden Sie für Datumsangaben dasselbe Format wie DATE_FORMAT , das unter Datums- und Zeitfunktionen beschrieben wird. Das Standardgebietsschema ist en-US . Siehe unterstützte Sprachtags.In Pipelineausdrücken muss
| Zahlenbeispiel: Datumsbeispiel: |
UPPER(string) | Gibt eine Zeichenfolge zurück, wobei alle Buchstaben in Großbuchstaben geändert werden. | UPPER('oracle') gibt ORACLE zurück |
LPAD(str, len[, pad]) | Gibt eine Zeichenfolge zurück, die links mit angegebenen Zeichen auf eine bestimmte Länge aufgefüllt wird. Wenn Sie das pad-Zeichen auslassen, wird standardmäßig ein Speicherplatz verwendet. | LPAD('ABC', 5, '*') gibt '**ABC' zurück |
RPAD(str, len[, pad]) | Gibt eine Zeichenfolge zurück, die rechts mit angegebenen Zeichen auf eine bestimmte Länge aufgefüllt wird. Wenn Sie das pad-Zeichen auslassen, wird standardmäßig ein Speicherplatz verwendet. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Funktion | Beschreibung | Beispiel |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Gibt den Wert zurück, für den eine Bedingung erfüllt wird. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END gibt ABC zurück, wenn 1> 0 . Andernfalls wird XYZ zurückgegeben |
AND | Der logische AND-Operator. Gibt "true" zurück, wenn beide Operanden wahr sind. Andernfalls wird "false" zurückgegeben. | (x = 10 AND y = 20) gibt "true" zurück, wenn x gleich 10 und y gleich 20 ist. Wenn einer der Operanden nicht wahr ist, wird "false" zurückgegeben |
OR | Der logische OR-Operator. Gibt "true" zurück, wenn einer der Operanden wahr ist oder beide wahr sind. Andernfalls wird "false" zurückgegeben. | (x = 10 OR y = 20) gibt "false" zurück, wenn x nicht gleich 10 und y nicht gleich 20 ist. Wenn einer der Operanden wahr ist, wird "true" zurückgegeben |
NOT | Der logische NOT-Operator. | |
LIKE | Ermittelt durch Mustervergleich, ob die Zeichenfolge string1 mit dem Muster in string2 übereinstimmt. | |
= | Führt einen Gleichheitstest aus. Gibt "true" zurück, wenn expr1 gleich expr2 ist. Andernfalls wird "false" zurückgegeben. | x = 10 gibt "true" zurück, wenn der Wert von x gleich 10 ist. Andernfalls wird "false" zurückgegeben |
!= | Führt einen Ungleichheitstest aus. Gibt "true" zurück, wenn expr1 nicht gleich expr2 ist. Andernfalls wird "false" zurückgegeben. | x != 10 gibt "false" zurück, wenn der Wert von x gleich 10 ist. Andernfalls wird "true" zurückgegeben |
> | Testet, ob ein Ausdruck "größer als" ist. Gibt "true" zurück, wenn expr1 größer als expr2 ist. | x > 10 gibt "true" zurück, wenn der Wert von x größer als 10 ist. Andernfalls wird "false" zurückgegeben |
>= | Testet, ob ein Ausdruck "größer/gleich" ist. Gibt "true" zurück, wenn expr1 größer als oder gleich expr2 ist. | x >= 10 gibt "true" zurück, wenn der Wert von x größer als oder gleich 10 ist. Andernfalls wird "false" zurückgegeben |
< | Testet, ob ein Ausdruck "kleiner als" ist. Gibt "true" zurück, wenn expr1 kleiner als expr2 ist. | x < 10 gibt "true" zurück, wenn der Wert von x kleiner als 10 ist. Andernfalls wird "false" zurückgegeben |
<= | Testet, ob ein Ausdruck "kleiner/gleich" ist. Gibt "true" zurück, wenn expr1 kleiner oder gleich expr2 ist. | x <= 10 gibt "true" zurück, wenn der Wert von x kleiner als 10 ist. Andernfalls wird "false" zurückgegeben |
|| | Verkettet zwei Zeichenfolgen. | 'XYZ' || 'hello' gibt 'XYZhello' zurück |
BETWEEN | Bewertet einen Bereich. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Testet, ob ein Ausdruck mit einer Werteliste übereinstimmt. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Funktion | Beschreibung | Beispiel |
---|---|---|
NUMERIC_ID() | Generiert eine universell eindeutige ID, die eine 64-Bit-Zahl für jede Zeile darstellt. | NUMERIC_ID() gibt beispielsweise 3458761969522180096 und 3458762008176885761 zurück |
ROWID() | Generiert monoton aufsteigende 64-Bit-Zahlen. | ROWID() gibt beispielsweise 0 , 1 , 2 usw. zurück |
UUID() | Generiert eine universell eindeutige ID, die in einer 128-Bit-Zeichenfolge für jede Zeile besteht. | UUID() gibt zum Beispiel 20d45c2f-0d56-4356-8910-162f4f40fb6d zurück |
MONOTONICALLY_INCREASING_ID() |
Generiert eindeutige, monoton aufsteigende 64-Bit-Ganzzahlen, die keine aufeinanderfolgenden Zahlen sind. | MONOTONICALLY_INCREASING_ID() gibt beispielsweise 8589934592 und 25769803776 zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
COALESCE(value, value [, value]*) | Gibt das erste Nicht-Null-Argument zurück, falls vorhanden. Andernfalls wird Null zurückgegeben. | COALESCE(NULL, 1, NULL) gibt 1 zurück |
NULLIF(value, value) | Gibt Null zurück, wenn die beiden Werte gleich sind. Andernfalls wird der erste Wert zurückgegeben. | NULLIF('ABC','XYZ') gibt ABC zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
SCHEMA_OF_JSON(string) | Parst eine JSON-Zeichenfolge und leitet das Schema im DDL-Format ab. |
|
FROM_JSON(column, string) | Parst eine Spalte mit einer JSON-Zeichenfolge in einen der folgenden Typen mit dem angegebenen Schema.
|
|
TO_JSON(column) | Konvertiert eine Spalte vom Typ "Struct" oder "Struct-Array" oder vom Typ "Map" oder "Map-Array" in eine JSON-Zeichenfolge. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) gibt eine JSON-Zeichenfolge {"s1":[1,2,3],"s2":{"key":"value"}} zurück |
TO_MAP(string,column[,string,column]*) | Erstellt eine neue Spalte vom Typ "Map". Die Eingabespalten müssen als Schlüssel/Wert-Paare gruppiert werden. Die Eingabeschlüsselspalten dürfen nicht Null sein und müssen alle denselben Datentyp aufweisen. Die Eingabewertspalten müssen alle denselben Datentyp aufweisen. |
|
TO_STRUCT(string,column[,string,column]*) | Erstellt eine neue Spalte vom Typ "Struct". Die Eingabespalten müssen als Schlüssel/Wert-Paare gruppiert werden. |
|
TO_ARRAY(column[,column]*) | Erstellt eine neue Spalte vom Typ "Array". Die Eingabespalten müssen alle denselben Datentyp aufweisen. |
|
Datenflussoperatoren, die das Erstellen von Ausdrücken und hierarchischen Datentypen unterstützen, können Funktionen höherer Ordnung verwenden.
Die folgenden Operatoren werden unterstützt:
-
Aggregieren
-
Ausdruck
-
Filter
-
Join
-
Referenz
-
Teilen
-
Drehen
Funktion | Beschreibung | Beispiel |
---|---|---|
TRANSFORM(column, lambda_function) | Nimmt ein Array und eine anonyme Funktion an. Richten Sie ein neues Array ein, indem Sie die Funktion auf jedes Element anwenden und das Ergebnis dem Ausgabearray zuweisen. | Für ein Eingabearray mit Ganzzahlen [1, 2, 3] gibt TRANSFORM(array, x -> x + 1) ein neues Array von [2, 3, 4] zurück. |
TRANSFORM_KEYS(column, lambda_function) | Nimmt eine Karte und eine Funktion mit 2 Argumenten (Schlüssel und Wert) und gibt eine Karte zurück, in der die Schlüssel den Typ des Ergebnisses der Lambda-Funktion haben und die Werte den Typ der Spaltenzuordnungswerte haben. | Bei einer Eingabezuordnung mit Ganzzahlschlüsseln und Zeichenfolgenwerten von {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} gibt TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) eine neue Zuordnung von {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} zurück. |
TRANSFORM_VALUES(column, lambda_function) | Nimmt eine Karte und eine Funktion mit 2 Argumenten (Schlüssel und Wert) und gibt eine Karte zurück, in der die Werte den Typ des Ergebnisses der Lambda-Funktionen haben und die Schlüssel den Typ der Spaltenzuordnungsschlüssel haben. | Bei einer Eingabezuordnung mit Zeichenfolgenschlüsseln und Zeichenfolgenwerten von {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} gibt TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) eine neue Zuordnung von {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} zurück. |
ARRAY_SORT(array(...), lambda_function) |
Nur der Ausdrucksoperator unterstützt Nimmt ein Array an und sortiert nach der angegebenen Funktion, die 2 Argumente annimmt. Die Funktion muss -1, 0 oder 1 zurückgeben, je nachdem, ob das erste Element kleiner, gleich oder größer als das zweite Element ist. Wenn die Funktion ausgelassen wird, wird das Array in aufsteigender Reihenfolge sortiert. |
Das zurückgegebene Array ist: [1,5,6] |
Sie können alle Aufteilungsbedingungen mit Ausnahme der Bedingung "Keine Übereinstimmung" bearbeiten.
Sie können eine Aufteilungsbedingung in der Sequenz nach oben oder nach unten verschieben. Nur die Bedingung "Keine Übereinstimmung" kann nicht verschoben werden.
Sie können alle aufgeteilten Bedingungen mit Ausnahme der Bedingung "Keine Übereinstimmung" löschen.
Pivot-Operator
Mit dem Pivot-Operator können Sie eindeutige Zeilenwerte aus einem Attribut in einer Eingabequelle in mehrere Attribute in der Ausgabe pivotieren.
Mit Eingabe aus mehreren Zeilen führt der Pivot-Vorgang eine Transformation basierend auf Aggregatfunktionsausdrücken und den Werten eines Attributs aus, das Sie als Pivot-Schlüssel angeben. Das Ergebnis eines Pivot-Vorgangs ist eine pivotierte oder neu angeordnete Ausgabe von Zeilen und Attributen.
Die Anzahl der Zeilen in der Ausgabe basiert auf der Auswahl der Attribute, nach denen gruppiert werden soll.
- Wenn Sie Attribute zum Gruppieren angeben, werden die eingehenden Zeilen mit demselben Group-by-Attributwert in einer Zeile gruppiert. Beispiel: Wenn Sie ein Group-by-Attribut mit vier eindeutigen Werten angeben, werden die eingehenden Daten transformiert und in vier Zeilen in der Ausgabe gruppiert.
- Wenn Sie keine Attribute angeben, nach denen gruppiert werden soll, werden alle eingehenden Daten in eine einzelne Ausgabezeile transformiert.
Die Anzahl der Attribute in der Ausgabe:
- basiert auf der Anzahl der Attribute, die Sie für die Gruppierung auswählen
- ist ein Vielfaches der Anzahl der Werte, die Sie im Pivot-Schlüssel auswählen
- resultiert aus der Anzahl der Attribute, die von den Aggregatfunktionsausdrücken transformiert werden
Beispiel: Wenn Sie ein Group-by-Attribut und drei Pivot-Schlüsselwerte auswählen und einen Ausdruck hinzufügen, der zwei Attribute transformiert, lautet die Anzahl der Attribute in der Ausgabe:
1 + (3 * 2)
Die Gesamtanzahl der Attribute in der resultierenden Pivot-Ausgabe wird wie folgt berechnet:
Number of group by attributes + (Number of pivot key values * Number of attributes that are transformed from expressions)
Die Namen neuer Attribute in der Ausgabe werden von einem Muster abgeleitet, das Sie bei der Erstellung der Ausdrücke für Zielattribute hinzufügen.
Die Aggregatfunktionen, die Sie mit einem Pivot-Operator verwenden, bestimmen die pivotierten Werte in der Ausgabe. Falls keine Daten gefunden werden, wird ein Nullwert eingefügt, wenn ein pivotierter Wert erwartet wird.
Die Datenentity PRODUCT_SALES umfasst die Attribute STORE, PRODUCT und SALES. Die Datenentity enthält fünf Zeilen. Sie möchten einen Pivot für das Attribut PRODUCT mit einer Aggregatsummenfunktion (SUM) für SALES erstellen.
Sie geben an, dass pivotierte Zeilen nach dem Attribut STORE gruppiert werden sollen. Jeder eindeutige STORE-Wert wird in der resultierenden Ausgabe zu einer Zeile. Eingabezeilen mit demselben Group-by-Wert werden in der pivotierten Ausgabe in derselben Zeile gruppiert. Wenn Sie kein Group-by-Attribut angeben, werden alle Eingabezeilen in eine einzelne Zeile in der resultierenden Ausgabe transformiert.
Sie geben PRODUCT als Pivot-Schlüssel an und wählen alle drei Werte aus, die in der resultierenden Ausgabe in neue Attribute pivotiert werden sollen.
Der SUM-Aggregatfunktionsausdruck für SALES lautet:
SUM(PIVOT_1_1.PRODUCT_SALES.SALES)
Das Muster für Zielattribute lautet:
%PIVOT_KEY_VALUE%
Datenentity PRODUCT_SALES
STORE | PRODUCT | SALES |
---|---|---|
AB Store | Television | 2 |
AB Store | Television | 4 |
Country-Store | Television | 6 |
Country-Store | Refrigerator | 8 |
E-Store | Coffee maker | 10 |
Pivot-Ausgabe: Group-by-Attribut STORE, Pivot-Schlüssel PRODUCT
STORE | TELEVISION | REFRIGERATOR | COFFEE MAKER |
---|---|---|---|
AB-Store | 6 | - | - |
Country-Store | 6 | 8 | - |
E-Store | - | - | 10 |
Pivot-Ausgabe: Ohne Group-by-Attribut, Pivot-Schlüssel PRODUCT
TELEVISION | REFRIGERATOR | COFFEE MAKER |
---|---|---|
12 | 8 | 10 |
Der Pivot-Operator führt eine Transformation mit Aggregatfunktionsausdrücken für einen oder mehrere Werte eines Attributs aus, das Sie als Pivot-Schlüssel angeben.
Sie können die pivotierten Zeilen in einer einzelnen Zeile gruppieren oder Attribute auswählen, um mehrere Ausgabezeilen basierend auf demselben Group-by-Wert zu erstellen.
Für einen Pivot-Operator ist mindestens ein Aggregatfunktionsausdruck erforderlich.
Wenn der Pivot-Operator auf der Datenflussleinwand ausgewählt ist, wählen Sie im Eigenschaftsfenster unter Ausdrücke die Option Ausdruck hinzufügen aus.
Geben Sie im Bereich "Ausdruck hinzufügen" einen Namen für den Ausdruck in das Feld ID ein, oder lassen Sie den Namen unverändert.
(Optional) Wählen Sie Blobale Auswahl zulassen aus, um mit einem Muster einen Ausdruck auf mehrere Quellattribute anzuwenden.
Beispiel: Das Dataset enthält zwei DISCOUNT_-Attribute (DISCOUNT_VALUE und DISCOUNT_RATE), und Sie möchten die Funktion
MAX
auf beide Attribute anwenden.Wählen Sie unter Quellattribute Muster aus, und wählen Sie Muster hinzufügen aus.
Fügen Sie im Bereich "Quellmuster hinzufügen" ein Muster zur Auswahl einer Gruppe von Quellattributen hinzu, deren Namen mit "DISCOUNT_" beginnen. Beispiel: Geben Sie
DISCOUNT*
ein, und wählen Sie Hinzufügen aus. Wählen Sie dann den Datentyp aus.Verwenden Sie unter Zielattribute ein Muster für die resultierenden Ausgabeattributnamen.
Standardmäßig ist das Muster
%MACRO_INPUT%_%PIVOT_KEY_VALUE%
bereits für Sie eingefügt.%MACRO_INPUT%
entspricht den Namen der Quellattribute, die durch das hinzugefügte Muster ausgewählt werden.%PIVOT_KEY_VALUE%
entspricht den im Pivot-Schlüssel ausgewählten Werten.Beispiel: Wenn
%PIVOT_KEY_VALUE%
TELEVISION und%MACRO_INPUT%
DISCOUNT_VALUE und DISCOUNT_RATE angibt, sind die pivotierten Attribute in der Ausgabe<pivot_name>.<expression_name>.DISCOUNT_VALUE_TELEVISION
und<pivot_name>.<expression_name>.DISCOUNT_RATE_TELEVISION
.- Sie können die Option Quellattributtypen verwenden aktiviert lassen. Andernfalls wählen Sie unter Ausdrucksdatentyp den Datentyp aus, und füllen Sie die Felder entsprechend dem ausgewählten Typ aus.
Wenn Sie die Option Bulkauswahl zulassen nicht aktiviert haben, verwenden Sie unter Zielattribute ein Muster für die resultierenden Ausgabeattributnamen.
Standardmäßig ist das Muster
%PIVOT_KEY_VALUE%
bereits für Sie eingefügt.%PIVOT_KEY_VALUE%
entspricht den im Pivot-Schlüssel ausgewählten Werten.Beispiel: Wenn
%PIVOT_KEY_VALUE%
TELEVISION und TELEPHONE angibt, lauten die pivotierten Attribute in der Ausgabe<pivot_name>.<expression_name>.TELEVISION
und<pivot_name>.<expression_name>.TELEPHONE
.Wählen Sie unter Ausdrucksdatentyp den Datentyp aus, und füllen Sie die Felder entsprechend dem ausgewählten Typ aus.
Doppelklicken Sie im Abschnitt Expression Builder auf eingehende Attribute, Parameter oder Aggregatfunktionen, oder ziehen Sie sie in den Editor, um den Ausdruck zu erstellen. Sie können den Ausdruck auch selbst manuell schreiben und validieren.
Die folgende Tabelle enthält die Liste der Aggregatfunktionen, die zum Erstellen von Pivot-Ausdrücken verfügbar sind.
Funktion Beschreibung Beispiel COUNT(value[, value]*)
Gibt die Anzahl der Zeilen zurück, für die mindestens ein angegebener Ausdruck nicht Null ist. COUNT(expr1)
COUNT(*)
Gibt die Gesamtanzahl der abgerufenen Zeilen zurück, einschließlich Zeilen, die Null enthalten. COUNT(*)
MAX(value)
Gibt den Höchstwert des Arguments zurück. MAX(expr)
MIN(value)
Gibt den Mindestwert des Arguments zurück. MIN(expr)
SUM(numeric)
Gibt die aus Werten einer Gruppe berechnete Summe zurück. SUM(expr1)
Sie können auch Funktionen höherer Ordnung (Transformation) in einem Pivot-Ausdruck verwenden.
Um einen Pivot-Ausdruck zu erstellen, geben Sie die Attribute und die Aggregatfunktion an.
Wenn Sie Bulkauswahl zulassen ausgewählt haben, geben Sie mit
%MACRO_INPUT%
im Ausdruck die Attribute an, auf die die Funktion angewendet werden soll.Beispiel: Wenn Sie das Muster
DISCOUNT*
zum Abgleich der QuellattributeDISCOUNT_RATE
undDISCOUNT_VALUE
verwendet haben, können Sie eine Aggregatfunktion wieSUM(numeric)
angeben, um die Funktion auf alle Attribute anzuwenden, die dem Muster entsprechen.%MACRO_INPUT%
ersetzt dabei den Platzhalternumeric
in der Funktion:SUM(%MACRO_INPUT%)
Wenn Sie Blobale Auswahl zulassen nicht ausgewählt haben, geben Sie das Attribut in der Funktion an.
Beispiel: Die Datenentity ist PRODUCT_SALES, und Sie möchten eine SUM-Aggregatfunktion für das SALES-Attribut verwenden. Sie können die Funktion als
SUM(numeric)
angeben und den Platzhalternumeric
in der Funktion durch den Attributnamen ersetzen:SUM(PIVOT_1_1.PRODUCT_SALES.SALES)
Sie können einen Ausdrucksparameter für den Aggregatfunktionsnamen im Pivot-Ausdruck verwenden. Ein Ausdrucksparameter hat einen Namen, einen Typ und einen Standardwert.
Beispiel: Der Ausdrucksparameter
P_VARCHAR
hat den TypVARCHAR
und den StandardwertMIN
. Sie können die Aggregatfunktion wie folgt angeben:$P_VARCHAR(%MACRO_INPUT%)
$P_VARCHAR(PIVOT_1_1.PRODUCT_SALES.SALES)
Wählen Sie im Bereich "Ausdruck hinzufügen" die Option Hinzufügen aus.
Lookup-Operator
Der Lookup-Operator führt eine Abfrage und eine Transformation mithilfe einer Lookup-Bedingung und einer Eingabe aus zwei Quellen aus: einer primären Eingabequelle und einer Lookup-Eingabequelle.
Der Abfragevorgang verwendet die Bedingung und einen Wert in der primären Eingabe, um Zeilen in der Lookup-Quelle zu suchen. Die Transformation hängt Attribute aus der Lookup-Quelle an die primäre Quelle an.
Sie können die Aktion angeben, die ausgeführt werden soll, wenn mehrere Zeilen und keine Zeilen von der Lookup-Abfrage zurückgegeben werden. Beispiel: Sie können angeben, dass nicht übereinstimmende Zeilen übersprungen werden und jede übereinstimmende Zeile zurückgegeben wird, wenn mehrere übereinstimmende Zeilen vorhanden sind.
Die resultierende Ausgabe ist eine Kombination aus beiden Eingabequellen basierend auf der Lookup-Bedingung, einem Wert in der primären Eingabe und den bevorzugten auszuführenden Aktionen. Die primäre Eingabe bestimmt die Reihenfolge der Attribute und Zeilen in der Ausgabe. Dabei werden die Attribute aus der primären Eingabe vor den Attributen aus der Lookup-Eingabe platziert.
Angenommen, Sie verwenden zwei Quelldatenentitys in einem Datenfluss. Datenentity 1 (PAYMENTS) wird als primäre Eingabe festgelegt. Datenentity 2 (CUSTOMERS) wird als Lookup-Eingabe festgelegt. Die Lookup-Bedingung ist wie folgt festgelegt:
LOOKUP_1_1.PAYMENTS.CUSTOMER_ID = LOOKUP_1_2.CUSTOMERS.CUSTOMER_ID
Die resultierende Lookup-Ausgabe zeigt, wie die Daten aus den beiden Eingaben kombiniert und transformiert werden. Attribute aus der Lookup-Quelle werden an die Attribute der primären Quelle mit den folgenden Verhaltensweisen angehängt:
- Wenn der Vorgang keinen übereinstimmenden Datensatz für einen Wert in der Lookup-Quelle findet, wird der Datensatz mit Null für die Lookup-Attribute zurückgegeben. Beispiel: Für die CUSTOMER_ID-Werte 103, 104 und 105 werden keine übereinstimmenden Datensätze gefunden. Daher werden in der resultierenden Ausgabe die angehängten AttributenCUSTOMER_ID und NAME mit Null aufgefüllt.
- Wenn der Vorgang mehrere übereinstimmende Datensätze für einen Wert in der Lookup-Quelle findet, wird jeder übereinstimmende Datensatz zurückgegeben.
Datenentity 1, primäre Eingabequelle
PAYMENT_ID | CUSTOMER_ID | AMOUNT |
---|---|---|
1 | 101 | 2500 |
2 | 102 | 1110 |
3 | 103 | 500 |
4 | 104 | 400 |
5 | 105 | 150 |
6 | 102 | 450 |
Datenentity 2, Lookup-Eingabequelle
CUSTOMER_ID | NAME |
---|---|
101 | Peter |
102 | Paul |
106 | Mary |
102 | Pauline |
Lookup-Ausgabe
PAYMENT_ID | CUSTOMER_ID | AMOUNT | CUSTOMER_ID | NAME |
---|---|---|---|---|
1 | 101 | 2500 | 101 | Peter |
2 | 102 | 1110 | 102 | Paul |
3 | 103 | 500 | null (Nulldatentyp) | null (Nulldatentyp) |
4 | 104 | 400 | null (Nulldatentyp) | null (Nulldatentyp) |
5 | 105 | 150 | null (Nulldatentyp) | null (Nulldatentyp) |
6 | 102 | 450 | 102 | Paul |
Ein Lookup-Operator verwendet zwei Eingabequellen in einem Datenfluss.
Im folgenden Verfahren wird davon ausgegangen, dass Sie zwei Quelloperatoren hinzugefügt und konfiguriert haben.
Mit dem Bedingungsbuilder können Sie Elemente visuell auswählen, um eine Lookup-Bedingung zu erstellen. Sie können eine Bedingung auch manuell im Editor eingeben.
Mit einer Lookup-Bedingung können Sie einen Wert in einer primären Eingabequelle verwenden, um Datensätze in einer Lookup-Eingabequelle zu suchen und alle übereinstimmenden Zeilen zurückzugeben. Zeilen ohne Übereinstimmung werden mit Nullwerten zurückgegeben.
Die Elemente, die Sie in einer Lookup-Bedingung verwenden können, umfassen eingehende Attribute, Parameter und Funktionen. Sie können ein Element in der Liste doppelklicken oder ziehen, um es dem Editor hinzuzufügen und eine Bedingung zu erstellen. Sie können die Bedingung vor dem Erstellen validieren.
Incoming zeigt die Attribute aus den Upstreameingabeports in zwei separaten LOOKUP-Ordnern an. Zeigen Sie die Attribute der einzelnen Ports an, indem Sie den entsprechenden LOOKUP-Ordner ein- oder ausblenden. Beispiel: Wenn LOOKUP_1_1 die primäre Eingabe und LOOKUP_1_2 die Lookup-Eingabe ist, können die Lookup-Bedingungen basierend auf einem Wert im primären Eingabeattribut ADDRESS_ID wie folgt lauten:
LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = '2001'
LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = LOOKUP_1_2.BANK_CUSTOMER.ADDRESS_ID
Parameter sind die Ausdrucksparameter, die dem Datenfluss mit dem Condition Builder (Filter-, Join-, Lookup- und Aufteilungsoperatoren) oder Expression Builder (Ausdrucks- und Aggregatoperatoren) hinzugefügt wurden. Ein Ausdrucksparameter hat einen Namen, einen Typ und einen Standardwert. Siehe Ausdrucksparameter hinzufügen.
Angenommen, Sie möchten Bankkunden einer bestimmten Bank suchen. Sie können einen VARCHAR
-Parameter mit dem Namen P_LOOK_UP
erstellen und den Standardwert auf 2001
setzen, also den spezifischen Bankwert. Anschließend können Sie die Lookup-Bedingung wie folgt erstellen:
LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = LOOKUP_1_2.BANK_CUSTOMER.ADDRESS_ID AND LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = $P_LOOK_UP
Funktionen sind die in Data Integration verfügbaren Funktionen, die Sie in einer Bedingung verwenden können. Funktionen sind Vorgänge, die für an die Funktion übergebene Argumente ausgeführt werden. Funktionen berechnen, bearbeiten oder extrahieren Datenwerte aus Argumenten.
Im Folgenden finden Sie eine Liste der Funktionen, die Sie beim Erstellen von Bedingungen hinzufügen können:
Funktion | Beschreibung | Beispiel |
---|---|---|
MD5(all data types) | Berechnet eine MD5 -Prüfsumme des Datentyps und gibt einen Zeichenfolgenwert zurück. | MD5(column_name) |
SHA1(all data types) | Berechnet einen SHA-1 -Hashwert des Datentyps und gibt einen Zeichenfolgenwert zurück. | SHA1(column_name) |
SHA2(all data types, bitLength) | Berechnet einen SHA-2 -Hashwert des Datentyps und gibt einen Zeichenfolgenwert zurück. bitLength ist eine Ganzzahl. | SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512) . |
ORA_HASH(expr, [max_bucket], [seed_value]) |
Berechnet einen Hashwert für
Oracle wendet die Hash-Funktion auf die Kombination aus |
|
Funktion | Beschreibung | Beispiel |
---|---|---|
ABS(numeric) | Gibt die absolute Potenz des Wertes numeric zurück. | ABS(-1) |
CEIL(numeric) | Gibt die kleinste Ganzzahl zurück, die nicht größer als der Wert numeric ist. | CEIL(-1,2) |
FLOOR(numeric) | Gibt die größte Ganzzahl zurück, die nicht größer als der Wert numeric ist. | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Gibt den Rest zurück, nachdem numeric1 durch numeric2 geteilt wurde. | MOD(8,2) |
POWER(numeric1, numeric2) | Entspricht numeric1 hoch numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Gibt numeric1 gerundet auf numeric2 Dezimalstellen zurück. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Gibt numeric1 gekürzt auf numeric2 Dezimalstellen zurück. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Konvertiert expr basierend auf den Angaben für format und locale (optional) in eine Zahl. Das Standardgebietsschema ist en-US . Unterstützte Sprachtags.Unterstützte Formatmuster:
|
|
Funktion | Beschreibung | Beispiel |
---|---|---|
CURRENT_DATE |
Gibt das aktuelle Datum zurück. | CURRENT_DATE gibt das aktuelle Datum zurück, z.B. 2023-05-26 |
CURRENT_TIMESTAMP |
Gibt das aktuelle Datum und die Zeit für die Session-Zeitzone zurück. | CURRENT_TIMESTAMP gibt das aktuelle Datum und die aktuelle Uhrzeit zurück, wie 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Gibt das Datum zurück, das number von Tagen nach dem angegebenen Datum date liegt. |
DATE_ADD('2017-07-30', 1) gibt 2017-07-31 zurück |
DATE_FORMAT(expr, format[, locale]) |
Formatiert Unterstützte Datumsformatmuster:
|
|
DAYOFMONTH(date) |
Gibt den Tag des Monats für das Datum zurück. | DAYOFMONTH('2020-12-25') gibt 25 zurück |
DAYOFWEEK(date) |
Gibt den Tag der Woche für das Datum zurück. | DAYOFWEEK('2020-12-25') gibt 6 für Freitag zurück. In den USA gilt der Sonntag als 1, der Montag als 2 usw. |
DAYOFYEAR(date) |
Gibt den Tag des Jahres für das Datum zurück. | DAYOFYEAR('2020-12-25') gibt 360 zurück |
WEEKOFYEAR(date) |
Gibt die Woche des Jahres für das Datum zurück. |
|
HOUR(datetime) |
Gibt den Stundenwert für das Datum/die Uhrzeit zurück. | HOUR('2020-12-25 15:10:30') gibt 15 zurück |
LAST_DAY(date) |
Gibt den letzten Tag des Monats für das Datum zurück. | LAST_DAY('2020-12-25') gibt 31 zurück |
MINUTE(datetime) |
Gibt den Minutenwert für das Datum/die Uhrzeit zurück. | HOUR('2020-12-25 15:10:30') gibt 10 zurück |
MONTH(date) |
Gibt den Monatswert für das Datum zurück. | MONTH('2020-06-25') gibt 6 zurück |
QUARTER(date) |
Gibt das Quartal des Jahres zurück, in dem das Datum liegt. | QUARTER('2020-12-25') gibt 4 zurück |
SECOND(datetime) |
Gibt den Sekundenwert für das Datum/die Uhrzeit zurück. | SECOND('2020-12-25 15:10:30') gibt 30 zurück |
TO_DATE(string, format_string[, localeStr]) |
Parst den Zeichenfolgenausdruck mit dem Ausdruck format_string in ein Datum. Das Gebietsschema ist optional. Der Standardwert ist en-US . Unterstützte Sprachtags.In Pipelineausdrücken muss
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Konvertiert expr vom Typ "VARCHAR" basierend auf den Angaben für format_string und localeStr (optional) in einen TIMESTAMP-Wert.In Pipelineausdrücken muss
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') gibt ein TIMESTAMP-Objekt zurück, das 11am 10:10 Oct 11th, 2020 darstellt |
WEEK(date) |
Gibt den Wochenwert für das Datum zurück. |
WEEK('2020-06-25') gibt 4 zurück |
YEAR(date) |
Gibt den Jahreswert für das Datum zurück. | YEAR('2020-06-25') gibt 2020 zurück |
ADD_MONTHS(date_expr, number_months) |
Gibt das Datum nach dem Hinzufügen der angegebenen Anzahl von Monaten zum angegebenen Datum, zum Zeitstempel oder zur Zeichenfolge mit einem Format wie yyyy-MM-dd oder yyyy-MM-dd HH:mm:ss.SSS zurück. |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Gibt die Anzahl der Monate zwischen Eine Ganzzahl wird zurückgegeben, wenn beide Datumsangaben denselben Tag im Monat oder den letzten Tag im jeweiligen Monat angeben. Andernfalls wird die Differenz auf Basis von 31 Tagen pro Monat berechnet. |
|
FROM_UTC_TIMESTAMP(time_stamp, time_zone) |
Interpretiert ein Datum, einen Zeitstempel oder eine Zeichenfolge als UTC-Zeit und konvertiert diese Zeit in einen Zeitstempel in der angegebenen Zeitzone. Verwenden Sie für eine Zeichenfolge ein Format wie Das Zeitzonenformat ist entweder eine regionsbasierte Zonen-ID (z.B. "Region/Ort", wie "Asia/Seoul") oder ein Zeitzonenversatz (z.B. UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') gibt 2017-07-14 03:40:00.0 zurück |
TO_UTC_TIMESTAMP(time_stamp, time_zone) |
Konvertiert ein Datum, einen Zeitstempel oder eine Zeichenfolge in der angegebenen Zeitzone in einen UTC-Zeitstempel. Verwenden Sie für eine Zeichenfolge ein Format wie Das Zeitzonenformat ist entweder eine regionsbasierte Zonen-ID (z.B. "Region/Ort", wie "Asia/Seoul") oder ein Zeitzonenversatz (z.B. UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') gibt 2017-07-14 01:40:00.0 zurück
|
FROM_UNIXTIME(unix_time[, fmt]) |
Konvertiert die angegebene Unix-Zeit oder -Epoche in eine Zeichenfolge, die den Zeitstempel dieses Zeitpunkts in der aktuellen Systemzeitzone und im angegebenen Format darstellt. Hinweis: Die Unix-Zeit ist die Anzahl der Sekunden, die seit dem 1. Januar 1970 00:00:00 UTC verstrichen sind. Wenn |
Die Standardzeitzone in den Beispielen ist PST. |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Konvertiert die aktuelle oder angegebene Zeit in einen Unix-Zeitstempel in Sekunden.
Wenn Wenn |
Die Standardzeitzone in diesem Beispiel ist PST. |
INTERVAL 'year' YEAR[(year_precision)] |
Gibt einen Zeitraum in Jahren zurück. year_precision ist die Anzahl der Stellen im Feld year. Der Wert muss zwischen 0 und 9 liegen. Wenn year_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Gibt einen Zeitraum in Jahren und Monaten zurück. Verwenden Sie diese Option, um einen Zeitraum mit den Feldern year und month zu speichern. year_precision ist die Anzahl der Stellen im Feld year. Der Wert muss zwischen 0 und 9 liegen. Wenn year_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
INTERVAL '100-5' YEAR(3) TO MONTH gibt ein Intervall von 100 Jahren und 5 Monaten zurück. Sie müssen 3 als führende Gesamtstellenanzahl für das Jahr angeben. |
INTERVAL 'month' MONTH[(month_precision)] |
Gibt einen Zeitraum in Monaten zurück. month_precision ist die Anzahl der Stellen im Feld Monat. Der Wert muss 0 bis 9 sein. Wenn month_precision ausgelassen wird, lautet der Standardwert 2 (muss weniger als 100 Jahre betragen). |
INTERVAL '200' MONTH(3) gibt ein Intervall von 200 Monaten zurück. Sie müssen 3 als Gesamtstellenanzahl für den Monat angeben. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Tagen, Stunden, Minuten und Sekunden zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '11 10:09:08.555' DAY TO SECOND(3) gibt ein Intervall von 11 Tagen, 10 Stunden, 09 Minuten, 08 Sekunden und 555 Tausendstelsekunden zurück |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Tagen, Stunden und Minuten zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '11 10:09' DAY TO MINUTE gibt ein Intervall von 11 Tagen, 10 Stunden und 09 Minuten zurück |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Gibt einen Zeitraum in Tagen und Stunden zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. |
INTERVAL '100 10' DAY(3) TO HOUR gibt ein Intervall von 100 Tagen und 10 Stunden zurück |
INTERVAL 'day' DAY[(day_precision)] |
Gibt einen Zeitraum in Tagen zurück. day_precision ist die Anzahl der Stellen im Feld day. Der Wert muss zwischen 0 und 9 liegen. Der Standard ist 2. |
INTERVAL '999' DAY(3) gibt ein Intervall von 999 Tagen zurück |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Stunden, Minuten und Sekunden zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) gibt ein Intervall von 9 Stunden, 08 Minuten und 7,6666666 Sekunden zurück |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Stunden und Minuten zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '09:30' HOUR TO MINUTE gibt ein Intervall von 9 Stunden und 30 Minuten zurück |
INTERVAL 'hour' HOUR[(hour_precision)] |
Gibt einen Zeitraum in Stunden zurück. hour_precision ist die Anzahl der Stellen im Feld Stunde. Der Wert muss 0 bis 2 sein. Der Standard ist 2. |
INTERVAL '40' HOUR gibt ein Intervall von 40 Stunden zurück |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Gibt einen Zeitraum in Minuten zurück. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. |
INTERVAL '15' MINUTE gibt ein Intervall von 15 Minuten zurück |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Minuten und Sekunden zurück. minute_precision ist die Anzahl der Stellen im Feld Minute. Der Wert muss zwischen 0 und 2 liegen. Der Standard ist 2. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des zweiten Wertes im Feld time. Der Wert muss zwischen 0 und 9 liegen. |
INTERVAL '15:30' MINUTE TO SECOND gibt ein Intervall von 15 Minuten und 30 Sekunden zurück |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Gibt einen Zeitraum in Sekunden zurück. fractional_seconds_precision ist die Anzahl der Ziffern im Bruchteil des Feldes zweite. Er muss zwischen 0 und 9 liegen. Der Standard ist 3. |
INTERVAL '15.678' SECOND gibt ein Intervall von 15,678 Sekunden zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Gibt den Wert zurück, der in der Zeile ausgewertet wird, die der ersten Zeile des Fensterrahmens entspricht. | FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) gibt den ersten Wert von BANK_ID in einem Fenster zurück, über das die Zeilen als die aktuelle Zeile und 1 Zeile nach dieser Zeile berechnet werden, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Gibt den Wert zurück, der in der Zeile mit einem bestimmten Offset vor der aktuellen Zeile innerhalb der Partition ausgewertet wird. Wenn keine solche Zeile vorhanden ist, wird der Standardwert zurückgegeben. Sowohl Offset- als auch Standardwert werden in Bezug auf die aktuelle Zeile ausgewertet. Wenn keine Angabe gemacht wird, wird Offset standardmäßig auf 1 und standardmäßig auf NULL gesetzt. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) gibt den Wert von BANK_ID aus der zweiten Zeile vor der aktuellen Zeile zurück, unterteilt nach BANK_ID und in absteigender Reihenfolge von BANK_NAME . Wenn kein solcher Wert vorhanden ist, wird hello zurückgegeben. |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Gibt den Wert zurück, der in der Zeile ausgewertet wird, die die letzte Zeile des Fensterrahmens ist. | LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) gibt den letzten Wert von BANK_ID in einem Fenster zurück, über das die Zeilen als die aktuelle Zeile und 1 Zeile nach dieser Zeile berechnet werden, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Gibt den Wert zurück, der in der Zeile mit einem bestimmten Offset nach der aktuellen Zeile innerhalb der Partition ausgewertet wird. Wenn keine solche Zeile vorhanden ist, wird der Standardwert zurückgegeben. Sowohl Offset- als auch Standardwert werden in Bezug auf die aktuelle Zeile ausgewertet. Wenn keine Angabe gemacht wird, wird Offset standardmäßig auf 1 und standardmäßig auf NULL gesetzt. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt den Wert von BANK_ID aus der zweiten Zeile nach der aktuellen Zeile zurück, unterteilt nach BANK_ID und in aufsteigender Reihenfolge von BANK_NAME . Wenn kein solcher Wert vorhanden ist, wird hello zurückgegeben. |
RANK() OVER([ partition_clause ] order_by_clause) |
Gibt den Rang der aktuellen Zeile mit Lücken beginnend mit 1 zurück. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt den Rang der einzelnen Zeilen in der Partitionsgruppe von BANK_ID in aufsteigender Reihenfolge von BANK_NAME zurück. |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Gibt die eindeutige Nummer der aktuellen Zeile innerhalb der zugehörigen Partition beginnend mit 1 zurück. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) gibt die eindeutige Zeilennummer der einzelnen Zeilen innerhalb der Partitionsgruppe von BANK_ID in aufsteigender Reihenfolge von BANK_NAME zurück. |
Funktionen | Beschreibung | Beispiel |
---|---|---|
CAST(value AS type) | Gibt den angegebenen Wert im angegebenen Typ zurück. | CAST("10" AS INT) gibt 10 zurück |
CONCAT(string, string) | Gibt die kombinierten Werte von Zeichenfolgen oder Spalten zurück. | CONCAT('Oracle','SQL') gibt OracleSQL zurück |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Gibt die kombinierten Werte von Zeichenfolgen oder Spalten mit dem angegebenen Trennzeichen zwischen den Zeichenfolgen oder Spalten zurück. Ein Trennzeichen ist erforderlich und muss eine Zeichenfolge sein. Nach dem Trennzeichen muss mindestens ein Ausdruck angegeben werden. Beispiel: |
CONCAT_WS('-', 'Hello', 'Oracle') gibt Hello-Oracle zurück
Wenn ein untergeordnetes Element der Funktion ein Array ist, wird das Array vereinfacht:
|
INITCAP(string) | Gibt die Zeichenfolge so zurück, dass jedes Wort mit einem Großbuchstaben beginnt, die anderen Buchstaben Kleinbuchstaben sind und die einzelnen Wörter durch ein Leerzeichen getrennt werden. | INITCAP('oRACLE sql') gibt Oracle Sql zurück |
INSTR(string, substring[start_position]) | Gibt den (1-basierten) Index des ersten Vorkommens von substring in string zurück. | INSTR('OracleSQL', 'SQL') gibt 7 zurück |
LOWER(string) | Gibt die Zeichenfolge zurück, wobei alle Buchstaben in Kleinbuchstaben umgewandelt werden. | LOWER('ORACLE') gibt oracle zurück |
LENGTH(string) | Gibt die Länge der Zeichenfolge in Zeichen oder die Anzahl der Byte von Binärdaten zurück. Nachgestellte Leerzeichen werden mitgezählt. | LENGTH('Oracle') gibt 6 zurück |
LTRIM(string) | Gibt die Zeichenfolge zurück, wobei vorangestellte Leerzeichen von links entfernt werden. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Gibt das Argument zurück, das nicht Null ist. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Sucht und extrahiert die Zeichenfolge, die einem regulären Ausdrucksmuster aus der Eingabezeichenfolge entspricht. Wenn der optionale Erfassungsgruppenindex angegeben ist, extrahiert die Funktion die spezifische Gruppe. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) gibt 22 zurück |
REPLACE(string, search, replacement) | Ersetzt alle Vorkommen von search durch replacement .Wird Wenn | REPLACE('ABCabc', 'abc', 'DEF') gibt ABCDEF zurück |
RTRIM(string) | Gibt die Zeichenfolge zurück, wobei vorangestellte Leerzeichen von rechts entfernt werden. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Gibt die erste Teilzeichenfolge ab der Position zurück. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) gibt rac zurück |
Für Zahlen, TO_CHAR(expr) und für Datumsangaben TO_CHAR(expr, format[, locale]) | Konvertiert Zahlen und Datumsangaben in Zeichenfolgen. Für Zahlen ist kein Format erforderlich. Verwenden Sie für Datumsangaben dasselbe Format wie DATE_FORMAT , das unter Datums- und Zeitfunktionen beschrieben wird. Das Standardgebietsschema ist en-US . Siehe unterstützte Sprachtags.In Pipelineausdrücken muss
| Zahlenbeispiel: Datumsbeispiel: |
UPPER(string) | Gibt eine Zeichenfolge zurück, wobei alle Buchstaben in Großbuchstaben geändert werden. | UPPER('oracle') gibt ORACLE zurück |
LPAD(str, len[, pad]) | Gibt eine Zeichenfolge zurück, die links mit angegebenen Zeichen auf eine bestimmte Länge aufgefüllt wird. Wenn Sie das pad-Zeichen auslassen, wird standardmäßig ein Speicherplatz verwendet. | LPAD('ABC', 5, '*') gibt '**ABC' zurück |
RPAD(str, len[, pad]) | Gibt eine Zeichenfolge zurück, die rechts mit angegebenen Zeichen auf eine bestimmte Länge aufgefüllt wird. Wenn Sie das pad-Zeichen auslassen, wird standardmäßig ein Speicherplatz verwendet. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Funktion | Beschreibung | Beispiel |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Gibt den Wert zurück, für den eine Bedingung erfüllt wird. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END gibt ABC zurück, wenn 1> 0 . Andernfalls wird XYZ zurückgegeben |
AND | Der logische AND-Operator. Gibt "true" zurück, wenn beide Operanden wahr sind. Andernfalls wird "false" zurückgegeben. | (x = 10 AND y = 20) gibt "true" zurück, wenn x gleich 10 und y gleich 20 ist. Wenn einer der Operanden nicht wahr ist, wird "false" zurückgegeben |
OR | Der logische OR-Operator. Gibt "true" zurück, wenn einer der Operanden wahr ist oder beide wahr sind. Andernfalls wird "false" zurückgegeben. | (x = 10 OR y = 20) gibt "false" zurück, wenn x nicht gleich 10 und y nicht gleich 20 ist. Wenn einer der Operanden wahr ist, wird "true" zurückgegeben |
NOT | Der logische NOT-Operator. | |
LIKE | Ermittelt durch Mustervergleich, ob die Zeichenfolge string1 mit dem Muster in string2 übereinstimmt. | |
= | Führt einen Gleichheitstest aus. Gibt "true" zurück, wenn expr1 gleich expr2 ist. Andernfalls wird "false" zurückgegeben. | x = 10 gibt "true" zurück, wenn der Wert von x gleich 10 ist. Andernfalls wird "false" zurückgegeben |
!= | Führt einen Ungleichheitstest aus. Gibt "true" zurück, wenn expr1 nicht gleich expr2 ist. Andernfalls wird "false" zurückgegeben. | x != 10 gibt "false" zurück, wenn der Wert von x gleich 10 ist. Andernfalls wird "true" zurückgegeben |
> | Testet, ob ein Ausdruck "größer als" ist. Gibt "true" zurück, wenn expr1 größer als expr2 ist. | x > 10 gibt "true" zurück, wenn der Wert von x größer als 10 ist. Andernfalls wird "false" zurückgegeben |
>= | Testet, ob ein Ausdruck "größer/gleich" ist. Gibt "true" zurück, wenn expr1 größer als oder gleich expr2 ist. | x >= 10 gibt "true" zurück, wenn der Wert von x größer als oder gleich 10 ist. Andernfalls wird "false" zurückgegeben |
< | Testet, ob ein Ausdruck "kleiner als" ist. Gibt "true" zurück, wenn expr1 kleiner als expr2 ist. | x < 10 gibt "true" zurück, wenn der Wert von x kleiner als 10 ist. Andernfalls wird "false" zurückgegeben |
<= | Testet, ob ein Ausdruck "kleiner/gleich" ist. Gibt "true" zurück, wenn expr1 kleiner oder gleich expr2 ist. | x <= 10 gibt "true" zurück, wenn der Wert von x kleiner als 10 ist. Andernfalls wird "false" zurückgegeben |
|| | Verkettet zwei Zeichenfolgen. | 'XYZ' || 'hello' gibt 'XYZhello' zurück |
BETWEEN | Bewertet einen Bereich. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Testet, ob ein Ausdruck mit einer Werteliste übereinstimmt. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Funktion | Beschreibung | Beispiel |
---|---|---|
NUMERIC_ID() | Generiert eine universell eindeutige ID, die eine 64-Bit-Zahl für jede Zeile darstellt. | NUMERIC_ID() gibt beispielsweise 3458761969522180096 und 3458762008176885761 zurück |
ROWID() | Generiert monoton aufsteigende 64-Bit-Zahlen. | ROWID() gibt beispielsweise 0 , 1 , 2 usw. zurück |
UUID() | Generiert eine universell eindeutige ID, die in einer 128-Bit-Zeichenfolge für jede Zeile besteht. | UUID() gibt zum Beispiel 20d45c2f-0d56-4356-8910-162f4f40fb6d zurück |
MONOTONICALLY_INCREASING_ID() |
Generiert eindeutige, monoton aufsteigende 64-Bit-Ganzzahlen, die keine aufeinanderfolgenden Zahlen sind. | MONOTONICALLY_INCREASING_ID() gibt beispielsweise 8589934592 und 25769803776 zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
COALESCE(value, value [, value]*) | Gibt das erste Nicht-Null-Argument zurück, falls vorhanden. Andernfalls wird Null zurückgegeben. | COALESCE(NULL, 1, NULL) gibt 1 zurück |
NULLIF(value, value) | Gibt Null zurück, wenn die beiden Werte gleich sind. Andernfalls wird der erste Wert zurückgegeben. | NULLIF('ABC','XYZ') gibt ABC zurück |
Funktion | Beschreibung | Beispiel |
---|---|---|
SCHEMA_OF_JSON(string) | Parst eine JSON-Zeichenfolge und leitet das Schema im DDL-Format ab. |
|
FROM_JSON(column, string) | Parst eine Spalte mit einer JSON-Zeichenfolge in einen der folgenden Typen mit dem angegebenen Schema.
|
|
TO_JSON(column) | Konvertiert eine Spalte vom Typ "Struct" oder "Struct-Array" oder vom Typ "Map" oder "Map-Array" in eine JSON-Zeichenfolge. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) gibt eine JSON-Zeichenfolge {"s1":[1,2,3],"s2":{"key":"value"}} zurück |
TO_MAP(string,column[,string,column]*) | Erstellt eine neue Spalte vom Typ "Map". Die Eingabespalten müssen als Schlüssel/Wert-Paare gruppiert werden. Die Eingabeschlüsselspalten dürfen nicht Null sein und müssen alle denselben Datentyp aufweisen. Die Eingabewertspalten müssen alle denselben Datentyp aufweisen. |
|
TO_STRUCT(string,column[,string,column]*) | Erstellt eine neue Spalte vom Typ "Struct". Die Eingabespalten müssen als Schlüssel/Wert-Paare gruppiert werden. |
|
TO_ARRAY(column[,column]*) | Erstellt eine neue Spalte vom Typ "Array". Die Eingabespalten müssen alle denselben Datentyp aufweisen. |
|
Datenflussoperatoren, die das Erstellen von Ausdrücken und hierarchischen Datentypen unterstützen, können Funktionen höherer Ordnung verwenden.
Die folgenden Operatoren werden unterstützt:
-
Aggregieren
-
Ausdruck
-
Filter
-
Join
-
Referenz
-
Teilen
-
Drehen
Funktion | Beschreibung | Beispiel |
---|---|---|
TRANSFORM(column, lambda_function) | Nimmt ein Array und eine anonyme Funktion an. Richten Sie ein neues Array ein, indem Sie die Funktion auf jedes Element anwenden und das Ergebnis dem Ausgabearray zuweisen. | Für ein Eingabearray mit Ganzzahlen [1, 2, 3] gibt TRANSFORM(array, x -> x + 1) ein neues Array von [2, 3, 4] zurück. |
TRANSFORM_KEYS(column, lambda_function) | Nimmt eine Karte und eine Funktion mit 2 Argumenten (Schlüssel und Wert) und gibt eine Karte zurück, in der die Schlüssel den Typ des Ergebnisses der Lambda-Funktion haben und die Werte den Typ der Spaltenzuordnungswerte haben. | Bei einer Eingabezuordnung mit Ganzzahlschlüsseln und Zeichenfolgenwerten von {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'} gibt TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) eine neue Zuordnung von {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'} zurück. |
TRANSFORM_VALUES(column, lambda_function) | Nimmt eine Karte und eine Funktion mit 2 Argumenten (Schlüssel und Wert) und gibt eine Karte zurück, in der die Werte den Typ des Ergebnisses der Lambda-Funktionen haben und die Schlüssel den Typ der Spaltenzuordnungsschlüssel haben. | Bei einer Eingabezuordnung mit Zeichenfolgenschlüsseln und Zeichenfolgenwerten von {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'} gibt TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) eine neue Zuordnung von {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} zurück. |
ARRAY_SORT(array(...), lambda_function) |
Nur der Ausdrucksoperator unterstützt Nimmt ein Array an und sortiert nach der angegebenen Funktion, die 2 Argumente annimmt. Die Funktion muss -1, 0 oder 1 zurückgeben, je nachdem, ob das erste Element kleiner, gleich oder größer als das zweite Element ist. Wenn die Funktion ausgelassen wird, wird das Array in aufsteigender Reihenfolge sortiert. |
Das zurückgegebene Array ist: [1,5,6] |
Funktionsoperator
Verwenden Sie den Funktionsoperator, um Oracle Cloud Infrastructure Functions aus Data Integration aufzurufen.
Bei komplexen Datenstrukturen wie Map, Array und Composite (Struct) wird derzeit nur das JSON-Serie-Format unterstützt.
Bevor Sie OCI Functions aus einem Datenfluss in Data Integration verwenden, verstehen Sie die Abhängigkeiten, und schließen Sie die erforderlichen Aufgaben ab.
Die Funktion, die Sie aufrufen möchten, muss in OCI Functions bereitgestellt sein. Die Funktion kann in jeder Sprache geschrieben werden.
Stellen Sie mit der folgenden Aufgabencheckliste sicher, dass Sie über das erforderliche Setup und die erforderlichen Informationen zur Verwendung des Funktionsoperators mit OCI Functions verfügen.
Aufgabe | Anforderung |
---|---|
OCI Functions einrichten | In diesem Thema wird vorausgesetzt, dass der Mandant und die Entwicklungsumgebung bereits für das Deployment von Funktionen in OCI Functions eingerichtet sind. Siehe Funktionen vorbereiten. In Data Integration können nur Funktionen verwendet werden, die in OCI Functions bereitgestellt sind. |
Policys erstellen, um den Aufruf und die Verwaltung von Funktionen zu kontrollieren | In diesem Thema wird davon ausgegangen, dass Sie oder der Mandantenadministrator bereits die erforderlichen Oracle Cloud Infrastructure-Policys erstellt haben. Informationen hierzu finden Sie unter Policys zur Kontrolle des Zugriffs auf Netzwerkressourcen und funktionsbezogene Ressourcen erstellen. In einer Produktionsumgebung möchten Sie möglicherweise festlegen, dass Benutzer Funktionen nur in einer bestimmten Anwendung oder nur eine bestimmte Funktion aufrufen können. Beispiel: Um festzulegen, dass Benutzer Funktionen nur in einem bestimmten Workspace aufrufen können, geben Sie die Policy-Anweisungen im folgenden Format ein:
So legen Sie fest, dass Benutzer nur eine bestimmten Funktion in einem Workspace aufrufen können:
Siehe Zugriff zum Aufrufen und Verwalten von Funktionen steuern. |
Erstellen Sie eine Anwendung in OCI Functions. | Eine Anwendung ist eine logische Gruppierung von Funktionen. In einer Anwendung geben Sie ein bis drei Subnetze an, in denen Funktionen ausgeführt werden. Funktionen, die in einer Anwendung ausgeführt werden, sind von Funktionen isoliert, die in einer anderen Anwendung ausgeführt werden. |
Stellen Sie eine Funktion in OCI Functions bereit. |
Damit die Funktion in OCI Functions mit dem Data Integration-Funktionsoperator in einem Datenfluss funktioniert, darf die Funktion keine ID mit einem Leerzeichen lesen oder schreiben. Wenn Sie eine Funktion mit der Fn-Projekt-CLI in OCI Functions bereitstellen, wird die Funktion als Docker-Image erstellt und in eine angegebene Docker-Registry per Push übertragen. |
Informationen erfassen, die für die Verwendung der bereitgestellten Funktion mit dem Funktionsoperator erforderlich sind | Wenn Sie einen Funktionsoperator in einem Data Integration-Datenfluss hinzufügen und konfigurieren, benötigen Sie folgende Informationen:
|
Mit einem Funktionsoperator können Sie eine in OCI Functions bereitgestellte Funktion verwenden, um Daten aus einer Eingabequelle zu verarbeiten. Dabei werden primitive und komplexe Datentypen unterstützt.
Geben Sie die Eingabeausprägung der Funktion sowie die Eingabe- und Ausgabeattribute an, die der Funktionsoperator lesen und schreiben soll. Ordnen Sie dann die Quellattribute manuell den Eingabeattributen zu.
Derzeit wird nur das JSON-Serialisierungsformat für komplexe Datenstrukturen wie Map, Array und Composite (Struct) unterstützt.
Im folgenden Verfahren wird davon ausgegangen, dass Sie einen Quelloperator mit der Datenentity hinzugefügt und konfiguriert haben, die Sie mit der Funktion verwenden möchten.
Die Funktion, die Sie mit einem Funktionsoperator verwenden möchten, muss in einer Anwendung in Oracle Cloud Infrastructure Functions bereitgestellt sein.
- Wählen Sie auf der Leinwand den Funktionsoperator aus.
- Klicken Sie im Bereich Eigenschaften auf der Registerkarte Details für OCI-Funktion auf Auswählen.
- Wählen Sie im Bereich das Compartment mit der OCI Functions-Anwendung aus, in der die gewünschte Funktion bereitgestellt ist.
- Wählen Sie die Anwendung in OCI Functions mit der bereitgestellten Funktion aus.
- Wählen Sie im Abschnitt OCI-Funktion die Funktion aus.
- Wählen Sie OK aus.
Nachdem Sie eine bereitgestellte Funktion ausgewählt haben, geben Sie die Eigenschaften an, die die Eingabedaten für die zu verarbeitende Funktion, die Felder in der Funktionskonfiguration und die von der Funktion zurückgegebenen Ausgabedaten definieren.
Verwenden Sie kein Leerzeichen im ID-Namen für ein Eingabeattribut, ein Ausgabeattribut oder ein Funktionsfeld. Auch Namen wie "Element", "Schlüssel" und "Wert" sind nicht zulässig.
- Wählen Sie unter Funktionseigenschaften die Option Eigenschaft hinzufügen aus.
- Wählen Sie im Bereich den Typ der Eigenschaft aus, die Sie angeben möchten.
- Eingabeattribute: Eingabeausprägung für den Operator. Geben Sie mindestens ein Attribut als eingehendes Attribut für die zu verarbeitende Funktion an. Eingabeattribute werden den eingehenden Attributen aus der Datenentityquelle zugeordnet.
- Funktionskonfiguration: Geben Sie mindestens ein Funktionsfeld an, das die Eingabeausprägung der Funktion definiert. Ein Feld hat einen Namen und einen Wert. Der Wert eines Feldes gibt ein Eingabeattribut an.
- Ausgabeattribute: Ausgabeausprägung für den Operator. Geben Sie null oder mehr Attribute an, um die Ausgabe der Funktion nach der Verarbeitung der Daten darzustellen. Fügen Sie für jedes Funktionsfeld, das in der Ausgabe enthalten sein soll, ein Ausgabeattribut hinzu. Nachfolgende Downstreamoperatoren können die Ausgabeattribute verwenden.
- Geben Sie im Feld ID einen Namen für die Eigenschaft ein. Verwenden Sie kein Leerzeichen im Namen für ein Eingabeattribut, ein Ausgabeattribut oder ein Funktionsfeld.
- Wählen Sie den Datentyp der Eigenschaft aus.
Geben Sie für einen primären Datentyp je nach Typ und Datentyp der angegebenen Eigenschaft die folgenden Felder und andere anwendbare Felder an.
- Länge: Geben Sie eine Länge für ein Eingabe- oder Ausgabeattribut ein. Beispiel: Sie geben eine Länge für einen numerischen oder Varchar-Datentyp an.
- Wert: Geben Sie für ein Funktionsfeld einen Wert ein, der mit einem Eingabeattribut übereinstimmt.
Geben Sie für den komplexen Datentyp "Map" das Schlüssel/Wert-Paar für ein Mapelement an. Wählen Sie Datentyp hinzufügen aus, um den Schlüsseldatentyp und Wertdatentyp auszuwählen.
- Schlüssel: Wählen Sie nur primäre Datentypen aus.
- Wert: Wählen Sie primitive oder komplexe Datentypen aus.
Wählen Sie für einen komplexen Datentyp "Array" die Option Datentyp hinzufügen, um den Elementdatentyp anzugeben. Sie können primitive oder komplexe Datentypen auswählen.
Geben Sie für den Datentyp "Composite" (Struct) die untergeordneten Schemaelemente an. Um ein untergeordnetes Schemaelement hinzuzufügen, wählen Sie das Pluszeichen (+) neben dem Namen des übergeordneten Schemas.
Geben Sie im Bereich "Feld hinzufügen" für ein untergeordneter Schemaelement die ID ein, und wählen Sie einen Datentyp aus. Sie können primitive oder komplexe Datentypen auswählen. Wählen Sie Hinzufügen, um das untergeordnete Schemaelement hinzuzufügen.
Wählen Sie erneut das Pluszeichen +, wenn Sie dem übergeordneten Schema mehrere untergeordnete Schemaelemente hinzufügen möchten.
Zum Bearbeiten oder Löschen eines untergeordneten Schemas verwenden Sie das Menü "Aktionen" (
) am Ende der Zeile.
Das übergeordnete Schemaelement können Sie nicht löschen.
- Wählen Sie im Bereich "Eigenschaft hinzufügen" die Option Hinzufügen aus.
- Wiederholen Sie die Schritte, um die benötigten Eigenschaften zum Definieren der Funktionseingabe, der Funktionsfelder und der Funktionsausgabe hinzuzufügen.
Operator vereinfachen
Verwenden Sie den Vereinfachungsoperator, um hierarchische Daten in ein vereinfachtes Format für die Verwendung mit anderen relationalen Daten umzuwandeln. Der Vereinfachungsprozess wird auch als Denormalisierung oder Entschlüsselung bezeichnet.
Sie können folgende hierarchische Dateiformate denormalisieren:
- JSON und mehrzeilige JSON
- Avro
- Parquet
Der derzeit unterstützte hierarchische Datentyp, den Sie entschlüsseln können, ist Array. Sie können nur einen Arrayknoten in einem hierarchischen Dataset zum Vereinfachen auswählen. Die Datenstruktur wird von der Root zum ausgewählten Arrayknoten vereinfacht und in einem vereinfachten Format dargestellt. Wenn das Dataset über andere Arrayknoten verfügt, können Sie diese in Zeichenfolgen konvertieren.
Sie können die Attribute oder Felder konfigurieren, die in die vereinfachte Ausgabe aufgenommen werden sollen, indem Sie Voreinstellungen für Prognosen festlegen.
Projektionsvoreinstellungen sind Einstellungen für das Format, die Anzahl und den Typ der projizierten Attribute, die nach dem Vereinfachen der eingehenden Daten in die Ausgabe aufgenommen werden sollen.
Data Integration bietet vier Standardeinstellungen für Projekteinstellungen, die standardmäßig ausgewählt sind, was zu einer prognostizierten Ausgabe führt, die Folgendes enthält:
- Indexarrays
- Alle Attribute bis zum Attribut, das zum Vereinfachen ausgewählt wurde
- Nullwerte für die Attribute, die in den nachfolgenden Arrays fehlen
- Herkunft des übergeordneten Namens in den Attributnamen
Um die Projektionsvoreinstellungen zu verstehen, die Sie konfigurieren können, verwenden Sie die folgenden Themen mit dem Beispiel für die JSON-Datenstruktur.
Beispiel für JSON-Datenstruktur
id
vehicle[]
make
model
insurance{}
company
policy_number
maintenance[]
date
description[]
dealerdetails[]
servicestation1[]
dealeraddress[]
city
state
contact
dealername
servicestation2[]
dealeraddress[]
city
state
contact
dealername
Mit der Voreinstellung Erstellen und Projektarrayindizes können Sie steuern, ob Indexattribute für Arrays in die vereinfachte Ausgabe aufgenommen werden sollen.
Das Indexattribut stellt den Index eines Arrays dar. Angenommen, das Array ist ["a","b","c"]
, dann ist der Index für "a" 0, der Index für "b" ist 1 und der Index für "c" ist 2.
Standardmäßig erstellt Data Integration ein Attribut mit dem Suffix _INDEX
für den Arrayknoten, in den Sie Daten vereinfachen möchten. Der Datentyp eines Arrayindexattributs ist "Ganzzahl".
Indexattribute werden auch für die übergeordneten Arrayknoten des ausgewählten Arrayknotens erstellt. Der Vereinfachungsvorgang wirkt sich auf alle übergeordneten Arrayknoten in der hierarchischen Struktur aus, von der Root bis zum ausgewählten Knoten. Wenn ein betroffener übergeordneter Arrayknoten gleichgeordnete Arrays aufweist, werden keine Indexattribute für diese gleichgeordneten Arrayknoten erstellt.
Wenn Sie im JSON-Datenstrukturbeispiel das Array dealeraddress
auswählen, das zur Vereinfachung unter servicestation2
steht, erstellt Data Integration fünf Arrayindexattribute: eines für den ausgewählten Arrayknoten und vier für die übergeordneten Knoten, die vom Vereinfachungsvorgang betroffen sind.
Nach dem Vereinfachen lauten die Attribute in der vereinfachten Struktur wie folgt:
id
vehicle_INDEX
vehicle_make
vehicle_model
vehicle_insurance
company
policy_number
vehicle_maintenance_INDEX
vehicle_maintenance_date
vehicle_maintenance_description
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation1
dealeraddress
city
state
contact
dealername
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
vehicle_maintenance_servicestation2_dealeraddress_dealername
Für servicestation1
wird kein Arrayindexattribut erstellt, weil der Arrayknoten ein gleichgeordnetes Element des betroffenen übergeordneten Knotens servicestation2
ist. Ebenso wird kein Indexattribut für description
erstellt, da der Arrayknoten ein gleichgeordnetes Element des betroffenen übergeordneten Knotens dealerdetails
ist.
Wenn Sie die Projektionsvoreinstellung Array-Indizes erstellen und projektieren nicht auswählen, lauten die Attribute in der vereinfachten Struktur wie folgt:
id
vehicle_make
vehicle_model
vehicle_insurance
company
policy_number
vehicle_maintenance_date
vehicle_maintenance_description
vehicle_maintenance_servicestation1
dealeraddress
city
state
contact
dealername
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
vehicle_maintenance_servicestation2_dealeraddress_dealername
Mit der Voreinstellung Alle Attribute bis zum vereinfachten Array beibehalten können Sie steuern, ob die Attribute, die nicht Teil der vereinfachten Arrays sind, in die vereinfachte Ausgabe aufgenommen werden sollen.
Standardmäßig zeigt Data Integration alle Attribute vom Stamm bis zum ausgewählten Array an, einschließlich gleichrangiger Arrays, die nicht von der Vereinfachung betroffen sind.
Wenn Sie im Beispiel für die JSON-Datenstruktur die Projektionsvoreinstellung Alle Attribute bis zum vereinfachten Array beibehalten nicht auswählen, lauten die Attribute in der vereinfachten Struktur wie folgt:
id
vehicle_INDEX
vehicle_maintenance_INDEX
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
Mit der Projektionsvoreinstellung Eine einzelne Zeile mit Nullwerten für fehlendes übergeordnetes Array erstellen können Sie steuern, ob Zeilen übersprungen werden sollen, die nicht von der Vereinfachung betroffen sind.
Die Auswirkung der Einstellung Eine einzelne Zeile mit Nullwerten für fehlendes übergeordnetes Array erstellen wird nur auf der Registerkarte "Daten" angezeigt. Standardmäßig zeigt Data Integration Nullwerte für die Attribute an, die in den nachfolgenden Arrays fehlen.
Beispiel: Es handelt sich um eine prognostizierte Ausgabe mit Nullwerten:
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |0 |Laptop |20 |
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |1 |Charger |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |0 |Mouse |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |1 |Keyboard |1 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |0 |Laptop |20 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |1 |Charger |3 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |0 |Chair |4 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |1 |Lamp |2 |
|Company3|Bellevue|null |true |[...]|0 |4 |123.34 |null |null |null |
|Company4|Kirkland|null |null |null |null |null |null |null |null |null |
Wenn Sie die Option nicht auswählen, werden die Zeilen übersprungen, und die prognostizierte Ausgabe lautet:
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |0 |Laptop |20 |
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |1 |Charger |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |0 |Mouse |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |1 |Keyboard |1 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |0 |Laptop |20 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |1 |Charger |3 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |0 |Chair |4 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |1 |Lamp |2 |
Mit der Voreinstellung Übergeordnete Namensherkunft in Attributnamen beibehalten für die Projektion können Sie steuern, ob die übergeordneten Namen in die Namen der untergeordneten Attribute aufgenommen werden sollen.
Standardmäßig erstellt Data Integration untergeordnete Knotennamen mit ihren übergeordneten Knotennamen.
Im Beispiel für die JSON-Datenstruktur lauten die Attribute mit übergeordneten Namen in der vereinfachten Struktur wie folgt (vorausgesetzt, gleichgeordnete Arrays, die nicht von Vereinfachungen betroffen sind, werden in der Ausgabe ausgeschlossen):
id
vehicle_INDEX
vehicle_maintenance_INDEX
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
Wenn Sie die Voreinstellung Übergeordnete Namensherkunft in Attributnamen beibehalten nicht auswählen, lauten die Attribute wie folgt:
id
vehicle_INDEX
maintenance_INDEX
dealerdetails_INDEX
servicestation2_INDEX
dealeraddress_INDEX
city
state
contact
Bei der folgenden Prozedur wird davon ausgegangen, dass Sie einen Quelloperator hinzugefügt und den Operator zu einer Object Storage-Quelle mit komplexen Datentypen wie einer JSON-Datei konfiguriert haben.
Nachdem Sie ein komplexes Attribut zum Vereinfachen ausgewählt haben, können weitere Arrayknoten in der vereinfachten Struktur vorhanden sein.
Mit den anderen Arrayknoten in einer vereinfachten Struktur können Sie ein Array primitiver Datentypen oder ein Array von Strukturen in eine Zeichenfolge konvertieren. Derzeit wird das Format einer Konvertierungszeichenfolge als JSON unterstützt.
Je nach Daten ist der Datentyp einer Konvertierungszeichenfolge VARCHAR oder BLOB. Sie können eine Konvertierungszeichenfolge von VARCHAR in CLOB und umgekehrt von CLOB in VARCHAR ändern.
Bei dem folgenden Verfahren wird davon ausgegangen, dass Sie einen Vereinfachungsoperator hinzugefügt und ein komplexes Attribut ausgewählt haben, um eine vereinfachte Datenstruktur zu erstellen.
Bei dem folgenden Verfahren wird davon ausgegangen, dass Sie einen Arrayknoten ausgewählt haben, der gegebenenfalls in eine Zeichenfolge konvertiert werden soll.
Wenn Sie einen Vereinfachungsoperator für einen Datenfluss konfigurieren, können Sie eine Vereinfachung rückgängig machen, indem Sie den Pfad Verkleinern um löschen.
Table-Funktionsoperator
Fügen Sie mit dem Tabellenfunktionsoperator Tabellenfunktionen hinzu, die Daten in Form von Tabellen zurückgeben.
Derzeit können nur integrierte Tabellenfunktionen aus einer Liste ausgewählt werden. Zu den Tabellenfunktionen, die vom Tabellenfunktionsoperator bereitgestellt werden, gehören Cube, tabellenübergreifende Analysen, häufige Elemente, Rollup und Spark SQL. Jede integrierte Tabellenfunktion verfügt über vordefinierte Felder, die Sie konfigurieren, um die gewünschte Datenerfassung zurückzugeben. Komplexe Logik kann in einer einzigen Funktion konsolidiert werden, die bestimmte Datenmengen zurückgibt. Die Parametrierung der Felder ermöglicht eine flexible Anpassung der Logik.
Ein Tabellenfunktionsoperator kann mit jedem anderen Operator innerhalb eines Datenflusses verbunden werden. Somit kann ein Tabellenfunktionsoperator als Datenquelle, als Midstreamoperator und als Ziel verwendet werden.
Im Folgenden finden Sie eine Liste der integrierten Tabellenfunktionen, die vom Tabellenfunktionsoperator unterstützt werden.
Speichert und speichert ein Dataset gemäß dem angegebenen Arbeitsspeicher level
.
Gibt ein neues Dataset im gecachten resilienten verteilten Dataset (RDD) zurück.
Parameter | Beschreibung |
---|---|
level |
Der zu verwendende Speicherspeicher:
|
Berechnet eine paarweise Häufigkeits- oder Eventualfalltabelle aus eindeutigen Werten der angegebenen beiden Spalten.
Die Anzahl der eindeutigen Werte für jede Spalte muss kleiner als 1e4 sein.
Gibt einen Datenframe zurück, der die Eventualfalltabelle enthält. In der Notfalltabelle:
- Der Name der ersten Spalte lautet
col1_col2
, wobeicol1
die erste Spalte undcol2
die zweite Spalte vor der Transformation ist. Die erste Spalte jeder Zeile sind die eindeutigen Werte voncol1
. - Die anderen Spaltennamen sind die eindeutigen Werte von
col2
. - Die Zählungen werden als Typ
long
zurückgegeben. - Paare ohne Vorkommen werden als Anzahl Null angegeben.
- Die maximale Anzahl von Paaren ungleich Null beträgt 1e6.
- Null-Elemente werden durch
null
ersetzt.
Parameter | Beschreibung |
---|---|
col1 |
Name der ersten Spalte. Einschränkungen finden Sie im Hinweis nach dieser Tabelle. Eindeutige Elemente aus |
col2 |
Name der zweiten Spalte. Einschränkungen finden Sie im Hinweis nach dieser Tabelle. Eindeutige Elemente aus |
In einem Spaltennamen sind nur die folgenden Zeichen zulässig:
- Klein- und Großbuchstaben
a-z
A-Z
- Zahlen
0-9
- Unterstrich
_
Beispiel
Angenommen, col1
ist age
und col2
ist salary
.
Vor der Transformation:
+---+------+
|age|salary|
+---+------+
|1 |100 |
|1 |200 |
|2 |100 |
|2 |100 |
|2 |300 |
|3 |200 |
|3 |300 |
+---+------+
Nach der Transformation:
+----------+---+---+---+
|age_salary|100|200|300|
+----------+---+---+---+
|2 |2 |0 |1 |
|1 |1 |1 |0 |
|3 |0 |1 |1 |
+----------+---+---+---+
Generiert einen mehrdimensionalen Cube aller möglichen Kombinationen anhand der angegebenen Spaltenliste und der Berechnungen in den angegebenen Aggregatfunktionsausdrücken.
Die folgenden Aggregatfunktionen werden in den Ausdrücken unterstützt:
AVG
COUNT
MEAN
MAX
MIN
SUM
Gibt nach der Cube-Transformation einen Datenframe zurück.
Parameter | Beschreibung |
---|---|
cubeColumns |
Die durch Kommas getrennte Liste der Spalten, durch die der mehrdimensionale Cube generiert wird. |
aggExpressions |
Die Aggregatfunktionsausdrücke, die für die Spalten ausgeführt werden sollen. Beispiel: |
Beispiel
Vor der Transformation:
+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng |A |local |1000 |10 |
|Art |B |foreign|2000 |11 |
|Sport |C |local |1500 |13 |
|Eng |A |foreign|800 |19 |
|Art |A |foreign|3000 |30 |
|Eng |E |foreign|1000 |21 |
|Art |D |local |1000 |32 |
|Sport |C |local |1000 |28 |
+----------+-----+-------+------+---+
Wenn cubeColumns
department, region
und aggExpressions
salary -> avg, age -> max
ist (das Durchschnittsgehalt und das Höchstalter berechnen), lautet der After-Transformation-Cube:
+----------+-------+-----------------+--------+
|department|region |avg(salary) |max(age)|
+----------+-------+-----------------+--------+
|Eng |foreign|900.0 |21 |
|Sport |null |1250.0 |28 |
|Art |null |2000.0 |32 |
|Eng |null |933.3333333333334|21 |
|null |local |1125.0 |32 |
|Art |foreign|2500.0 |30 |
|null |foreign|1700.0 |30 |
|Eng |local |1000.0 |10 |
|null |null |1412.5 |32 |
|Sport |local |1250.0 |28 |
|Art |local |1000.0 |32 |
+----------+-------+-----------------+--------+
Generiert synthetische Daten mit dem angegebenen Dateiformat und Inhalt. Folgende Dateiformate werden unterstützt:
- CSV
- JSON
Gibt eine Datenentity zurück. Die synthetische Datenquelle kann in Pipeline-Einheitentests verwendet werden, bei denen reale Daten nicht verwendet oder verschoben werden.
Parameter | Beschreibung |
---|---|
format |
Der Dateityp. Unterstützte Werte sind:
|
content |
Der Dateiinhalt für das angegebene Format. |
Beispiel
Beispiel für einen CSV-Inhalt:
co1,co2,co3
1,B,3
A,2,C
Ergebnis der Datengenerierung:
+---+---+---+
|co1|co2|co3|
+---+---+---+
|1 |B |3 |
+---+---+---+
|A |2 |C |
+---+---+---+
Sucht Duplikate in der angegebenen Spaltenliste und gibt ein neues Dataset zurück, wobei die doppelten Zeilen entfernt wurden.
Parameter | Beschreibung |
---|---|
columns |
Ein Spaltenname oder eine durch Komma getrennte Liste mit Spaltennamen. |
Beispiel
Vor der Transformation:
+---+---+
|a |b |
+---+---+
|1 |2 |
|3 |4 |
|1 |3 |
|2 |4 |
+---+---+
Wenn columns
a
ist, lautet das Dataset nach der Transformation:
+---+---+
|a |b |
+---+---+
|1 |2 |
|3 |4 |
|2 |4 |
+---+---+
Sucht häufige Elemente in der angegebenen Spalte oder Spaltenliste mit der angegebenen Mindesthäufigkeit.
Der von Karl et al. vorgeschlagene Algorithmus für häufige Elementanzahl wird verwendet, um häufige Elemente zu finden. Falsche Positive sind möglich.
Gibt einen Datenbereich mit einem Array von häufigen Elementen für jede Spalte zurück.
Parameter | Beschreibung |
---|---|
freqItems |
Ein Spaltenname oder eine durch Komma getrennte Liste mit Spaltennamen, für die Sie häufige Elemente suchen möchten. |
support |
Minimale Häufigkeit, mit der ein Artikel als häufig betrachtet wird. Der Wert muss größer als 1e-4 sein (Dezimalwert von Beispiel: |
Beispiel
Vor der Transformation:
+-------+--------------+
|user_id|favorite_fruit|
+-------+--------------+
| 1| apple|
| 2| banana|
| 3| apple|
| 4| orange|
| 5| banana|
| 6| banana|
| 7| apple|
+-------+--------------+
Wenn freqItems
favorite_fruit
und support
0.6
ist, lautet der nach der Transformation zurückgegebene Dataframe:
+------------------------+
|favorite_fruit_freqItems|
+------------------------+
| [banana]|
+------------------------+
Entfernt Zeilen, die Null- oder NaN-Werte in der angegebenen Spalte oder Spaltenliste enthalten.
Gibt einen Datenbereich zurück, der die Zeilen ausschließt.
Parameter | Beschreibung |
---|---|
how |
Gibt an, ob eine Zeile gelöscht werden soll. Unterstützte Werte sind:
Der Parameter |
cols |
Ein Spaltenname oder eine durch Komma getrennte Liste mit Spaltennamen. |
minNonNulls |
Die Mindestanzahl von Werten, die eine Zeile enthalten kann, die nicht Null und nicht NaN sind. Löscht die Zeilen, die weniger als das angegebene Minimum enthalten. Der Parameter |
Beispiel
Vor der Transformation:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Wenn how
any
und cols
name
ist, lautet der nach der Transformation zurückgegebene Dataframe:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Wenn Sie den Parameter how
mit dem Wert all
verwenden, wird eine Zeile nur gelöscht, wenn alle zugehörigen Werte Null sind. Beispiel vor der Transformation:
+----+--------+----+
| id| name| age|
+----+--------+----+
| 1|John Doe| 30|
| 2| null|null|
| 3|Jane Doe| 25|
| 4|Jake Doe|null|
|null| null|null|
+----+--------+----+
Nach der Transformation:
+---+--------+----+
| id| name| age|
+---+--------+----+
| 1|John Doe| 30|
| 2| null|null|
| 3|Jane Doe| 25|
| 4|Jake Doe|null|
+---+--------+----+
Ersetzt Nullwerte und gibt einen Datenframe mit den ersetzten Werten zurück.
Parameter | Beschreibung |
---|---|
replacement |
Die Schlüssel/Wert-Zuordnung zum Ersetzen von Nullwerten. Der Schlüssel ist ein Spaltenname. Der Wert ist ein Ersatzwert. Der Schlüssel verweist auf den Ersatzwert. Beispiel: Ein Ersatzwert wird in den Datentyp der Spalte konvertiert. Ein Ersatzwert muss den folgenden Typ aufweisen:
|
Beispiel
Vor der Transformation:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Wenn die Schlüssel/Wert-Zuordnung folgendermaßen lautet:
id -> 3
name -> unknown
age -> 10
Nach der Transformation:
+---+-------+---+
|id |name |age|
+---+-------+---+
|1 |Alice |25 |
|2 |unknown|28 |
|3 |Bob |10 |
|4 |Charlie|30 |
+---+-------+---+
Ersetzt einen Wert durch einen anderen Wert in der oder den angegebenen Spalten, indem Schlüssel in der angegebenen Schlüssel- und Ersatzwertzuordnung übereinstimmen.
Gibt einen neuen Datenframe zurück, der die ersetzte Transformation enthält.
Parameter | Beschreibung |
---|---|
cols |
Ein Spaltenname oder eine durch Komma getrennte Liste von Spaltennamen, auf die Ersatzwerte angewendet werden sollen. Wenn |
replacement |
Die zu verwendende Ersatzschlüssel/Wert-Zuordnung. Der Schlüssel ist ein zu ersetzender Wert. Der Wert ist der Ersetzungswert. Der Zuordnungswert kann Nullen enthalten. Der Schlüssel verweist auf den Ersatzwert. Beispiel: Das Schlüssel-Ersatzwertpaar muss denselben Typ haben. Nur die folgenden Typen werden unterstützt:
|
Beispiel
Vor der Transformation:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Wenn cols
name
und replacement
Alice -> Tom
ist, lautet der Dataframe nach der Transformation:
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Tom |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Teilt ein Dataset durch die angegebenen Spalten in die angegebene Anzahl von Partitionen auf.
Gibt ein neues Dataset zurück, das mit Hash partitioniert ist. Die genaue Anzahl der angegebenen Partition wird zurückgegeben.
Parameter | Beschreibung |
---|---|
partitionColumns |
Ein Spaltenname oder eine durch Komma getrennte Liste von Spaltennamen, nach denen das Dataset partitioniert ist. |
numberOfPartitions |
Die Anzahl von zu erstellenden Partitionen. |
Generiert ein mehrdimensionales Rollup möglicher Kombinationen anhand der angegebenen Spaltenliste und der Berechnungen in den angegebenen Aggregatfunktionsausdrücken.
Die folgenden Aggregatfunktionen werden in den Ausdrücken unterstützt:
AVG
COUNT
MEAN
MAX
MIN
SUM
Gibt nach der Rollup-Transformation einen Datenframe zurück.
Parameter | Beschreibung |
---|---|
rollupColumns |
Die durch Kommas getrennte Liste der Spalten, durch die das mehrdimensionale Rollup generiert wird. |
aggExpressions |
Die Aggregatfunktionsausdrücke, die für die Spalten ausgeführt werden sollen. Beispiel: |
Beispiel
Vor der Transformation:
+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng |A |local |1000 |10 |
|Art |B |foreign|2000 |11 |
|Sport |C |local |1500 |13 |
|Eng |A |foreign|800 |19 |
|Art |A |foreign|3000 |30 |
|Eng |E |foreign|1000 |21 |
|Art |D |local |1000 |32 |
|Sport |C |local |1000 |28 |
+----------+-----+-------+------+---+
Wenn rollupColumns
department, region
und aggExpressions
salary -> avg, age -> max
ist (das Durchschnittsgehalt und das Höchstalter berechnen), lautet das Rollup nach der Transformation:
+----------+-------+-----------------+--------+
|department|region |avg(salary) |max(age)|
+----------+-------+-----------------+--------+
|Eng |foreign|900.0 |21 |
|Sport |null |1250.0 |28 |
|Art |null |2000.0 |32 |
|Eng |null |933.3333333333334|21 |
|Art |foreign|2500.0 |30 |
|Eng |local |1000.0 |10 |
|null |null |1412.5 |32 |
|Sport |local |1250.0 |28 |
|Art |local |1000.0 |32 |
+----------+-------+-----------------+--------+
Führt Spark SQL-Abfragen für eingehende Daten aus, indem zuerst temporäre Views mit den angegebenen Tabellennamen erstellt werden.
Parameter | Beschreibung |
---|---|
SQL |
Die auszuführende SQL-Anweisung oder das auszuführende Skript. Beispiel: |
tableName |
Ein Tabellenname oder eine durch Komma getrennte Liste von Tabellennamen, mit denen Spark temporäre Tabellen erstellt. Beispiel: |
Generiert eine geschichtete Probe ohne Ersatz basierend auf der angegebenen Probenahmefraktion für jedes Stratum.
Gibt einen neuen Datenframe zurück, der die stratifizierte Probe darstellt.
Parameter | Beschreibung |
---|---|
strata_col |
Die Spalte, in der die Schichten definiert sind. |
fractions |
Die Stichprobenfraktion für jedes Stratum von Beispiel: Wenn kein Bruch angegeben wird, wird Null angenommen. |
sample_size |
Wenn |
seed |
Verwenden Sie eine beliebige Zufallszahl in |
Beispiel
Vor der Transformation:
+---+-----+
|key|value|
+---+-----+
| 1| 1|
| 1| 2|
| 2| 1|
| 2| 1|
| 2| 3|
| 3| 2|
| 3| 3|
+---+-----+
Wenn strata_col
key
und fractions
wie folgt lautet:
1 -> 1.0, 3 -> 0.5
Nach der Transformation:
+---+-----+
|key|value|
+---+-----+
| 1| 1|
| 1| 2|
| 3| 2|
+---+-----+
Berechnet die angegebenen Statistiken für numerische und Zeichenfolgenspalten.
Wenn keine Statistiken angegeben werden, werden alle folgenden Daten berechnet:
COUNT
MEAN
STDDEV
MIN
- ungefähre Quartile (Prozentile bei 25%, 50% und 75%)
MAX
Parameter | Beschreibung |
---|---|
statistics |
Eine durch Kommas getrennte Liste mit Statistiken. Unterstützte Werte sind:
Beispiel: |
Beispiel
Vor der Transformation:
+----------+------+-----------------+--------+
|department|gender|avg(salary) |max(age)|
+----------+------+-----------------+--------+
|Eng |female|900.0 |21 |
|Sport |null |1250.0 |28 |
|Art |null |2000.0 |32 |
|Eng |null |933.3333333333334|21 |
|Art |female|2500.0 |30 |
|Eng |male |1000.0 |10 |
|null |null |1412.5 |32 |
|Sport |male |1250.0 |28 |
|Art |male |1000.0 |32 |
+----------+------+-----------------+--------+
Angenommen, statistics
ist count, mean, stddev, min, 27%, 41%, 95%, max
.
Nach der Transformation:
+-------+----------+-----+------+----------------+----------------+
|summary|department|group|gender|salary |age |
+-------+----------+-----+------+----------------+----------------+
|count |8 |8 |8 |8 |8 |
|mean |null |null |null |1412.5 |20.5 |
|stddev |null |null |null |749.166203188585|8.76682056718072|
|min |Art |A |female|800 |10 |
|27% |null |null |null |1000 |13 |
|41% |null |null |null |1000 |19 |
|95% |null |null |null |3000 |32 |
|max |Sport |E |male |3000 |32 |
+-------+----------+-----+------+----------------+----------------+