Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
GILT FÜR:
Azure Data Factory
Azure Synapse Analytics
Tip
Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. In Microsoft Fabric können Sie alle erforderlichen Aufgaben ausführen, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!
Datenflüsse sind sowohl in Azure Data Factory-Pipelines als auch in Azure Synapse Analytics-Pipelines verfügbar. Dieser Artikel gilt für Zuordnungsdatenflüsse. Wenn Sie mit Transformationen noch nicht fertig sind, lesen Sie den einführungsartikel Transformieren von Daten mithilfe von Zuordnungsdatenflüssen.
Dieser Artikel enthält Details zur Verwendung aller Ausdrücke und Funktionen, die von Azure Data Factory und Azure Synapse Analytics beim Zuordnen von Datenflüssen unterstützt werden. Eine Zusammenfassung der unterstützten Funktionstypen finden Sie in den folgenden Artikeln:
- Aggregatfunktionen
- Arrayfunktionen
- Zwischengespeicherte Lookupfunktionen
- Konvertierungsfunktionen
- Datums- und Uhrzeitfunktionen
- Ausdrucksfunktionen
- Zuordnungsfunktionen
- Metafunctions
- Fensterfunktionen
Alphabetische Liste aller Funktionen
Die folgende alphabetische Liste enthält alle Funktionen, die in Zuordnungsdatenflüssen verfügbar sind.
A
abs
abs(<value1> : number) => number
Gibt den absoluten Wert einer Zahl zurück.
abs(-20) -> 20abs(10) -> 10
acos
acos(<value1> : number) => double
Berechnet einen invertierten Kosinuswert.
acos(1) -> 0.0
add
add(<value1> : any, <value2> : any) => any
Addiert ein Paar Zeichenfolgen oder Zahlen. Fügt vielen Tagen ein Datum hinzu. Fügt einem Zeitstempel eine Dauer hinzu. Fügt ein Array eines ähnlichen Typs an ein anderes an. Entspricht dem Operator +.
add(10, 20) -> 3010 + 20 -> 30add('ice', 'cream') -> 'icecream''ice' + 'cream' + ' cone' -> 'icecream cone'add(toDate('2012-12-12'), 3) -> toDate('2012-12-15')toDate('2012-12-12') + 3 -> toDate('2012-12-15')[10, 20] + [30, 40] -> [10, 20, 30, 40]toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') + (days(1) + hours(2) - seconds(10)) -> toTimestamp('2019-02-04 07:19:18.871', 'yyyy-MM-dd HH:mm:ss.SSS')
addDays
addDays(<date/timestamp> : datetime, <days to add> : integral) => datetime
Fügt einem Datums- oder Zeitstempel Tage hinzu. Identisch mit dem + Operator für Datumsangaben.
addDays(toDate('2016-08-08'), 1) -> toDate('2016-08-09')
addMonths
addMonths(<date/timestamp> : datetime, <months to add> : integral, [<value3> : string]) => datetime
Fügt einem Datums- oder Zeitstempel Monate hinzu. Sie können optional eine Zeitzone übergeben.
addMonths(toDate('2016-08-31'), 1) -> toDate('2016-09-30')addMonths(toTimestamp('2016-09-30 10:10:10'), -1) -> toTimestamp('2016-08-31 10:10:10')
and
and(<value1> : boolean, <value2> : boolean) => boolean
Verwendet den logischen AND Operator. Identisch mit &&.
and(true, false) -> falsetrue && false -> false
approxDistinctCount
approxDistinctCount(<value1> : any, [ <value2> : double ]) => long
Ruft die ungefähre aggregierte Anzahl unterschiedlicher Werte für eine Spalte ab. Der optionale zweite Parameter dient zur Kontrolle des Schätzfehlers.
approxDistinctCount(ProductID, .05) => long
array
array([<value1> : any], ...) => array
Erstellt ein Array von Elementen. Alle Elemente sollten denselben Typ haben. Wenn keine Elemente angegeben werden, ist ein leeres Zeichenfolgenarray der Standardwert. Entspricht dem Erstellungsoperator [].
array('Seattle', 'Washington')['Seattle', 'Washington']['Seattle', 'Washington'][1]'Washington'
ascii
ascii(<Input> : string) => number
Gibt den numerischen Wert des Eingabezeichens zurück. Wenn die Eingabezeichenfolge mehrere Zeichen enthält, wird der numerische Wert des ersten Zeichens zurückgegeben.
ascii('A') -> 65ascii('a') -> 97
asin
asin(<value1> : number) => double
Berechnet einen invertierten Sinuswert.
asin(0) -> 0.0
assertErrorMessages
assertErrorMessages() => map
Gibt eine Zuordnung aller Fehlermeldungen für die Zeile mit der Assert-ID als Schlüssel zurück.
Examples
assertErrorMessages() => ['assert1': 'This row failed on assert1.', 'assert2': 'This row failed on assert2.']. In this example, at(assertErrorMessages(), 'assert1') would return 'This row failed on assert1.'
associate
reassociate(<value1> : map, <value2> : binaryFunction) => map
Erstellt eine Zuordnung von Schlüsseln/Werten. Alle Schlüssel und Werte sollten denselben Typ aufweisen. Wenn keine Elemente angegeben werden, wird standardmäßig eine Zeichenfolge einem Zeichenfolgentyp zugeordnet. Entspricht dem Erstellungsoperator [ -> ]. Schlüssel und Werte müssen sich abwechseln.
associate('fruit', 'apple', 'vegetable', 'carrot' )=> ['fruit' -> 'apple', 'vegetable' -> 'carrot']
at
at(<value1> : array/map, <value2> : integer/key type) => array
Sucht das Element an einem Arrayindex. Der Index basiert auf 1. Ein ungebundener Index führt zu einem NULL-Wert. Sucht einen Wert in einer Karte, wenn ein Schlüssel angegeben wird. Wenn der Schlüssel nicht gefunden wird, wird ein Nullwert zurückgegeben.
at(['apples', 'pears'], 1) => 'apples'at(['fruit' -> 'apples', 'vegetable' -> 'carrot'], 'fruit') => 'apples'
atan
atan(<value1> : number) => double
Berechnet einen invertierten Tangenswert.
atan(0) -> 0.0
atan2
atan2(<value1> : number, <value2> : number) => double
Gibt den Winkel im Bogenmaß zwischen der positiven X-Achse einer Ebene und dem durch die Koordinaten angegebenen Punkt zurück.
atan2(0, 0) -> 0.0
avg
avg(<value1> : number) => number
Ruft den Durchschnitt der Werte einer Spalte ab.
avg(sales)
avgIf
avgIf(<value1> : boolean, <value2> : number) => number
Ruft den Mittelwert der Werte einer Spalte basierend auf Kriterien ab.
avgIf(region == 'West', sales)
B
between
between(<value1> : any, <value2> : any, <value3> : any) => boolean
Überprüft, ob der erste Wert zwischen zwei anderen Werten liegt. Sie können numerische, Zeichenfolgen und datetime Werte vergleichen.
between(10, 5, 24)truebetween(currentDate(), currentDate() + 10, currentDate() + 20)false
bitwiseAnd
bitwiseAnd(<value1> : integral, <value2> : integral) => integral
Verwendet den bitweisen And Operator über integrale Typen hinweg. Entspricht dem Operator &.
bitwiseAnd(0xf4, 0xef)0xe4(0xf4 & 0xef)0xe4
bitwiseOr
bitwiseOr(<value1> : integral, <value2> : integral) => integral
Verwendet den bitweisen Or Operator über integrale Typen hinweg. Entspricht dem Operator |.
bitwiseOr(0xf4, 0xef)0xff(0xf4 | 0xef)0xff
bitwiseXor
bitwiseXor(<value1> : any, <value2> : any) => any
Verwendet den bitweisen Or Operator über integrale Typen hinweg. Identisch mit dem | Operator
bitwiseXor(0xf4, 0xef)0x1b(0xf4 ^ 0xef)0x1b(true ^ false)true(true ^ true)false
blake2b
blake2b(<value1> : integer, <value2> : any, ...) => string
Berechnet den Blake2-Digest einer Reihe von Spalten unterschiedlicher primitiver Datentypen bei einer Bitlänge, die nur Vielfache von 8 zwischen 8 und 512 sein kann. Sie können ihn verwenden, um einen Fingerabdruck für eine Zeile zu berechnen.
blake2b(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))'c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d'
blake2bBinary
blake2bBinary(<value1> : integer, <value2> : any, ...) => binary
Berechnet den Blake2-Hash einer Gruppe von Spalten verschiedener primitiver Datentypen mit einer angegebenen Bitlänge, die nur ein Vielfaches von 8 zwischen 8 und 512 sein kann. Sie können ihn verwenden, um einen Fingerabdruck für eine Zeile zu berechnen.
blake2bBinary(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))unHex('c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d')
byItem
byItem(<parent column> : any, <column name> : string) => any
Sucht ein Unterelement innerhalb einer Struktur oder eines Arrays von Strukturen. Wenn mehrere Übereinstimmungen vorhanden sind, wird die erste Übereinstimmung zurückgegeben. Wenn keine Übereinstimmungen vorhanden sind, wird ein NULL Wert zurückgegeben. Für den zurückgegebenen Wert muss eine Typkonvertierung anhand einer der Typkonvertierungsaktionen (wie ? date und ? string) erfolgen. Adressspaltennamen, die zur Entwurfszeit namentlich bekannt sind. Berechnete Eingaben werden nicht unterstützt, Aber Sie können Parameterersetzungen verwenden.
byItem( byName('customer'), 'orderItems') ? (itemName as string, itemQty as integer)byItem( byItem( byName('customer'), 'orderItems'), 'itemName') ? string
byName
byName(<column name> : string, [<stream name> : string]) => any
Wählt einen Spaltenwert nach Name im Stream aus. Sie können einen optionalen Streamnamen als zweites Argument übergeben. Wenn mehrere Übereinstimmungen vorhanden sind, wird die erste Übereinstimmung zurückgegeben. Wenn keine Übereinstimmungen vorhanden sind, wird ein NULL Wert zurückgegeben. Der zurückgegebene Wert muss von einer der Typkonvertierungsfunktionen (wie TO_DATE und TO_STRING) konvertiert werden. Adressspaltennamen, die zur Entwurfszeit namentlich bekannt sind. Berechnete Eingaben werden nicht unterstützt, Aber Sie können Parameterersetzungen verwenden.
toString(byName('parent'))toLong(byName('income'))toBoolean(byName('foster'))toLong(byName($debtCol))toString(byName('Bogus Column'))toString(byName('Bogus Column', 'DeriveStream'))
byNames
byNames(<column names> : array, [<stream name> : string]) => any
Wählen Sie ein Array von Spalten nach Name im Stream aus. Sie können einen optionalen Streamnamen als zweites Argument übergeben. Wenn mehrere Übereinstimmungen vorhanden sind, wird die erste Übereinstimmung zurückgegeben. Wenn keine Übereinstimmungen für eine Spalte vorhanden sind, ist die gesamte Ausgabe ein NULL Wert. Der zurückgegebene Wert erfordert eine Typkonvertierungsfunktion, wie beispielsweise toDate und toString. Adressspaltennamen, die zur Entwurfszeit namentlich bekannt sind. Berechnete Eingaben werden nicht unterstützt, Aber Sie können Parameterersetzungen verwenden.
toString(byNames(['parent', 'child']))byNames(['parent']) ? stringtoLong(byNames(['income']))byNames(['income']) ? longtoBoolean(byNames(['foster']))toLong(byNames($debtCols))toString(byNames(['a Column']))toString(byNames(['a Column'], 'DeriveStream'))byNames(['orderItem']) ? (itemName as string, itemQty as integer)
byOrigin
byOrigin(<column name> : string, [<origin stream name> : string]) => any
Wählt einen Spaltenwert nach Name im Ursprungsstream aus. Das zweite Argument ist der Name des Ursprungsstreams. Wenn mehrere Übereinstimmungen vorhanden sind, wird die erste Übereinstimmung zurückgegeben. Wenn keine Übereinstimmungen vorhanden sind, wird ein NULL Wert zurückgegeben. Der zurückgegebene Wert muss von einer der Typkonvertierungsfunktionen (wie TO_DATE und TO_STRING) konvertiert werden. Adressspaltennamen, die zur Entwurfszeit namentlich bekannt sind. Berechnete Eingaben werden nicht unterstützt, Aber Sie können Parameterersetzungen verwenden.
toString(byOrigin('ancestor', 'ancestorStream'))
byOrigins
byOrigins(<column names> : array, [<origin stream name> : string]) => any
Wählt ein Array von Spalten nach Name im Stream aus. Das zweite Argument ist der Datenstrom, von dem er stammt. Wenn mehrere Übereinstimmungen vorhanden sind, wird die erste Übereinstimmung zurückgegeben. Wenn keine Übereinstimmungen vorhanden sind, wird ein NULL Wert zurückgegeben. Der zurückgegebene Wert muss von einer der Typkonvertierungsfunktionen (wie TO_DATE und TO_STRING) konvertiert werden. Adressspaltennamen, die zur Entwurfszeit namentlich bekannt sind. Berechnete Eingaben werden nicht unterstützt, Aber Sie können Parameterersetzungen verwenden.
toString(byOrigins(['ancestor1', 'ancestor2'], 'ancestorStream'))
byPath
byPath(<value1> : string, [<streamName> : string]) => any
Sucht einen hierarchischen Pfad anhand des Namens im Stream. Sie können einen optionalen Streamnamen als zweites Argument übergeben. Wenn kein solcher Pfad gefunden wird, wird er zurückgegeben NULL. Spaltennamen/-pfade, die zur Entwurfszeit bekannt sind, sollten nur mit ihrem Namen oder Punktnotationspfad adressiert werden. Berechnete Eingaben werden nicht unterstützt, Aber Sie können Parameterersetzungen verwenden.
byPath('grandpa.parent.child') => column
byPosition
byPosition(<position> : integer) => any
Wählt einen Spaltenwert anhand seiner relativen Position (1-basiert) im Stream aus. Wenn die Position außerhalb der Grenzen liegt, wird ein NULL Wert zurückgegeben. Der zurückgegebene Wert muss mithilfe einer der Typkonvertierungsfunktionen konvertiert werden, wie etwa TO_DATE oder TO_STRING. Berechnete Eingaben werden nicht unterstützt, Aber Sie können Parameterersetzungen verwenden.
toString(byPosition(1))toDecimal(byPosition(2), 10, 2)toBoolean(byName(4))toString(byName($colName))toString(byPosition(1234))
C
case
case(<condition> : boolean, <true_expression> : any, <false_expression> : any, ...) => any
Basierend auf wechselnden Bedingungen wendet die case Funktion einen Wert oder den anderen an. Wenn die Anzahl von Eingaben gerade ist, ist der andere Wert für die letzte Bedingung standardmäßig NULL.
case(10 + 20 == 30, 'dumbo', 'gumbo') -> 'dumbo'case(10 + 20 == 25, 'bojjus', 'do' < 'go', 'gunchus') -> 'gunchus'isNull(case(10 + 20 == 25, 'bojjus', 'do' > 'go', 'gunchus')) -> truecase(10 + 20 == 25, 'bojjus', 'do' > 'go', 'gunchus', 'dumbo') -> 'dumbo'
cbrt
cbrt(<value1> : number) => double
Berechnet die Kubikwurzel einer Zahl.
cbrt(8) -> 2.0
ceil
ceil(<value1> : number) => number
Gibt den kleinsten Integerwert zurück, der nicht kleiner als die Zahl ist.
ceil(-0.1) -> 0
char
char(<Input> : number) => string
Gibt das ASCII-Zeichen zurück, das durch die Eingabenummer dargestellt wird. Wenn die Zahl größer als 256 ist, entspricht das Ergebnis „char (number % 256)“.
char(65) -> 'A'char(97) -> 'a'
coalesce
coalesce(<value1> : any, ...) => any
Gibt den ersten Wert ungleich NULL aus einem Satz von Eingaben zurück. Alle Eingaben müssen den gleichen Typ haben.
coalesce(10, 20) -> 10coalesce(toString(null), toString(null), 'dumbo', 'bo', 'go') -> 'dumbo'
collect
collect(<value1> : any) => array
Sammelt alle Werte des Ausdrucks in der aggregierten Gruppe in einem Array. Sie können Strukturen während dieses Prozesses in alternative Strukturen sammeln und transformieren. Die Anzahl der Elemente entspricht der Anzahl der Zeilen in dieser Gruppe und kann NULL-Werte enthalten. Die Anzahl der gesammelten Elemente sollte klein sein.
collect(salesPerson)collect(firstName + lastName))collect(@(name = salesPerson, sales = salesAmount) )
collectUnique
collectUnique(<value1> : any) => array
Sammelt alle Werte des Ausdrucks in der aggregierten Gruppe in einem eindeutigen Array. Sie können Strukturen während dieses Prozesses in alternative Strukturen sammeln und transformieren. Die Anzahl der Elemente entspricht der Anzahl der Zeilen in dieser Gruppe und kann NULL-Werte enthalten. Die Anzahl der gesammelten Elemente sollte klein sein.
collect(salesPerson)collect(firstName + lastName))collect(@(name = salesPerson, sales = salesAmount) )
columnNames
columnNames(
<value1>columnNames( : string, i><value1> : boolean) => array
Ruft die Namen aller Ausgabespalten für einen Stream ab. Sie können einen optionalen Streamnamen als erstes Argument übergeben. Das zweite Argument ist ebenfalls optional, mit „false“ als Standardwert. Wenn Sie das zweite Argument auf true() festlegen, gibt Data Factory nur Spalten zurück, die durch Schemadrift gedriftet sind.
columnNames()
columnNames('DeriveStream')
columnNames('DeriveStream', true())
columnNames('', true())
columns
columns([<stream name> : string]) => any
Ruft die Werte aller Ausgabespalten für einen Stream ab. Sie können einen optionalen Streamnamen als zweites Argument übergeben.
columns()
columns('DeriveStream')
compare
compare(<value1> : any, <value2> : any) => integer
Vergleicht zwei Werte des gleichen Typs. Gibt eine negative ganze Zahl zurück, wenn Wert1 < Wert2, 0 wenn Wert1 == Wert2 und ein positiver Wert, wenn Wert1 > Wert2.
(compare(12, 24) < 1) -> true
(compare('dumbo', 'dum') > 0) -> true
concat
concat(<this> : string, <that> : string, ...) => string
Verkettet eine variable Anzahl von Zeichenfolgen miteinander. Identisch mit dem + Operator mit Zeichenfolgen.
concat('dataflow', 'is', 'awesome') -> 'dataflowisawesome'
'dataflow' + 'is' + 'awesome' -> 'dataflowisawesome'
isNull('sql' + null) -> true
concatWS
concatWS(<separator> : string, <this> : string, <that> : string, ...) => string
Verkettet eine variable Anzahl von Zeichenfolgen unter Verwendung eines Trennzeichens miteinander. Der erste Parameter ist das Trennzeichen.
concatWS(' ', 'dataflow', 'is', 'awesome') -> 'dataflow is awesome'
isNull(concatWS(null, 'dataflow', 'is', 'awesome')) -> true
concatWS(' is ', 'dataflow', 'awesome') -> 'dataflow is awesome'
contains
contains(<value1> : array, <value2> : unaryfunction) => boolean
Gibt zurück true , wenn ein Element im bereitgestellten Array wie true im bereitgestellten Prädikat ausgewertet wird. Th-Funktion contains erwartet einen Verweis auf ein Element in der Prädikatfunktion als #item.
contains([1, 2, 3, 4], #item == 3) -> true
contains([1, 2, 3, 4], #item > 5) -> false
cos
cos(<value1> : number) => double
Berechnet einen Kosinuswert.
cos(10) -> -0.8390715290764524
cosh
cosh(<value1> : number) => double
Berechnet einen hyperbolischen Kosinuswert.
cosh(0) -> 1.0
count
count([<value1> : any]) => long
Ruft die aggregierte Anzahl von Werten ab. Wenn mindestens eine optionale Spalte angegeben wird, ignoriert er NULL-Werte bei der Zählung.
count(custId)
count(custId, custName)
count()
count(iif(isNull(custId), 1, NULL))
countAll
countAll([<value1> : any]) => long
Ruft die Aggregatanzahl von Werten einschließlich NULL-Werten ab.
countAll(custId)
countAll()
countDistinct
countDistinct(<value1> : any, [<value2> : any], ...) => long
Ruft die aggregierte Anzahl unterschiedlicher Werte für eine Gruppe von Spalten ab.
countDistinct(custId, custName)
countAllDistinct
countAllDistinct(<value1> : any, [<value2> : any], ...) => long
Ruft die Gesamtanzahl von unterschiedlichen Werten einer Spaltenmenge einschließlich NULL-Werten ab.
countAllDistinct(custId, custName)
countIf
countIf(<value1> : boolean, [<value2> : any]) => long
Ruft die Gesamtanzahl von Werten basierend auf Kriterien ab. Wenn die optionale Spalte angegeben ist, werden NULL-Werte bei der Zählung ignoriert.
countIf(state == 'CA' && commission < 10000, name)
covariancePopulation
covariancePopulation(<value1> : number, <value2> : number) => double
Ruft die Kovarianz der Population zweier Spalten ab.
covariancePopulation(sales, profit)
covariancePopulationIf
covariancePopulationIf(<value1> : boolean, <value2> : number, <value3> : number) => double
Ermittelt die Populationskovarianz von zwei Spalten basierend auf Kriterien.
covariancePopulationIf(region == 'West', sales)
covarianceSample
covarianceSample(<value1> : number, <value2> : number) => double
Ruft die Kovarianz einer Stichprobe zweier Spalten ab.
covarianceSample(sales, profit)
covarianceSampleIf
covarianceSampleIf(<value1> : boolean, <value2> : number, <value3> : number) => double
Ermittelt die Stichprobenkovarianz von zwei Spalten auf Grundlage von Kriterien.
covarianceSampleIf(region == 'West', sales, profit)
crc32
crc32(<value1> : any, ...) => long
Berechnet den CRC32-Hash einer Reihe von Spalten mit unterschiedlichen primitiven Datentypen, wenn eine Bitlänge angegeben wird, die nur Werte 0(256, 224, 256, 384 und 512 annehmen kann. Sie können ihn verwenden, um einen Fingerabdruck für eine Zeile zu berechnen.
crc32(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 3630253689L
cumeDist
cumeDist() => integer
Die cumeDist Funktion berechnet die Position eines Werts relativ zu allen Werten in der Partition. Das Ergebnis ist die Anzahl der Zeilen vor der aktuellen Zeile oder gleich dieser in der Reihenfolge der Partition, dividiert durch die Gesamtanzahl von Zeilen in der Fensterpartition. Alle gleichwertigen Werte in der Reihenfolge werden zur derselben Position ausgewertet.
cumeDist()
currentDate
currentDate([<value1> : string]) => date
Ruft das aktuelle Datum ab, wenn dieser Auftrag ausgeführt wird. Sie können eine optionale Zeitzone in Form von GMT, PST, UTC oder America/Cayman übergeben. Die lokale Zeitzone des Rechenzentrums/der Region der Datenfabrik wird als Standard verwendet. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java.
currentDate() == toDate('2250-12-31') -> false
currentDate('PST') == toDate('2250-12-31') -> false
currentDate('America/New_York') == toDate('2250-12-31') -> false
currentTimestamp
currentTimestamp() => timestamp
Ruft den aktuellen Zeitstempel mit der lokalen Zeitzone ab, wenn der Auftrag ausgeführt wird.
currentTimestamp() == toTimestamp('2250-12-31 12:12:12') -> false
currentUTC
currentUTC([<value1> : string]) => timestamp
Ruft den aktuellen Zeitstempel als UTC ab. Wenn die aktuelle Uhrzeit in einer anderen Zeitzone als der Zeitzone Ihres Clusters interpretiert werden soll, können Sie eine optionale Zeitzone in der Form GMT, PST, UTC oder America/Cayman übergeben. Standardmäßig wird die aktuelle Zeitzone verwendet. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java. Um die UTC-Zeit in eine andere Zeitzone zu konvertieren, verwenden Sie fromUTC().
currentUTC() == toTimestamp('2050-12-12 19:18:12') -> false
currentUTC() != toTimestamp('2050-12-12 19:18:12') -> true
fromUTC(currentUTC(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true
D
dayOfMonth
dayOfMonth(<value1> : datetime) => integer
Gibt den Tag des Monats für ein angegebenes Datum zurück.
dayOfMonth(toDate('2018-06-08')) -> 8
dayOfWeek
dayOfWeek(<value1> : datetime) => integer
Gibt den Wochentag eines angegebenen Datums zurück. Beispielsweise 1 ist Sonntag, 2 ist Montag, ... und 7 ist Samstag.
dayOfWeek(toDate('2018-06-08')) -> 6
dayOfYear
dayOfYear(<value1> : datetime) => integer
Gibt den Tag des Jahres zurück, wenn ein Datum angegeben ist.
dayOfYear(toDate('2016-04-09')) -> 100
days
days(<value1> : integer) => long
Dauer in Millisekunden für die Anzahl der Tage.
days(2) -> 172800000L
decode
decode(<Input> : any, <Charset> : string) => binary
Decodiert die codierten Eingabedaten basierend auf dem angegebenen Zeichensatz in eine Zeichenfolge. Sie können ein zweites (optionales) Argument verwenden, um anzugeben, welches Zeichensatz verwendet werden soll. Beispiele sind US-ASCII: , ISO-8859-1, UTF-8 (Standard), UTF-16BE, UTF-16LEund UTF-16.
decode(array(toByte(97),toByte(98),toByte(99)), 'US-ASCII') -> abc
degrees
degrees(<value1> : number) => double
Konvertiert Bogenmaße zu Graden.
degrees(3.141592653589793) -> 180
denseRank
denseRank() => integer
Berechnet den Rang eines Werts in einer Gruppe von Werten, die in der Reihenfolge eines Fensters nach Klausel angegeben sind. Das Ergebnis ist 1 plus der Anzahl von Zeilen vor der aktuellen Zeile oder gleich dieser in der Reihenfolge der Partition. Die Werte erzeugen keine Lücken in der Folge. Die denseRank Funktion funktioniert auch dann, wenn Daten nicht sortiert sind und nach Änderungen in Werten suchen.
denseRank()
distinct
distinct(<value1> : array) => array
Gibt eine bestimmte Menge von Elementen aus einem Array zurück.
distinct([10, 20, 30, 10]) => [10, 20, 30]
divide
divide(<value1> : any, <value2> : any) => any
Dividiert ein Zahlenpaar. Entspricht dem Operator /.
divide(20, 10) -> 2
20 / 10 -> 2
dropLeft
dropLeft(<value1> : string, <value2> : integer) => string
Entfernt die angegebene Anzahl von Zeichen links von der Zeichenfolge. Wenn die angeforderte Löschung die Länge der Zeichenfolge überschreitet, wird eine leere Zeichenfolge zurückgegeben.
dropLeft('bojjus', 2) => 'jjus'
dropLeft('cake', 10) => ''
dropRight
dropRight(<value1> : string, <value2> : integer) => string
Entfernt die angegebene Anzahl von Zeichen rechts von der Zeichenfolge. Wenn die angeforderte Löschung die Länge der Zeichenfolge überschreitet, wird eine leere Zeichenfolge zurückgegeben.
dropRight('bojjus', 2) => 'bojj'
dropRight('cake', 10) => ''
E
encode
encode(<Input> : string, <Charset> : string) => binary
Codiert die Daten der Eingabezeichenfolge basierend auf einem Zeichensatz in Binärcode. Ein zweites (optionales) Argument kann verwendet werden, um anzugeben, welche Zeichenmenge verwendet werden soll. Beispiele sind US-ASCII: , ISO-8859-1, UTF-8 (Standard), UTF-16BE, UTF-16LEund UTF-16.
encode('abc', 'US-ASCII') -> array(toByte(97),toByte(98),toByte(99))
endsWith
endsWith(<string> : string, <substring to check> : string) => boolean
Überprüft, ob die Zeichenfolge mit der angegebenen Zeichenfolge endet.
endsWith('dumbo', 'mbo') -> true
equals
equals(<value1> : any, <value2> : any) => boolean
Verwendet den Vergleichsoperator "Equals". Entspricht dem Operator ==.
equals(12, 24) -> false
12 == 24 -> false
'bad' == 'bad' -> true
isNull('good' == toString(null)) -> true
isNull(null == null) -> true
equalsIgnoreCase
equalsIgnoreCase(<value1> : string, <value2> : string) => boolean
Verwendet den Operator für Vergleich auf Gleichheit ohne Berücksichtigung der Groß-/Kleinschreibung. Entspricht dem Operator <=>.
'abc'<=>'Abc' -> true
equalsIgnoreCase('abc', 'Abc') -> true
escape
escape(<string_to_escape> : string, <format> : string) => string
Versieht eine Zeichenfolge mit einem Escapezeichen entsprechend einem Format. Literalwerte für zulässiges Format sind json, , xml, ecmascript, htmlund java.
except
except(<value1> : array, <value2> : array) => array
Gibt eine Differenzmenge eines Arrays aus einem anderen zurück, wobei Duplikate gelöscht werden.
except([10, 20, 30], [20, 40]) => [10, 30]
expr
expr(<expr> : string) => any
Ergibt einen Ausdruck aus einer Zeichenfolge, der dem Schreiben dieses Ausdrucks in nichtwörtlicher Form entspricht. Sie können sie verwenden, um Parameter als Zeichenfolgendarstellungen zu übergeben.
expr('price * discount') => any
F
factorial
factorial(<value1> : number) => long
Berechnet die Fakultät einer Zahl.
factorial(5) -> 120
false
false() => boolean
Gibt immer den Wert FALSE zurück. Verwenden Sie die Funktion syntax(false()) , wenn eine Spalte benannt falseist.
(10 + 20 > 30) -> false
(10 + 20 > 30) -> false()
filter
filter(<value1> : array, <value2> : unaryfunction) => array
Filtert Elemente aus dem Array heraus, die dem bereitgestellten Prädikat nicht entsprechen. Filter erwartet einen Verweis auf ein Element in der Prädikatfunktion als #item.
filter([1, 2, 3, 4], #item > 2) -> [3, 4]
filter(['a', 'b', 'c', 'd'], #item == 'a' || #item == 'b') -> ['a', 'b']
find
find(<value1> : array, <value2> : unaryfunction) => any
Suchen Sie das erste Element aus einem Array, das der Bedingung entspricht. Es verwendet eine Filterfunktion, in der Sie das Element im Array als #itemadressieren können. Für tief geschachtelte Karten können Sie mithilfe der #item_n Notation (#item_1, #item_2...) auf die übergeordneten Karten verweisen.
find([10, 20, 30], #item > 10) -> 20
find(['azure', 'data', 'factory'], length(#item) > 4) -> 'azure'
find([ @( name = 'Daniel', types = [ @(mood = 'jovial', behavior = 'terrific'), @(mood = 'grumpy', behavior = 'bad') ] ), @( name = 'Mark', types = [ @(mood = 'happy', behavior = 'awesome'), @(mood = 'calm', behavior = 'reclusive') ] ) ], contains(#item.types, #item.mood=='happy') /*Filter out the happy kid*/ )
@( name = 'Mark', types = [ @(mood = 'happy', behavior = 'awesome'), @(mood = 'calm', behavior = 'reclusive') ] )
first
first(<value1> : any, [<value2> : boolean]) => any
Ruft den ersten Wert einer Spaltengruppe ab. Wenn der zweite Parameter ignoreNulls nicht angegeben wird, geht Data Factory von "false" aus.
first(sales)
first(sales, false)
flatten
flatten(<array> : array, <value2> : array ..., <value2> : boolean) => array
Vereinfacht ein Array oder Arrays in ein einziges Array. Arrays unteilbarer Elemente werden unverändert zurückgegeben. Das letzte Argument ist optional und lautet standardmäßig FALSE, um rekursiv mehr als eine Ebene tief zu vereinfachen.
flatten([['bojjus', 'girl'], ['gunchus', 'boy']]) => ['bojjus', 'girl', 'gunchus', 'boy']
flatten([[['bojjus', 'gunchus']]] , true) => ['bojjus', 'gunchus']
floor
floor(<value1> : number) => number
Gibt den größten Integerwert zurück, der nicht größer als die Zahl ist.
floor(-0.1) -> -1
fromBase64
fromBase64(<value1> : string, <encoding type> : string) => string
Decodiert die spezifische base64-codierte Zeichenfolge. Optional können Sie den Codierungstyp übergeben.
fromBase64('Z3VuY2h1cw==') -> 'gunchus'
fromBase64('SGVsbG8gV29ybGQ=', 'Windows-1252') -> 'Hello World'
fromUTC
fromUTC(<value1> : timestamp, [<value2> : string]) => timestamp
Wandelt in den Zeitstempel von UTC um. Sie können optional die Zeitzone in Form von GMT, PST, UTC oder America/Cayman übergeben. Standardmäßig wird die aktuelle Zeitzone verwendet. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java.
fromUTC(currentTimestamp()) == toTimestamp('2050-12-12 19:18:12') -> false
fromUTC(currentTimestamp(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true
G
greater
greater(<value1> : any, <value2> : any) => boolean
Verwendet den Vergleichsoperator größer. Gleich wie Operator >.
greater(12, 24) -> false
('dumbo' > 'dum') -> true
(toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS') > toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> true
greaterOrEqual
greaterOrEqual(<value1> : any, <value2> : any) => boolean
Verwendet den Operator für Vergleich auf „größer als oder gleich“. Gleich wie Operator >=.
greaterOrEqual(12, 12) -> true
('dumbo' >= 'dum') -> true
greatest
greatest(<value1> : any, ...) => any
Gibt den größten Wert in der Liste der Werte als Eingabe zurück, wobei Nullwerte übersprungen werden. Gibt zurück null , wenn alle Eingaben null sind.
greatest(10, 30, 15, 20) -> 30
greatest(10, toInteger(null), 20) -> 20
greatest(toDate('2010-12-12'), toDate('2011-12-12'), toDate('2000-12-12')) -> toDate('2011-12-12')
greatest(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS'), toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')) -> toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')
H
hasColumn
hasColumn(<column name> : string, [<stream name> : string]) => boolean
Überprüft anhand des Namens, ob ein Spaltenwert im Stream vorhanden ist. Sie können einen optionalen Streamnamen als zweites Argument übergeben. Adressspaltennamen, die zur Entwurfszeit namentlich bekannt sind. Berechnete Eingaben werden nicht unterstützt, Aber Sie können Parameterersetzungen verwenden.
hasColumn('parent')
hasError
hasError([<value1> : string]) => boolean
Überprüft, ob die Ressource mit einer angegebenen ID als Fehler markiert ist.
Examples
hasError('assert1')
hasError('assert2')
hasPath
hasPath(<value1> : string, [<streamName> : string]) => boolean
Überprüft, ob ein bestimmter hierarchischer Pfad nach dem Namen im Stream vorhanden ist. Sie können einen optionalen Streamnamen als zweites Argument übergeben. Spaltennamen/-pfade, die zur Entwurfszeit bekannt sind, sollten nur mit ihrem Namen oder Punktnotationspfad adressiert werden. Berechnete Eingaben werden nicht unterstützt, Aber Sie können Parameterersetzungen verwenden.
hasPath('grandpa.parent.child') => boolean
hex
hex(<value1>: binary) => string
Diese Funktion gibt eine Hexadezimal-Zeichenfolgendarstellung eines Binärwerts zurück.
hex(toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])) -> '1fadbe'
hour
hour(<value1> : timestamp, [<value2> : string]) => integer
Ruft den Stundenwert eines Zeitstempels ab. Sie können eine optionale Zeitzone in Form von GMT, PST, UTC oder America/Cayman übergeben. Die lokale Zeitzone wird als Standard verwendet. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java.
hour(toTimestamp('2009-07-30 12:58:59')) -> 12
hour(toTimestamp('2009-07-30 12:58:59'), 'PST') -> 12
hours
hours(<value1> : integer) => long
Ruft die Dauer in Millisekunden für die Anzahl der Stunden ab.
hours(2) -> 7200000L
I
iif
iif(<condition> : boolean, <true_expression> : any, [<false_expression> : any]) => any
Wendet einen Wert oder den anderen basierend auf einer Bedingung an. Wenn der andere nicht angegeben ist, wird der Wert berücksichtigt NULL. Beide Werte müssen kompatibel sein (z. B. numerische und Zeichenfolge).
iif(10 + 20 == 30, 'dumbo', 'gumbo') -> 'dumbo'
iif(10 > 30, 'dumbo', 'gumbo') -> 'gumbo'
iif(month(toDate('2018-12-01')) == 12, 345.12, 102.67) -> 345.12
iifNull
iifNull(<value1> : any, [<value2> : any], ...) => any
Gibt das erste nicht NULL-Element zurück, wenn zwei oder mehr Eingaben vorhanden sind. Diese Funktion entspricht der coalesce Funktion.
iifNull(10, 20) -> 10
iifNull(null, 20, 40) -> 20
iifNull('azure', 'data', 'factory') -> 'azure'
iifNull(null, 'data', 'factory') -> 'data'
in
in(<array of items> : array, <item to find> : any) => boolean
Überprüft, ob ein Element im Array vorhanden ist.
in([10, 20, 30], 10) -> true
in(['good', 'kid'], 'bad') -> false
initCap
initCap(<value1> : string) => string
Wandelt den ersten Buchstaben jedes Worts in Großbuchstaben um. Wörter werden als durch Leerzeichen getrennt identifiziert.
initCap('cool iceCREAM') -> 'Cool Icecream'
instr
instr(<string> : string, <substring to find> : string) => integer
Sucht die Position (basierend auf 1) der Teilzeichenfolge innerhalb einer Zeichenfolge. Wird nichts gefunden, wird 0 zurückgegeben.
instr('dumbo', 'mbo') -> 3
instr('microsoft', 'o') -> 5
instr('good', 'bad') -> 0
intersect
intersect(<value1> : array, <value2> : array) => array
Gibt eine Schnittmenge verschiedener Elemente aus zwei Arrays zurück.
intersect([10, 20, 30], [20, 40]) => [20]
isBitSet
isBitSet (<value1> : array, <value2>:integer ) => boolean
Überprüft, ob eine Bitposition in dieser Bitmenge festgelegt ist.
isBitSet(toBitSet([10, 32, 98]), 10) => true
isBoolean
isBoolean(<value1>: string) => boolean
Überprüft, ob der Zeichenfolgenwert ein boolescher Wert gemäß den Regeln von toBoolean().
isBoolean('true') -> true
isBoolean('no') -> true
isBoolean('microsoft') -> false
isByte
isByte(<value1> : string) => boolean
Überprüft, ob der Stringwert ein Bytewert ist, wenn ein optionales Format nach den Regeln von toByte() angegeben ist.
isByte('123') -> true
isByte('chocolate') -> false
isDate
isDate (<value1> : string, [<format>: string]) => boolean
Überprüft, ob die Eingabedatumszeichenfolge ein Datum ist, indem Sie ein optionales Eingabedatumsformat verwenden. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java. Wenn das Eingabedatumsformat nicht angegeben wird, ist yyyy-[M]M-[d]ddas Standardformat . Akzeptierte Formate sind :[ yyyy, yyyy-[M]M, yyyy-[M]M-[d]d, yyyy-[M]M-[d]dT* ].
isDate('2012-8-18') -> true
isDate('12/18--234234' -> 'MM/dd/yyyy') -> false
isDecimal
isDecimal (<value1> : string) => boolean
Überprüft, ob der Zeichenfolgenwert ein Dezimalwert ist, wenn ein optionales Format gemäß den Regeln von toDecimal() angegeben ist.
isDecimal('123.45') -> true
isDecimal('12/12/2000') -> false
isDelete
isDelete([<value1> : integer]) => boolean
Überprüft, ob die Zeile gelöscht werden soll. Bei Transformationen, die mehr als einen Eingabedatenstrom verwenden, können Sie den (1-basierten) Index des Datenstroms übergeben. Der Datenstromindex sollte entweder 1 oder 2 sein, und der Standardwert ist 1.
isDelete()
isDelete(1)
isDistinct
isDistinct(<value1> : any , <value1> : any) => boolean
Stellt fest, ob eine Spalte oder eine Gruppe von Spalten eindeutig ist. Er zählt null nicht als eindeutiger Wert.
isDistinct(custId, custName) => boolean
isDouble
isDouble (<value1> : string, [<format>: string]) => boolean
Überprüft, ob der Zeichenfolgenwert ein Double-Wert ist, wenn er gemäß den Regeln von toDouble() ein optionales Format erhält.
isDouble('123') -> true
isDouble('$123.45' -> '$###.00') -> true
isDouble('icecream') -> false
isError
isError([<value1> : integer]) => boolean
Überprüft, ob die Zeile als Fehler markiert ist. Bei Transformationen, die mehr als einen Eingabedatenstrom verwenden, können Sie den (1-basierten) Index des Datenstroms übergeben. Der Datenstromindex sollte entweder 1 oder 2 sein, und der Standardwert ist 1.
isError()
isError(1)
isFloat
isFloat (<value1> : string, [<format>: string]) => boolean
Überprüft, ob der Zeichenfolgenwert ein Fließkommawert ist, wenn ein optionales Format gemäß den Regeln von toFloat() vorliegt.
isFloat('123') -> true
isFloat('$123.45' -> '$###.00') -> true
isFloat('icecream') -> false
isIgnore
isIgnore([<value1> : integer]) => boolean
Überprüft, ob die Zeile ignoriert werden soll. Für Transformationen mit mehr als einem Eingabedatenstrom können Sie den (1-basierten) Index des Datenstroms übergeben. Der Datenstromindex sollte entweder 1 oder 2 sein, und der Standardwert ist 1.
isIgnore()
isIgnore(1)
isInsert
isInsert([<value1> : integer]) => boolean
Überprüft, ob die Zeile zum Einfügen markiert ist. Für Transformationen mit mehr als einem Eingabedatenstrom können Sie den (1-basierten) Index des Datenstroms übergeben. Der Datenstromindex sollte entweder 1 oder 2 sein, und der Standardwert ist 1.
isInsert()
isInsert(1)
isInteger
isInteger (<value1> : string, [<format>: string]) => boolean
Überprüft, ob der Zeichenfolgenwert ein Integerwert ist, wenn er gemäß den Regeln von toInteger() ein optionales Format erhält.
isInteger('123') -> true
isInteger('$123' -> '$###') -> true
isInteger('microsoft') -> false
isLong
isLong (<value1> : string, [<format>: string]) => boolean
Überprüft, ob der Zeichenfolgenwert ein Long-Wert ist, wenn ein optionales Format gemäß den Regeln von toLong() verwendet wird.
isLong('123') -> true
isLong('$123' -> '$###') -> true
isLong('gunchus') -> false
isMatch
isMatch([<value1> : integer]) => boolean
Überprüft, ob die Zeile bei der Suche übereinstimmt. Für Transformationen mit mehr als einem Eingabedatenstrom können Sie den (1-basierten) Index des Datenstroms übergeben. Der Datenstromindex sollte entweder 1 oder 2 sein, und der Standardwert ist 1.
isMatch()
isMatch(1)
isNan
isNan (<value1> : integral) => boolean
Überprüft, ob der Wert keine Zahl ist.
isNan(10.2) => false
isNull
isNull(<value1> : any) => boolean
Überprüft, ob der Wert ist NULL.
isNull(NULL()) -> true
isNull('') -> false
isShort
isShort (<value1> : string, [<format>: string]) => boolean
Überprüft, ob der Zeichenfolgenwert ein Short-Wert ist, wenn ein optionales Format gemäß den Regeln von toShort() angegeben ist.
isShort('123') -> true
isShort('$123' -> '$###') -> true
isShort('microsoft') -> false
isTimestamp
isTimestamp (<value1> : string, [<format>: string]) => boolean
Überprüft, ob die Eingabedatumszeichenfolge ein Zeitstempel ist, indem Sie ein optionales Eingabezeitstempelformat verwenden. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java. Wenn der Zeitstempel weggelassen wird, wird das Standardmuster yyyy-[M]M-[d]d hh:mm:ss[.f...] verwendet. Sie können eine optionale Zeitzone in Form von GMT, PST, UTC oder America/Cayman übergeben. Die timestamp Funktion unterstützt bis zu Millisekundengenauigkeit mit einem Wert von 999. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java.
isTimestamp('2016-12-31 00:12:00') -> true
isTimestamp('2016-12-31T00:12:00' -> 'yyyy-MM-dd\\'T\\'HH:mm:ss' -> 'PST') -> true
isTimestamp('2012-8222.18') -> false
isUpdate
isUpdate([<value1> : integer]) => boolean
Überprüft, ob die Zeile zum Aktualisieren markiert ist. Für Transformationen mit mehr als einem Eingabedatenstrom können Sie den (1-basierten) Index des Datenstroms übergeben. Der Datenstromindex sollte entweder 1 oder 2 sein, und der Standardwert ist 1.
isUpdate()
isUpdate(1)
isUpsert
isUpsert([<value1> : integer]) => boolean
Überprüft, ob die Zeile zum Einfügen markiert ist. Für Transformationen mit mehr als einem Eingabedatenstrom können Sie den (1-basierten) Index des Datenstroms übergeben. Der Datenstromindex sollte entweder 1 oder 2 sein, und der Standardwert ist 1.
isUpsert()
isUpsert(1)
J
jaroWinkler
jaroWinkler(<value1> : string, <value2> : string) => double
Ruft den Jaro-Winkler-Abstand zwischen zwei Zeichenfolgen ab.
jaroWinkler('frog', 'frog') => 1.0
K
keyValues
keyValues(<value1> : array, <value2> : array) => map
Erstellt eine Zuordnung von Schlüsseln/Werten. Der erste Parameter ist ein Array von Schlüsseln, und das zweite ist das Array von Werten. Beide Arrays müssen die gleiche Länge haben.
keyValues(['bojjus', 'appa'], ['gunchus', 'ammi']) => ['bojjus' -> 'gunchus', 'appa' -> 'ammi']
kurtosis
kurtosis(<value1> : number) => double
Ruft die Kurtosis einer Spalte ab.
kurtosis(sales)
kurtosisIf
kurtosisIf(<value1> : boolean, <value2> : number) => double
Ruft die Kurtosis einer Spalte basierend auf Kriterien ab.
kurtosisIf(region == 'West', sales)
L
lag
lag(<value> : any, [<number of rows to look before> : number], [<default value> : any]) => any
Ruft den Wert des ersten ausgewerteten n Parameters Zeilen vor der aktuellen Zeile ab. Der zweite Parameter ist die Anzahl der Zeilen, die zurückgegeben werden sollen, und der Standardwert ist 1. Wenn nicht so viele Zeilen vorhanden sind, wird ein Nullwert zurückgegeben, es sei denn, ein Standardwert ist angegeben.
lag(amount, 2)
lag(amount, 2000, 100)
last
last(<value1> : any, [<value2> : boolean]) => any
Ruft den letzten Wert einer Spaltengruppe ab. Wenn der zweite Parameter ignoreNulls nicht angegeben wird, wird "false" angenommen.
last(sales)
last(sales, false)
lastDayOfMonth
lastDayOfMonth(<value1> : datetime) => date
Gibt den letzten Tag eines Monats zurück, wenn ein Datum angegeben ist.
lastDayOfMonth(toDate('2009-01-12')) -> toDate('2009-01-31')
lead
lead(<value> : any, [<number of rows to look after> : number], [<default value> : any]) => any
Ruft den Wert des ersten ausgewerteten n Parameters Zeilen nach der aktuellen Zeile ab. Der zweite Parameter ist die Anzahl der Zeilen, die vorwärts angezeigt werden sollen, und der Standardwert ist 1. Wenn nicht so viele Zeilen vorhanden sind, wird ein Nullwert zurückgegeben, es sei denn, ein Standardwert ist angegeben.
lead(amount, 2)
lead(amount, 2000, 100)
least
least(<value1> : any, ...) => any
Verwendet den Operator für Vergleich auf „kleiner als oder gleich“. Entspricht dem Operator <=.
least(10, 30, 15, 20) -> 10
least(toDate('2010-12-12'), toDate('2011-12-12'), toDate('2000-12-12')) -> toDate('2000-12-12')
left
left(<string to subset> : string, <number of characters> : integral) => string
Extrahiert eine Teilzeichenfolge, die bei Index 1 beginnt, mit der Anzahl der Zeichen. Identisch mit SUBSTRING(str, 1, n).
left('bojjus', 2) -> 'bo'
left('bojjus', 20) -> 'bojjus'
length
length(<value1> : string) => integer
Gibt die Länge der Zeichenfolge zurück.
length('dumbo') -> 5
lesser
lesser(<value1> : any, <value2> : any) => boolean
Verwendet den Operator für Vergleich auf „kleiner als“. Entspricht dem Operator <.
lesser(12, 24) -> true
('abcd' < 'abc') -> false
(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') < toTimestamp('2019-02-05 08:21:34.890', 'yyyy-MM-dd HH:mm:ss.SSS')) -> true
lesserOrEqual
lesserOrEqual(<value1> : any, <value2> : any) => boolean
Verwendet den Operator für Vergleich auf „kleiner als oder gleich“. Entspricht dem Operator <=.
lesserOrEqual(12, 12) -> true
('dumbo' <= 'dum') -> false
levenshtein
levenshtein(<from string> : string, <to string> : string) => integer
Ruft die Levenshtein-Distanz zwischen zwei Zeichenfolgen ab.
levenshtein('boys', 'girls') -> 4
like
like(<string> : string, <pattern match> : string) => boolean
Verwendet ein Zeichenfolgenmuster, das buchstäblich übereinstimmt. Die Ausnahmen sind die folgenden Sondersymbole: _ entspricht einem beliebigen Zeichen in der Eingabe (ähnlich .* wie in posix regulären Ausdrücken).
% entspricht null oder mehr Zeichen in der Eingabe (ähnlich wie .* in posix regulären Ausdrücken).
Das Escapezeichen lautet „"“. Wenn ein Escapezeichen einem besonderen Symbol oder einem anderen Escapezeichen vorangestellt ist, wird das folgende Zeichen direkt verglichen. Es ist als Escapezeichen für alle anderen Zeichen ungültig.
like('icecream', 'ice%') -> true
locate
locate(<substring to find> : string, <string> : string, [<from index - 1-based> : integral]) => integer
Sucht die Position (basierend auf 1) der Teilzeichenfolge innerhalb einer Zeichenfolge ab einer bestimmten Position. Wenn die Position nicht angegeben ist, wird am Anfang der Zeichenfolge gestartet. Wird nichts gefunden, wird 0 zurückgegeben.
locate('mbo', 'dumbo') -> 3
locate('o', 'microsoft', 6) -> 7
locate('bad', 'good') -> 0
log
log(<value1> : number, [<value2> : number]) => double
Berechnet den Protokollwert. Sie können bei Verwendung eine optionale Basis oder eine Eulernummer angeben.
log(100, 10) -> 2
log10
log10(<value1> : number) => double
Berechnet den Logarithmuswert über der Basis 10.
log10(100) -> 2
lookup
lookup(key, key2, ...) => complex[]
Schlägt die erste Zeile der zwischengespeicherten Senke mithilfe der angegebenen Schlüssel nach, die mit den Schlüsseln der zwischengespeicherten Senke identisch sind.
cacheSink#lookup(movieId)
lower
lower(<value1> : string) => string
Wandelt eine Zeichenfolge in Kleinschreibung um.
lower('GunChus') -> 'gunchus'
lpad
lpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
Füllt die Zeichenfolge nach links mit der angegebenen Auffüllung, bis die Zeichenfolge eine bestimmte Länge hat. Ist die Zeichenfolge größer oder gleich der Länge, wird die Zeichenfolge auf die Länge gekürzt.
lpad('dumbo', 10, '-') -> '-----dumbo'
lpad('dumbo', 4, '-') -> 'dumb'
ltrim
ltrim(<string to trim> : string, [<trim characters> : string]) => string
Entfernt vorangestellte Zeichen aus einer Zeichenfolge. Wenn der zweite Parameter nicht angegeben ist, werden Leerzeichen gekürzt. Andernfalls werden alle im zweiten Parameter angegebenen Zeichen gekürzt.
ltrim(' dumbo ') -> 'dumbo '
ltrim('!--!du!mbo!', '-!') -> 'du!mbo!'
M
map
map(<value1> : array, <value2> : unaryfunction) => any
Ordnet jedes Element des Arrays einem neuen Element mithilfe des bereitgestellten Ausdrucks zu. Die map Funktion erwartet einen Verweis auf ein Element in der Ausdrucksfunktion als #item.
map([1, 2, 3, 4], #item + 2) -> [3, 4, 5, 6]
map(['a', 'b', 'c', 'd'], #item + '_processed') -> ['a_processed', 'b_processed', 'c_processed', 'd_processed']
mapAssociation
mapAssociation(<value1> : map, <value2> : binaryFunction) => array
Transformiert eine Zuordnung durch Zuordnen der Schlüssel zu neuen Werten. Gibt ein Array zurück. Es verwendet eine Zuordnungsfunktion, in der Sie das Element als #key und den aktuellen Wert als #value adressieren können.
mapAssociation(['bojjus' -> 'gunchus', 'appa' -> 'ammi'], @(key = #key, value = #value)) => [@(key = 'bojjus', value = 'gunchus'), @(key = 'appa', value = 'ammi')]
mapIf
mapIf (<value1> : array, <value2> : binaryfunction, <value3>: binaryFunction) => any
Ordnet ein Array bedingt einem anderen Array derselben oder kleineren Länge zu. Die Werte können beliebiger Datentyp sein, einschließlich structTypes. Es verwendet eine Zuordnungsfunktion, in der Sie das Element im Array als #item und den aktuellen Index als #indexadressieren können. Für tief ineinander verschachtelte Maps können Sie auf die übergeordneten Maps verweisen, indem Sie die Notation "#item_[n] (#item_1, #index_1" verwenden.
mapIf([10, 20, 30], #item > 10, #item + 5) -> [25, 35]
mapIf(['icecream', 'cake', 'soda'], length(#item) > 4, upper(#item)) -> ['ICECREAM', 'CAKE']
mapIndex
mapIndex(<value1> : array, <value2> : binaryfunction) => any
Ordnet jedes Element des Arrays einem neuen Element mithilfe des bereitgestellten Ausdrucks zu. Die map Funktion erwartet einen Verweis auf ein Element in der Ausdrucksfunktion als #item und einen Verweis auf den Elementindex als #index.
mapIndex([1, 2, 3, 4], #item + 2 + #index) -> [4, 6, 8, 10]
mapLoop
mapLoop(<value1> : integer, <value2> : unaryfunction) => any
Durchläuft Schleifen von 1 bis zur Länge, um ein Array mit dieser Länge zu erstellen. Es verwendet eine Zuordnungsfunktion, in der Sie den Index im Array als #indexadressieren können. Für tief geschachtelte Karten können Sie mithilfe der #index_n (#index_1, #index_2) Notation auf die übergeordneten Karten verweisen.
mapLoop(3, #index * 10) -> [10, 20, 30]
max
max(<value1> : any) => any
Ruft den größten Wert einer Spalte ab.
max(sales)
maxIf
maxIf(<value1> : boolean, <value2> : any) => any
Ruft den Maximalwert einer Spalte basierend auf Kriterien ab.
maxIf(region == 'West', sales)
md5
md5(<value1> : any, ...) => string
Berechnet den MD5-Digest einer Reihe von Spalten unterschiedlicher primitiver Datentypen und gibt eine 32-stellige Hexadexzeichenfolge zurück. Sie können ihn verwenden, um einen Fingerabdruck für eine Zeile zu berechnen.
md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '4ce8a880bd621a1ffad0bca905e1bc5a'
mean
mean(<value1> : number) => number
Ruft das Mittel der Werte einer Spalte ab. Identisch mit AVG.
mean(sales)
meanIf
meanIf(<value1> : boolean, <value2> : number) => number
Ruft den Mittelwert einer Spalte basierend auf Kriterien ab. Identisch mit avgIf.
meanIf(region == 'West', sales)
millisecond
millisecond(<value1> : timestamp, [<value2> : string]) => integer
Ruft den Millisekundenwert eines Datums ab. Sie können eine optionale Zeitzone in Form von GMT, PST, UTC oder America/Cayman übergeben. Die lokale Zeitzone wird als Standard verwendet. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java.
millisecond(toTimestamp('2009-07-30 12:58:59.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> 871
milliseconds
milliseconds(<value1> : integer) => long
Gibt die Dauer in Millisekunden für eine bestimmte Anzahl von Millisekunden zurück.
milliseconds(2) -> 2L
min
min(<value1> : any) => any
Ruft den kleinsten Wert einer Spalte ab.
min(sales)
minIf
minIf(<value1> : boolean, <value2> : any) => any
Ruft den Minimalwert einer Spalte basierend auf Kriterien ab.
minIf(region == 'West', sales)
minus
minus(<value1> : any, <value2> : any) => any
Subtrahiert Zahlen. Subtrahiert die Anzahl von Tagen von einem Datum. Subtrahiert die Dauer von einem Zeitstempel. Subtrahiert zwei Zeitstempel, um die Differenz in Millisekunden zu erhalten. Entspricht dem Operator -.
minus(20, 10) -> 10
20 - 10 -> 10
minus(toDate('2012-12-15'), 3) -> toDate('2012-12-12')
toDate('2012-12-15') - 3 -> toDate('2012-12-12')
toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS') + (days(1) + hours(2) - seconds(10)) -> toTimestamp('2019-02-04 07:19:18.871', 'yyyy-MM-dd HH:mm:ss.SSS')
toTimestamp('2019-02-03 05:21:34.851', 'yyyy-MM-dd HH:mm:ss.SSS') - toTimestamp('2019-02-03 05:21:36.923', 'yyyy-MM-dd HH:mm:ss.SSS') -> -2072
minute
minute(<value1> : timestamp, [<value2> : string]) => integer
Ruft den Minutenwert eines Zeitstempels ab. Sie können eine optionale Zeitzone in Form von GMT, PST, UTC oder America/Cayman übergeben. Die lokale Zeitzone wird als Standard verwendet. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java.
minute(toTimestamp('2009-07-30 12:58:59')) -> 58
minute(toTimestamp('2009-07-30 12:58:59'), 'PST') -> 58
minutes
minutes(<value1> : integer) => long
Ruft die Dauer in Millisekunden für die Anzahl der Minuten ab.
minutes(2) -> 120000L
mlookup
mlookup(key, key2, ...) => complex[]
Schlägt alle übereinstimmenden Zeilen der zwischengespeicherten Senke mithilfe der angegebenen Schlüssel nach, die mit den Schlüsseln der zwischengespeicherten Senke identisch sind.
cacheSink#mlookup(movieId)
mod
mod(<value1> : any, <value2> : any) => any
Bestimmt den Modulus eines Zahlenpaars. Entspricht dem Operator %.
mod(20, 8) -> 4
20 % 8 -> 4
month
month(<value1> : datetime) => integer
Ruft den Monatswert eines Datums- oder Zeitstempels ab.
month(toDate('2012-8-8')) -> 8
monthsBetween
monthsBetween(<from date/timestamp> : datetime, <to date/timestamp> : datetime, [<roundoff> : boolean], [<time zone> : string]) => double
Ruft die Anzahl der Monate zwischen zwei Datumsangaben ab. Sie können die Berechnung abrunden. Sie können eine optionale Zeitzone in Form von GMT, PST, UTC oder America/Cayman übergeben. Die lokale Zeitzone wird als Standard verwendet. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java.
monthsBetween(toTimestamp('1997-02-28 10:30:00'), toDate('1996-10-30')) -> 3.94959677
multiply
multiply(<value1> : any, <value2> : any) => any
Multipliziert ein Zahlenpaar. Entspricht dem Operator *.
multiply(20, 10) -> 200
20 * 10 -> 200
N
negate
negate(<value1> : number) => number
Negiert eine Zahl. Wandelt positive Zahlen in negative um (und umgekehrt).
negate(13) -> -13
nextSequence
nextSequence() => long
Gibt die nächste eindeutige Folge zurück. Die Zahl ist nur innerhalb einer Partition aufeinanderfolgend und wird mit der Partitions-ID vorangestellt.
nextSequence() == 12313112 -> false
normalize
normalize(<String to normalize> : string) => string
Normalisiert den Zeichenfolgenwert so, dass akzentierte Unicode-Zeichen getrennt werden.
regexReplace(normalize('bo²s'), `\p{M}`, '') -> 'boys'
not
not(<value1> : boolean) => boolean
Verwendet den logischen Negationsoperator.
not(true) -> false
not(10 == 20) -> true
notEquals
notEquals(<value1> : any, <value2> : any) => boolean
Verwendet den Operator für Vergleich auf Ungleichheit. Entspricht dem Operator !=.
12 != 24 -> true
'bojjus' != 'bo' + 'jjus' -> false
nTile
nTile([<value1> : integer]) => integer
Die nTile Funktion dividiert die Zeilen für jede Fensterpartition in n Buckets von 1 bis zu höchstens n. Bucketwerte unterscheiden sich um höchstens 1. Wenn die Anzahl der Zeilen in der Partition nicht gleichmäßig in die Anzahl der Buckets unterteilt werden kann, werden die Restwerte einzeln auf Buckets verteilt, beginnend mit dem ersten Bucket. Die nTile-Funktion ist nützlich für die Berechnung von tertiles, Quartilen, Dezilen und anderen üblichen zusammenfassenden Statistiken. Die Funktion berechnet zwei Variablen während der Initialisierung. Der Größe eines regulären Buckets wird eine zusätzliche Zeile hinzugefügt. Beide Variablen basieren auf der Größe der aktuellen Partition. Während des Berechnungsprozesses verfolgt die Funktion die aktuelle Zeilennummer, die aktuelle Bucketnummer und die Zeilennummer, an der sich der Bucket ändert (bucketThreshold). Wenn die aktuelle Zeilennummer den Bucketschwellenwert erreicht, wird der Bucketwert um eins erhöht. Der Schwellenwert wird um die Bucketgröße erhöht (zusätzlich um eins, wenn der aktuelle Bucket aufgefüllt ist).
nTile()
nTile(numOfBuckets)
null
null() => null
Gibt einen NULL Wert zurück. Verwenden Sie die Funktion syntax(null()) , wenn eine Spalte benannt nullist. Jeder Vorgang, der NULL verwendet, führt zu einem NULL Wert.
isNull('dumbo' + `null`) -> true
isNull(10 * `null`) -> true
isNull('') -> false
isNull(10 + 20) -> false
isNull(10/0) -> true
O
or
or(<value1> : boolean, <value2> : boolean) => boolean
Verwendet den logischen OR Operator. Identisch mit ||.
or(true, false) -> true
true || false -> true
originColumns
originColumns(<streamName> : string) => any
Ruft alle Ausgabespalten für einen Ursprungsdatenstrom ab, in dem Spalten erstellt wurden. Muss in eine andere Funktion eingeschlossen werden.
array(toString(originColumns('source1')))
output
output() => any
Gibt die erste Zeile der Ergebnisse der zwischengespeicherten Senke zurück.
cacheSink#output()
outputs
output() => any
Gibt das gesamte Ausgabe-Rowset der zwischengespeicherten Senke zurück.
cacheSink#outputs()
P
partitionId
partitionId() => integer
Gibt die aktuelle Partitions-ID zurück, in der sich die Eingabezeile befindet.
partitionId()
pMod
pMod(<value1> : any, <value2> : any) => any
Gibt den positiven Modulus eines Zahlenpaars an.
pmod(-20, 8) -> 4
power
power(<value1> : number, <value2> : number) => double
Potenziert eine Zahl um den Potenzwert einer anderen.
power(10, 2) -> 100
R
radians
radians(<value1> : number) => double
Konvertiert Grade in Bogenmaße.
radians(180) => 3.141592653589793
random
random(<value1> : integral) => double
Gibt eine Zufallszahl zurück, wenn ein Seed innerhalb einer Partition angegeben wird. Der Seed sollte ein fester Wert sein und wird zusammen mit der Partitions-ID zum Erzeugen von Zufallswerten im Bereich (0.0-1.0) verwendet.
random(1) == 1 -> false
rank
rank() => integer
Berechnet den Rang eines Werts in einer Gruppe von Werten, die in der Reihenfolge eines Fensters nach Klausel angegeben sind. Das Ergebnis ist 1 plus der Anzahl von Zeilen vor der aktuellen Zeile oder gleich dieser in der Reihenfolge der Partition. Die Werte erzeugen Lücken in der Sequenz. Die rank Funktion funktioniert auch dann, wenn Daten nicht sortiert sind und nach Änderungen in Werten suchen.
rank()
reassociate
reassociate(<value1> : map, <value2> : binaryFunction) => map
Transformiert eine Zuordnung durch Zuordnen der Schlüssel zu neuen Werten. Es verwendet eine Zuordnungsfunktion, in der Sie das Element als #key und den aktuellen Wert als #value adressieren können.
reassociate(['fruit' -> 'apple', 'vegetable' -> 'tomato'], substring(#key, 1, 1) + substring(#value, 1, 1)) => ['fruit' -> 'fa', 'vegetable' -> 'vt']
reduce
reduce(<value1> : array, <value2> : any, <value3> : binaryfunction, <value4> : unaryfunction) => any
Akkumuliert Elemente in einem Array. Die reduce-Funktion erwartet einen Verweis auf einen Akkumulator sowie ein Element in der ersten Ausdrucksfunktion als #acc und #item. Es wird erwartet, dass der resultierende Wert als #result in der zweiten Ausdrucksfunktion verwendet wird.
toString(reduce(['1', '2', '3', '4'], '0', #acc + #item, #result)) -> '01234'
regexExtract
regexExtract(<string> : string, <regex to find> : string, [<match group 1-based index> : integral]) => string
Extrahiert eine übereinstimmende Teilzeichenfolge für ein vorgegebenes Regex-Muster. Der letzte Parameter identifiziert die Übereinstimmungsgruppe und ist standardmäßig 1, wenn er nicht angegeben ist.
<regex> stimmt mit einer Zeichenfolge ohne Escapezeichen überein. Index 0 gibt alle Übereinstimmungen zurück. Ohne Übereinstimmungsgruppen gibt der Index 1 und höher keine Ergebnisse zurück.
regexExtract('Cost is between 600 and 800 dollars', '(\\d+) and (\\d+)', 2) -> '800'
regexExtract('Cost is between 600 and 800 dollars', `(\d+) and (\d+)`, 2) -> '800'
regexMatch
regexMatch(<string> : string, <regex to match> : string) => boolean
Überprüft, ob die Zeichenfolge mit dem angegebenen RegEx-Muster übereinstimmt.
<regex> stimmt mit einer Zeichenfolge ohne Escapezeichen überein.
regexMatch('200.50', '(\\d+).(\\d+)') -> true
regexMatch('200.50', `(\d+).(\d+)`) -> true
regexReplace
regexReplace(<string> : string, <regex to find> : string, <substring to replace> : string) => string
Ersetzt alle Vorkommen eines Regex-Musters durch eine andere Teilzeichenfolge in einem bestimmten String.
<regex> stimmt mit einer Zeichenfolge ohne Escapezeichen überein.
regexReplace('100 and 200', '(\\d+)', 'bojjus') -> 'bojjus and bojjus'
regexReplace('100 and 200', `(\d+)`, 'gunchus') -> 'gunchus and gunchus'
regexSplit
regexSplit(<string to split> : string, <regex expression> : string) => array
Unterteilt eine Zeichenfolge anhand eines Trennzeichens basierend auf einem regulären Ausdruck und gibt ein Array mit Zeichenfolgen zurück.
regexSplit('bojjusAgunchusBdumbo', `[CAB]`) -> ['bojjus', 'gunchus', 'dumbo']
regexSplit('bojjusAgunchusBdumboC', `[CAB]`) -> ['bojjus', 'gunchus', 'dumbo', '']
(regexSplit('bojjusAgunchusBdumboC', `[CAB]`)[1]) -> 'bojjus'
isNull(regexSplit('bojjusAgunchusBdumboC', `[CAB]`)[20]) -> true
replace
replace(<string> : string, <substring to find> : string, [<substring to replace> : string]) => string
Ersetzt alle Vorkommen einer Teilzeichenfolge durch eine andere Teilzeichenfolge in der spezifischen Zeichenfolge. Wenn der letzte Parameter nicht angegeben wird, wird standardmäßig eine leere Zeichenfolge verwendet.
replace('doggie dog', 'dog', 'cat') -> 'catgie cat'
replace('doggie dog', 'dog', '') -> 'gie '
replace('doggie dog', 'dog') -> 'gie '
reverse
reverse(<value1> : string) => string
Kehrt eine Zeichenfolge um.
reverse('gunchus') -> 'suhcnug'
right
right(<string to subset> : string, <number of characters> : integral) => string
Extrahiert eine Teilzeichenfolge mit einer Anzahl von Zeichen von rechts. Identisch mit SUBSTRING(str, LENGTH(str) - n, n).
right('bojjus', 2) -> 'us'
right('bojjus', 20) -> 'bojjus'
rlike
rlike(<string> : string, <pattern match> : string) => boolean
Überprüft, ob die Zeichenfolge mit dem angegebenen RegEx-Muster übereinstimmt.
rlike('200.50', `(\d+).(\d+)`) -> true
rlike('bogus', `M[0-9]+.*`) -> false
round
round(<number> : number, [<scale to round> : number], [<rounding option> : integral]) => double
Rundet eine Zahl, wenn eine optionale Skalierung und ein optionaler Rundungsmodus angegeben wird. Wenn die Skalierung nicht angegeben wird, wird standardmäßig auf 0 zurückgesetzt. Wenn der Modus nicht angegeben wird, ist er standardmäßig ROUND_HALF_UP(5). Die Werte für das Runden beinhalten:
ROUND_UP: Rundungsmodus zum Runden von Null weg.
ROUND_DOWN: Rundungsmodus, um in Richtung Null zu runden.
ROUND_CEILING: Rundungsmodus, um in Richtung positive Unendlichkeit zu runden. (Gleich wie ROUND_UP bei positiver Eingabe. Bei negativer Eingabe verhält es sich wie ROUND_DOWN. Zum Beispiel: -1,1 wäre -1,0 mit ROUND_CEILING und -2 mit ROUND_UP.)
ROUND_FLOOR: Rundungsmodus zum Runden gegen negative Unendlichkeit. (Gleich wie ROUND_DOWN, wenn die Eingabe positiv ist. Wenn negativ, verhält es sich wie ROUND_UP.)
ROUND_HALF_UP: Rundungsmodus zur Rundung gegen „nächsten Nachbarn“, es sei denn, beide Nachbarn sind gleich weit entfernt; in diesem Fall ist das Verhalten wie ROUND_UP. (Am häufigsten + Standard für Dataflow.)
ROUND_HALF_DOWN: Rundungsmodus zur Rundung gegen „nächsten Nachbarn“, es sei denn, beide Nachbarn sind gleich weit entfernt; in diesem Fall ROUND_DOWN.
ROUND_HALF_EVEN: Rundungsmodus zur Rundung gegen „nächsten Nachbarn“, es sei denn, beide Nachbarn sind gleich weit entfernt; in diesem Fall gilt Rundung gegen den geraden Nachbarn.
ROUND_UNNECESSARY: Rundungsmodus, um zu bestätigen, dass der Rundenvorgang ein genaues Ergebnis hat, sodass keine Rundung erforderlich ist.
round(100.123) -> 100.0
round(2.5, 0) -> 3.0
round(5.3999999999999995, 2, 7) -> 5.40
rowNumber
rowNumber() => integer
Weist Zeilen in einem Fenster eine sequenzielle Zeilennummerierung zu, die bei 1 beginnt.
rowNumber()
rpad
rpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
Füllt die Zeichenfolge nach rechts mit der angegebenen Auffüllung, bis die Zeichenfolge eine bestimmte Länge hat. Ist die Zeichenfolge größer oder gleich der Länge, wird die Zeichenfolge auf die Länge gekürzt.
rpad('dumbo', 10, '-') -> 'dumbo-----'
rpad('dumbo', 4, '-') -> 'dumb'
rpad('dumbo', 8, '<>') -> 'dumbo<><'
rtrim
rtrim(<string to trim> : string, [<trim characters> : string]) => string
Entfernt nachgestellte Zeichen aus einer Zeichenfolge. Wenn der zweite Parameter nicht angegeben ist, werden Leerzeichen gekürzt. Andernfalls werden alle im zweiten Parameter angegebenen Zeichen gekürzt.
rtrim(' dumbo ') -> ' dumbo'
rtrim('!--!du!mbo!', '-!') -> '!--!du!mbo'
S
second
second(<value1> : timestamp, [<value2> : string]) => integer
Ruft den Sekundenwert eines Datums ab. Sie können eine optionale Zeitzone in Form von GMT, PST, UTC oder America/Cayman übergeben. Die lokale Zeitzone wird als Standard verwendet. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java.
second(toTimestamp('2009-07-30 12:58:59')) -> 59
seconds
seconds(<value1> : integer) => long
Gibt die Dauer in Millisekunden für die Anzahl der Sekunden an.
seconds(2) -> 2000L
setBitSet
setBitSet (<value1>: array, <value2>:array) => array
Legt Bitpositionen in dieser Bitmenge fest.
setBitSet(toBitSet([10, 32]), [98]) => [4294968320L, 17179869184L]
sha1
sha1(<value1> : any, ...) => string
Berechnet den SHA-1-Digest einer Reihe von Spalten unterschiedlicher primitiver Datentypen und gibt eine 40-stellige Hexadexzeichenfolge zurück. Sie können ihn verwenden, um einen Fingerabdruck für eine Zeile zu berechnen.
sha1(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '46d3b478e8ec4e1f3b453ac3d8e59d5854e282bb'
sha2
sha2(<value1> : integer, <value2> : any, ...) => string
Berechnet den SHA-2-Digest für eine Anzahl von Spalten mit verschiedenen primitiven Datentypen, wenn eine Bitlänge angegeben wird, die nur die Werte 0(256), 224, 256, 384 und 512 umfassen kann. Sie können ihn verwenden, um einen Fingerabdruck für eine Zeile zu berechnen.
sha2(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 'afe8a553b1761c67d76f8c31ceef7f71b66a1ee6f4e6d3b5478bf68b47d06bd3'
sin
sin(<value1> : number) => double
Berechnet einen Sinuswert.
sin(2) -> 0.9092974268256817
sinh
sinh(<value1> : number) => double
Berechnet einen hyperbolischen Sinuswert.
sinh(0) -> 0.0
size
size(<value1> : any) => integer
Ermittelt die Größe eines Array- oder Zuordnungstyps.
size(['element1', 'element2']) -> 2
size([1,2,3]) -> 3
skewness
skewness(<value1> : number) => double
Ruft die Schiefe einer Spalte ab.
skewness(sales)
skewnessIf
skewnessIf(<value1> : boolean, <value2> : number) => double
Ruft die Schiefe einer Spalte basierend auf Kriterien ab.
skewnessIf(region == 'West', sales)
slice
slice(<array to slice> : array, <from 1-based index> : integral, [<number of items> : integral]) => array
Extrahiert eine Teilmenge eines Arrays ab einer Position. Die Position basiert auf 1. Wenn die Länge nicht angegeben wird, wird standardmäßig das Ende der Zeichenfolge verwendet.
slice([10, 20, 30, 40], 1, 2) -> [10, 20]
slice([10, 20, 30, 40], 2) -> [20, 30, 40]
slice([10, 20, 30, 40], 2)[1] -> 20
isNull(slice([10, 20, 30, 40], 2)[0]) -> true
isNull(slice([10, 20, 30, 40], 2)[20]) -> true
slice(['a', 'b', 'c', 'd'], 8) -> []
sort
sort(<value1> : array, <value2> : binaryfunction) => array
Sortiert das Array mithilfe der bereitgestellten Prädikatfunktion. Die sort Funktion erwartet einen Verweis auf zwei aufeinander folgende Elemente in der Ausdrucksfunktion als #item1 und #item2.
sort([4, 8, 2, 3], compare(#item1, #item2)) -> [2, 3, 4, 8]
sort(['a3', 'b2', 'c1'], iif(right(#item1, 1) >= right(#item2, 1), 1, -1)) -> ['c1', 'b2', 'a3']
soundex
soundex(<value1> : string) => string
Ruft den Code soundex für die Zeichenfolge ab.
soundex('genius') -> 'G520'
split
split(<string to split> : string, <split characters> : string) => array
Unterteilt eine Zeichenfolge basierend auf einem Trennzeichen und gibt ein Array mit Zeichenfolgen zurück.
split('bojjus,guchus,dumbo', ',') -> ['bojjus', 'guchus', 'dumbo']
split('bojjus,guchus,dumbo', '|') -> ['bojjus,guchus,dumbo']
split('bojjus, guchus, dumbo', ', ') -> ['bojjus', 'guchus', 'dumbo']
split('bojjus, guchus, dumbo', ', ')[1] -> 'bojjus'
isNull(split('bojjus, guchus, dumbo', ', ')[0]) -> true
isNull(split('bojjus, guchus, dumbo', ', ')[20]) -> true
split('bojjusguchusdumbo', ',') -> ['bojjusguchusdumbo']
sqrt
sqrt(<value1> : number) => double
Berechnet die Quadratwurzel einer Zahl.
sqrt(9) -> 3
startsWith
startsWith(<string> : string, <substring to check> : string) => boolean
Überprüft, ob die Zeichenfolge mit der angegebenen Zeichenfolge beginnt.
startsWith('dumbo', 'du') -> true
stddev
stddev(<value1> : number) => double
Ruft die Standardabweichung einer Spalte ab.
stdDev(sales)
stddevIf
stddevIf(<value1> : boolean, <value2> : number) => double
Ruft die Standardabweichung einer Spalte basierend auf Kriterien ab.
stddevIf(region == 'West', sales)
stddevPopulation
stddevPopulation(<value1> : number) => double
Ruft die Standardabweichung der Population einer Spalte ab.
stddevPopulation(sales)
stddevPopulationIf
stddevPopulationIf(<value1> : boolean, <value2> : number) => double
Ruft die Populationsstandardabweichung einer Spalte basierend auf bestimmten Kriterien ab.
stddevPopulationIf(region == 'West', sales)
stddevSample
stddevSample(<value1> : number) => double
Ruft die Standardabweichung einer Stichprobe einer Spalte ab.
stddevSample(sales)
stddevSampleIf
stddevSampleIf(<value1> : boolean, <value2> : number) => double
Ruft die Stichprobenstandardabweichung einer Spalte basierend auf Kriterien ab.
stddevSampleIf(region == 'West', sales)
subDays
subDays(<date/timestamp> : datetime, <days to subtract> : integral) => datetime
Subtrahiert Tage von einem Datums- oder Zeitstempel. Identisch mit dem Operator für datum - .
subDays(toDate('2016-08-08'), 1) -> toDate('2016-08-07')
subMonths
subMonths(<date/timestamp> : datetime, <months to subtract> : integral) => datetime
Subtrahiert Monate von einem Datums- oder Zeitstempel.
subMonths(toDate('2016-09-30'), 1) -> toDate('2016-08-31')
substring
substring(<string to subset> : string, <from 1-based index> : integral, [<number of characters> : integral]) => string
Extrahiert eine Teilzeichenfolge mit einer bestimmten Länge ab einer Position. Die Position basiert auf 1. Wenn die Länge nicht angegeben wird, wird standardmäßig das Ende der Zeichenfolge verwendet.
substring('Cat in the hat', 5, 2) -> 'in'
substring('Cat in the hat', 5, 100) -> 'in the hat'
substring('Cat in the hat', 5) -> 'in the hat'
substring('Cat in the hat', 100, 100) -> ''
substringIndex
substringIndex(
<string to subset><delimiter>substringIndex( : string, : string, <count of delimiter occurrences> : integral]) => string
Extrahiert die Teilzeichenfolge vor der Anzahl von Vorkommen des Trennzeichens. Wenn die Anzahl positiv ist, wird alles, was links von dem letzten Trennzeichen liegt (von links gezählt), zurückgegeben. Wenn die Anzahl negativ ist, wird alles rechts vom endgültigen Trennzeichen (von rechts gezählt) zurückgegeben.
substringIndex('111-222-333', '-', 1) -> '111'
substringIndex('111-222-333', '-', 2) -> '111-222'
substringIndex('111-222-333', '-', -1) -> '333'
substringIndex('111-222-333', '-', -2) -> '222-333'
sum
sum(<value1> : number) => number
Ruft die aggregierte Summe einer numerischen Spalte ab.
sum(col)
sumDistinct
sumDistinct(<value1> : number) => number
Ruft die aggregierte Summe unterschiedlicher Werte einer numerischen Spalte ab.
sumDistinct(col)
sumDistinctIf
sumDistinctIf(<value1> : boolean, <value2> : number) => number
Ruft die Aggregatsumme einer numerischen Spalte basierend auf Kriterien ab. Die Bedingung kann auf jeder Spalte basieren.
sumDistinctIf(state == 'CA' && commission < 10000, sales)
sumDistinctIf(true, sales)
sumIf
sumIf(<value1> : boolean, <value2> : number) => number
Ruft die Aggregatsumme einer numerischen Spalte basierend auf Kriterien ab. Die Bedingung kann auf jeder Spalte basieren.
sumIf(state == 'CA' && commission < 10000, sales)
sumIf(true, sales)
T
tan
tan(<value1> : number) => double
Berechnet einen Tangenswert.
tan(0) -> 0.0
tanh
tanh(<value1> : number) => double
Berechnet einen hyperbolischen Tangenswert.
tanh(0) -> 0.0
toBase64
toBase64(<value1> : string, <encoding type> : string]) => string
Codiert die spezifische Zeichenfolge in Base64. Optional können Sie den Codierungstyp übergeben.
toBase64('bojjus') -> 'Ym9qanVz'
toBase64('± 25000, € 5.000,- |', 'Windows-1252') -> 'sSAyNTAwMCwggCA1LjAwMCwtIHw='
toBinary
toBinary(<value1> : any) => binary
Wandelt numerische, Datums-, Zeitstempel oder Zeichenfolgen in binäre Darstellung um.
toBinary(3) -> [0x11]
toBoolean
toBoolean(<value1> : string) => boolean
Wandelt einen Wert von (t, true, , yyes, 1) in true und (f, false, n, , no0) in false und NULL für einen anderen Wert um.
toBoolean('true') -> true
toBoolean('n') -> false
isNull(toBoolean('truthy')) -> true
toByte
toByte(<value> : any, [<format> : string], [<locale> : string]) => byte
Konvertiert beliebige numerische oder Zeichenfolgenwerte in einen Bytewert. Sie können ein optionales Java-Dezimalformat für die Konvertierung verwenden.
toByte(123)
123
toByte(0xFF)
-1
toByte('123')
123
toDate
toDate(<string> : any, [<date format> : string]) => date
Konvertiert eine Eingabedatumszeichenfolge in ein Datum mithilfe eines optionalen Eingabedatumsformats. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java. Wenn das Eingabedatumsformat nicht angegeben wird, ist yyyy-[M]M-[d]ddas Standardformat . Akzeptierte Formate sind :[ yyyy, yyyy-[M]M, yyyy-[M]M-[d]d, yyyy-[M]M-[d]dT* ].
toDate('2012-8-18') -> toDate('2012-08-18')
toDate('12/18/2012', 'MM/dd/yyyy') -> toDate('2012-12-18')
toDecimal
toDecimal(<value> : any, [<precision> : integral], [<scale> : integral], [<format> : string], [<locale> : string]) => decimal(10,0)
Wandelt beliebige numerische oder Zeichenfolgenwerte in einen decimal-Wert um. Wenn Genauigkeit und Skalierung nicht angegeben sind, wird standardmäßig (10,2) verwendet. Sie können ein optionales Java-Dezimalformat für die Konvertierung verwenden. Verwenden Sie ein optionales Gebietsschemaformat in Form einer BCP47-Sprache wie en-US, de oder zh-CN.
toDecimal(123.45) -> 123.45
toDecimal('123.45', 8, 4) -> 123.4500
toDecimal('$123.45', 8, 4,'$###.00') -> 123.4500
toDecimal('Ç123,45', 10, 2, 'Ç###,##', 'de') -> 123.45
toDouble
toDouble(<value> : any, [<format> : string], [<locale> : string]) => double
Wandelt beliebige numerische oder Zeichenfolgenwerte in einen double-Wert um. Sie können ein optionales Java-Dezimalformat für die Konvertierung verwenden. Verwenden Sie ein optionales Gebietsschemaformat in Form einer BCP47-Sprache wie en-US, de oder zh-CN.
toDouble(123.45) -> 123.45
toDouble('123.45') -> 123.45
toDouble('$123.45', '$###.00') -> 123.45
toDouble('Ç123,45', 'Ç###,##', 'de') -> 123.45
toFloat
toFloat(<value> : any, [<format> : string], [<locale> : string]) => float
Wandelt beliebige numerische oder Zeichenfolgenwerte in einen float-Wert um. Sie können ein optionales Java-Dezimalformat für die Konvertierung verwenden. Kürzt alle double-Werte.
toFloat(123.45) -> 123.45f
toFloat('123.45') -> 123.45f
toFloat('$123.45', '$###.00') -> 123.45f
toInteger
toInteger(<value> : any, [<format> : string], [<locale> : string]) => integer
Konvertiert beliebige numerische oder Zeichenfolgenwerte in einen Integer-Wert. Sie können ein optionales Java-Dezimalformat für die Konvertierung verwenden. Kürzt alle long-, float- und double-Werte.
toInteger(123) -> 123
toInteger('123') -> 123
toInteger('$123', '$###') -> 123
toLong
toLong(<value> : any, [<format> : string], [<locale> : string]) => long
Wandelt beliebige numerische oder Zeichenfolgenwerte in einen long-Wert um. Sie können ein optionales Java-Dezimalformat für die Konvertierung verwenden. Kürzt alle float- und double-Werte.
toLong(123) -> 123
toLong('123') -> 123
toLong('$123', '$###') -> 123
topN
topN(<column/expression> : any, <count> : long, <n> : integer) => array
Ruft die obersten N Werte für diese Spalte basierend auf dem Count-Argument ab.
topN(custId, count, 5)
topN(productId, num_sales, 10)
toShort
toShort(<value> : any, [<format> : string], [<locale> : string]) => short
Wandelt beliebige numerische oder Zeichenfolgenwerte in einen short-Wert um. Sie können ein optionales Java-Dezimalformat für die Konvertierung verwenden. Kürzt alle integer-, long-, float- und double-Werte.
toShort(123) -> 123
toShort('123') -> 123
toShort('$123', '$###') -> 123
toString
toString(<value> : any, [<number format/date format> : string], [<date locale> : string]) => string
Konvertiert einen primitiven Datentyp in eine Zeichenfolge. Sie können ein Format für Zahlen und Datum angeben. Wenn nicht angegeben, wird der Systemstandard ausgewählt. Das Java-Dezimalformat wird für Zahlen verwendet. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java. Das Standardformat ist yyyy-MM-dd. Für einen Datums- oder Zeitstempel können Sie optional ein Gebietsschema angeben.
toString(10) -> '10'
toString('engineer') -> 'engineer'
toString(123456.789, '##,###.##') -> '123,456.79'
toString(123.78, '000000.000') -> '000123.780'
toString(12345, '##0.#####E0') -> '12.345E3'
toString(toDate('2018-12-31')) -> '2018-12-31'
isNull(toString(toDate('2018-12-31', 'MM/dd/yy'))) -> true
toString(4 == 20) -> 'false'
toString(toDate('12/31/18', 'MM/dd/yy', 'es-ES'), 'MM/dd/yy', 'de-DE')
toTimestamp
toTimestamp(<string> : any, [<timestamp format> : string], [<time zone> : string]) => timestamp
Konvertiert eine Zeichenfolge in einen Zeitstempel, wenn ein optionales Zeitstempelformat angegeben ist. Wenn der Zeitstempel weggelassen wird, wird das Standardmuster yyyy-[M]M-[d]d hh:mm:ss[.f...] verwendet. Sie können eine optionale Zeitzone in Form von GMT, PST, UTC oder America/Cayman übergeben. Die timestamp Funktion unterstützt bis zu Millisekundengenauigkeit mit einem Wert von 999. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java.
toTimestamp('2016-12-31 00:12:00') -> toTimestamp('2016-12-31 00:12:00')
toTimestamp('2016-12-31T00:12:00', 'yyyy-MM-dd\'T\'HH:mm:ss', 'PST') -> toTimestamp('2016-12-31 00:12:00')
toTimestamp('12/31/2016T00:12:00', 'MM/dd/yyyy\'T\'HH:mm:ss') -> toTimestamp('2016-12-31 00:12:00')
millisecond(toTimestamp('2019-02-03 05:19:28.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> 871
toUTC
toUTC(<value1> : timestamp, [<value2> : string]) => timestamp
Wandelt den Zeitstempel in UTC um. Sie können eine optionale Zeitzone in Form von GMT, PST, UTC oder America/Cayman übergeben. Standardmäßig wird die aktuelle Zeitzone verwendet. Informationen zu den verfügbaren Formaten finden Sie in der SimpleDateFormat-Klasse von Java.
toUTC(currentTimestamp()) == toTimestamp('2050-12-12 19:18:12') -> false
toUTC(currentTimestamp(), 'Asia/Seoul') != toTimestamp('2050-12-12 19:18:12') -> true
translate
translate(<string to translate> : string, <lookup characters> : string, <replace characters> : string) => string
Ersetzt eine Gruppe von Zeichen durch eine andere Gruppe von Zeichen in der Zeichenfolge. Zeichen haben eine 1:1-Ersetzung.
translate('(bojjus)', '()', '[]') -> '[bojjus]'
translate('(gunchus)', '()', '[') -> '[gunchus'
trim
trim(<string to trim> : string, [<trim characters> : string]) => string
Entfernt vorangestellte und nachgestellte Zeichen aus einer Zeichenfolge. Wenn der zweite Parameter nicht angegeben ist, werden Leerzeichen gekürzt. Andernfalls werden alle im zweiten Parameter angegebenen Zeichen gekürzt.
trim(' dumbo ') -> 'dumbo'
trim('!--!du!mbo!', '-!') -> 'dumbo'
true
true() => boolean
Gibt immer den Wert TRUE zurück. Verwenden Sie die Funktion syntax(true()) , wenn eine Spalte benannt trueist.
(10 + 20 == 30) -> true
(10 + 20 == 30) -> true()
typeMatch
typeMatch(<type> : string, <base type> : string) => boolean
Stimmt mit dem Typ der Spalte überein. Sie können sie nur in Musterausdrücken verwenden. Die Funktion number gleicht „short“, „integer“, „long“, „double“, „float“ oder „decimal“ ab. Die Funktion integral entspricht short, int und long. Die fractional Funktion unterstützt double, float, Decimal. Die datetime Funktion entspricht dem Datums- oder Zeitstempeltyp.
typeMatch(type, 'number')
typeMatch('date', 'datetime')
U
unescape
unescape(<string_to_escape> : string, <format> : string) => string
Entfernt die Escapezeichen einer Zeichenfolge entsprechend einem Format. Literalwerte für zulässige Formate sind json, , xml, ecmascript, htmlund java.
unescape('{\\\\\"value\\\\\": 10}', 'json')
'{\\\"value\\\": 10}'
unfold
unfold (<value1>: array) => any
Entfaltet ein Array in eine Reihe von Zeilen und wiederholt die Werte für die verbleibenden Spalten in jeder Zeile.
unfold(addresses) => any
unfold( @(name = salesPerson, sales = salesAmount) ) => any
unhex
unhex(<value1>: string) => binary
Diese Funktion konvertiert die Zeichenfolgendarstellung eines Hexadezimalwerts in einen Binärwert. Sie können es mit sha2, md5 zum Konvertieren von Zeichenfolge in binäre Darstellung verwenden.
unhex('1fadbe') -> toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])
unhex(md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))) -> toBinary([toByte(0x4c),toByte(0xe8),toByte(0xa8),toByte(0x80),toByte(0xbd),toByte(0x62),toByte(0x1a),toByte(0x1f),toByte(0xfa),toByte(0xd0),toByte(0xbc),toByte(0xa9),toByte(0x05),toByte(0xe1),toByte(0xbc),toByte(0x5a)])
union
union(<value1>: array, <value2> : array) => array
Gibt eine Vereinigungsmenge einzigartiger Elemente aus zwei Arrays zurück.
union([10, 20, 30], [20, 40]) => [10, 20, 30, 40]
upper
upper(<value1> : string) => string
Wandelt eine Zeichenfolge in Großschreibung um.
upper('bojjus') -> 'BOJJUS'
uuid
uuid() => string
Gibt die generierte UUID zurück.
uuid()
V
variance
variance(<value1> : number) => double
Ruft die Varianz einer Spalte ab.
variance(sales)
varianceIf
varianceIf(<value1> : boolean, <value2> : number) => double
Ruft die Varianz einer Spalte basierend auf Kriterien ab.
varianceIf(region == 'West', sales)
variancePopulation
variancePopulation(<value1> : number) => double
Ruft die Varianz der Population einer Spalte ab.
variancePopulation(sales)
variancePopulationIf
variancePopulationIf(<value1> : boolean, <value2> : number) => double
Ruft die Populationsvarianz einer Spalte basierend auf bestimmten Kriterien ab.
variancePopulationIf(region == 'West', sales)
varianceSample
varianceSample(<value1> : number) => double
Ruft die ausgewogene Varianz einer Spalte ab.
varianceSample(sales)
varianceSampleIf
varianceSampleIf(<value1> : boolean, <value2> : number) => double
Ruft die unvoreingenommene Varianz einer Spalte basierend auf Kriterien ab.
varianceSampleIf(region == 'West', sales)
W
weekOfYear
weekOfYear(<value1> : datetime) => integer
Ermittelt die Woche des Jahres, wenn ein Datum angegeben ist.
weekOfYear(toDate('2008-02-20')) -> 8
weeks
weeks(<value1> : integer) => long
Ruft die Dauer in Millisekunden für die Anzahl der Wochen ab.
weeks(2) -> 1209600000L
X
xor
xor(<value1> : boolean, <value2> : boolean) => boolean
Verwendet den logischen XOR Operator. Entspricht dem Operator ^.
xor(true, false) -> true
xor(true, true) -> false
true ^ false -> true
Y
year
year(<value1> : datetime) => integer
Ruft den Jahreswert eines Datums ab.
year(toDate('2012-8-8')) -> 2012
Verwandte Inhalte
- Liste aller Aggregatfunktionen
- Liste aller Arrayfunktionen
- Liste aller zwischengespeicherten Suchfunktionen
- Liste aller Konvertierungsfunktionen
- Liste aller Datums- und Uhrzeitfunktionen
- Liste aller Ausdrucksfunktionen
- Liste aller Zuordnungsfunktionen
- Liste aller Metafunktionen
- Liste aller Fensterfunktionen
- Erfahren Sie, wie Sie den Ausdrucks-Generator verwenden.