Użycie wyrażenia przekształcania danych w przepływach danych mapowania
DOTYCZY: Azure Data Factory Azure Synapse Analytics
Napiwek
Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !
Przepływy danych są dostępne zarówno w usłudze Azure Data Factory, jak i w potokach usługi Azure Synapse. Ten artykuł dotyczy przepływów danych mapowania. Jeśli dopiero zaczynasz transformacje, zapoznaj się z artykułem wprowadzającym Przekształcanie danych przy użyciu przepływu danych mapowania.
Poniższe artykuły zawierają szczegółowe informacje o użyciu wszystkich wyrażeń i funkcji obsługiwanych przez usługi Azure Data Factory i Azure Synapse Analytics w przepływach danych mapowania. W przypadku podsumowań każdego obsługiwanego typu funkcji zapoznaj się z następującymi artykułami:
- Agregujących
- Funkcje tablicy
- Buforowane funkcje wyszukiwania
- Funkcje konwersji
- Funkcje daty i godziny
- Funkcje wyrażeń
- Funkcje mapy
- Metafunctions
- Funkcje okien
Alfabetyczna lista wszystkich funkcji
Poniżej znajduje się alfabetyczna lista wszystkich funkcji dostępnych w przepływach danych mapowania.
A
abs
abs(<value1> : number) => number
Wartość bezwzględna liczby.
abs(-20) -> 20
abs(10) -> 10
acos
acos(<value1> : number) => double
Oblicza wartość odwrotną cosinusu.
acos(1) -> 0.0
add
add(<value1> : any, <value2> : any) => any
Dodaje parę ciągów lub liczb. Dodaje datę do wielu dni. Dodaje czas trwania do znacznika czasu. Dołącza jedną tablicę o podobnym typie do innego. Tak samo jak operator +.
add(10, 20) -> 30
10 + 20 -> 30
add('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
Dodaj dni do znacznika czasu lub daty. Taki sam jak operator + dla daty.
addDays(toDate('2016-08-08'), 1) -> toDate('2016-08-09')
addMonths
addMonths(<date/timestamp> : datetime, <months to add> : integral, [<value3> : string]) => datetime
Dodaj miesiące do znacznika czasu lub daty. Opcjonalnie możesz przekazać strefę czasową.
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
Operator logiczny AND. Tak samo jak &
and(true, false) -> false
true && false -> false
approxDistinctCount
approxDistinctCount(<value1> : any, [ <value2> : double ]) => long
Pobiera przybliżoną liczbę agregacji unikatowych wartości dla kolumny. Opcjonalny drugi parametr służy do kontrolowania błędu szacowania.
approxDistinctCount(ProductID, .05) => long
array
array([<value1> : any], ...) => array
Tworzy tablicę elementów. Wszystkie elementy powinny być tego samego typu. Jeśli nie określono żadnych elementów, pusta tablica ciągów jest wartością domyślną. Tak samo jak operator tworzenia [].
array('Seattle', 'Washington')
['Seattle', 'Washington']
['Seattle', 'Washington'][1]
'Washington'
ascii
ascii(<Input> : string) => number
Zwraca wartość liczbową znaku wejściowego. Jeśli ciąg wejściowy ma więcej niż jeden znak, zwracana jest wartość liczbowa pierwszego znaku
ascii('A') -> 65
ascii('a') -> 97
asin
asin(<value1> : number) => double
Oblicza odwrotną wartość sinusu.
asin(0) -> 0.0
assertErrorMessages
assertErrorMessages() => map
Zwraca mapę wszystkich komunikatów o błędach dla wiersza z identyfikatorem potwierdzenia jako kluczem.
Przykłady
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
Tworzy mapę klucz/wartości. Wszystkie klucze i wartości powinny być tego samego typu. Jeśli nie określono żadnych elementów, domyślnie zostanie ustawiona mapa ciągu na typ ciągu. Tak samo jak [ -> ]
operator tworzenia. Klucze i wartości powinny być alternatywne ze sobą.
associate('fruit', 'apple', 'vegetable', 'carrot' )=> ['fruit' -> 'apple', 'vegetable' -> 'carrot']
at
at(<value1> : array/map, <value2> : integer/key type) => array
Znajduje element w indeksie tablicy. Indeks jest oparty na 1. Indeks poza granicami powoduje wartość null. Znajduje wartość na mapie przy użyciu klucza. Jeśli klucz nie zostanie znaleziony, zwraca wartość null.
at(['apples', 'pears'], 1) => 'apples'
at(['fruit' -> 'apples', 'vegetable' -> 'carrot'], 'fruit') => 'apples'
atan
atan(<value1> : number) => double
Oblicza odwrotną wartość tangensową.
atan(0) -> 0.0
atan2
atan2(<value1> : number, <value2> : number) => double
Zwraca kąt w radianach między dodatnią osią x płaszczyzny a punktem podanym przez współrzędne.
atan2(0, 0) -> 0.0
avg
avg(<value1> : number) => number
Pobiera średnią wartości kolumny.
avg(sales)
avgIf
avgIf(<value1> : boolean, <value2> : number) => number
Na podstawie kryteriów uzyskuje się średnią wartości kolumny.
avgIf(region == 'West', sales)
B
between
between(<value1> : any, <value2> : any, <value3> : any) => boolean
Sprawdza, czy pierwsza wartość znajduje się między dwiema innymi wartościami włącznie. Wartości liczbowe, ciągowe i datetime można porównać
between(10, 5, 24)
true
between(currentDate(), currentDate() + 10, currentDate() + 20)
false
bitwiseAnd
bitwiseAnd(<value1> : integral, <value2> : integral) => integral
Operator bitowy And w typach całkowitych. Tak samo jak operator i
bitwiseAnd(0xf4, 0xef)
0xe4
(0xf4 & 0xef)
0xe4
bitwiseOr
bitwiseOr(<value1> : integral, <value2> : integral) => integral
Operator bitowy or w różnych typach całkowitych. Takie same jak | operator
bitwiseOr(0xf4, 0xef)
0xff
(0xf4 | 0xef)
0xff
bitwiseXor
bitwiseXor(<value1> : any, <value2> : any) => any
Operator bitowy or w różnych typach całkowitych. Takie same jak | operator
bitwiseXor(0xf4, 0xef)
0x1b
(0xf4 ^ 0xef)
0x1b
(true ^ false)
true
(true ^ true)
false
blake2b
blake2b(<value1> : integer, <value2> : any, ...) => string
Oblicza skrót Blake2 zestawu kolumn o różnych typach danych pierwotnych, biorąc pod uwagę długość bitu, które mogą być wielokrotnościami 8 z zakresu od 8 do 512. Może służyć do obliczania odcisku palca dla wiersza
blake2b(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
'c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d'
blake2bBinary
blake2bBinary(<value1> : integer, <value2> : any, ...) => binary
Oblicza skrót Blake2 zestawu kolumn o różnych typach danych pierwotnych, biorąc pod uwagę długość bitu, które mogą być wielokrotnościami 8 z zakresu od 8 do 512. Może służyć do obliczania odcisku palca dla wiersza
blake2bBinary(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
unHex('c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d')
byItem
byItem(<parent column> : any, <column name> : string) => any
Znajdź element podrzędny w strukturze lub tablicy struktury. Jeśli istnieje wiele dopasowań, zostanie zwrócone pierwsze dopasowanie. Jeśli wartość NULL nie jest zgodna, zwraca wartość NULL. Zwracana wartość musi być typem przekonwertowanym przez jedną z akcji konwersji typu (? data, ? ciąg ...). Nazwy kolumn tylko adresów znane w czasie projektowania według ich nazwy. Obliczone dane wejściowe nie są obsługiwane, ale można użyć podstawień parametrów.
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
Wybiera wartość kolumny według nazwy w strumieniu. Możesz przekazać opcjonalną nazwę strumienia jako drugi argument. Jeśli istnieje wiele dopasowań, zostanie zwrócone pierwsze dopasowanie. Jeśli wartość NULL nie jest zgodna, zwraca wartość NULL. Zwracana wartość musi być typu konwertowana przez jedną z funkcji konwersji typów (TO_DATE, TO_STRING ...). Nazwy kolumn tylko adresów znane w czasie projektowania według ich nazwy. Obliczone dane wejściowe nie są obsługiwane, ale można użyć podstawień parametrów.
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
Wybierz tablicę kolumn według nazwy w strumieniu. Możesz przekazać opcjonalną nazwę strumienia jako drugi argument. Jeśli istnieje wiele dopasowań, zostanie zwrócone pierwsze dopasowanie. Jeśli nie ma dopasowań dla kolumny, całe dane wyjściowe są wartością NULL. Zwracana wartość wymaga funkcji konwersji typu (toDate, toString, ...). Nazwy kolumn tylko adresów znane w czasie projektowania według ich nazwy. Obliczone dane wejściowe nie są obsługiwane, ale można użyć podstawień parametrów.
toString(byNames(['parent', 'child']))
byNames(['parent']) ? string
toLong(byNames(['income']))
byNames(['income']) ? long
toBoolean(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
Wybiera wartość kolumny według nazwy w strumieniu pochodzenia. Drugim argumentem jest nazwa strumienia pochodzenia. Jeśli istnieje wiele dopasowań, zostanie zwrócone pierwsze dopasowanie. Jeśli wartość NULL nie jest zgodna, zwraca wartość NULL. Zwracana wartość musi być typu konwertowana przez jedną z funkcji konwersji typów (TO_DATE, TO_STRING ...). Nazwy kolumn tylko adresów znane w czasie projektowania według ich nazwy. Obliczone dane wejściowe nie są obsługiwane, ale można użyć podstawień parametrów.
toString(byOrigin('ancestor', 'ancestorStream'))
byOrigins
byOrigins(<column names> : array, [<origin stream name> : string]) => any
Wybiera tablicę kolumn według nazwy w strumieniu. Drugim argumentem jest strumień, z którego pochodzi. Jeśli istnieje wiele dopasowań, zostanie zwrócone pierwsze dopasowanie. Jeśli wartość NULL nie jest zgodna, zwraca wartość NULL. Zwracana wartość musi być typu konwertowana przez jedną z funkcji konwersji typów (TO_DATE, TO_STRING ...). Nazwy kolumn tylko adresów znane w czasie projektowania według ich nazwy. Obliczone dane wejściowe nie są obsługiwane, ale można użyć podstawień parametrów.
toString(byOrigins(['ancestor1', 'ancestor2'], 'ancestorStream'))
byPath
byPath(<value1> : string, [<streamName> : string]) => any
Znajduje ścieżkę hierarchiczną według nazwy w strumieniu. Możesz przekazać opcjonalną nazwę strumienia jako drugi argument. Jeśli taka ścieżka nie zostanie znaleziona, zwraca wartość null. Nazwy kolumn/ścieżki znane w czasie projektowania powinny być adresowane tylko przez ich nazwę lub ścieżkę notacji kropkowej. Obliczone dane wejściowe nie są obsługiwane, ale można użyć podstawień parametrów.
byPath('grandpa.parent.child') => column
byPosition
byPosition(<position> : integer) => any
Wybiera wartość kolumny według pozycji względnej (1 na podstawie) w strumieniu. Jeśli pozycja jest poza granicami, zwraca wartość NULL. Zwracana wartość musi być typu konwertowana przez jedną z funkcji konwersji typów (TO_DATE, TO_STRING ...). Obliczone dane wejściowe nie są obsługiwane, ale można użyć podstawień parametrów.
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
Na podstawie warunków naprzemiennych stosuje jedną wartość lub drugą. Jeśli liczba danych wejściowych jest parzysta, dla ostatniego warunku domyślnie jest ustawiona wartość 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')) -> true
case(10 + 20 == 25, 'bojjus', 'do' > 'go', 'gunchus', 'dumbo') -> 'dumbo'
cbrt
cbrt(<value1> : number) => double
Oblicza pierwiastek modułu liczby.
cbrt(8) -> 2.0
ceil
ceil(<value1> : number) => number
Zwraca najmniejszą liczbę całkowitą nie mniejszą niż liczba.
ceil(-0.1) -> 0
char
char(<Input> : number) => string
Zwraca znak ascii reprezentowany przez liczbę wejściową. Jeśli liczba jest większa niż 256, wynik jest odpowiednikiem znaku (liczba % 256)
char(65) -> 'A'
char(97) -> 'a'
coalesce
coalesce(<value1> : any, ...) => any
Zwraca pierwszą wartość nie null z zestawu danych wejściowych. Wszystkie dane wejściowe powinny być tego samego typu.
coalesce(10, 20) -> 10
coalesce(toString(null), toString(null), 'dumbo', 'bo', 'go') -> 'dumbo'
collect
collect(<value1> : any) => array
Zbiera wszystkie wartości wyrażenia w zagregowanej grupie w tablicy. Struktury można zbierać i przekształcać w alternatywne struktury podczas tego procesu. Liczba elementów jest równa liczbie wierszy w tej grupie i może zawierać wartości null. Liczba zebranych elementów powinna być mała.
collect(salesPerson)
collect(firstName + lastName))
collect(@(name = salesPerson, sales = salesAmount) )
collectUnique
collectUnique(<value1> : any) => array
Zbiera wszystkie wartości wyrażenia w zagregowanej grupie w unikatowej tablicy. Struktury można zbierać i przekształcać w alternatywne struktury podczas tego procesu. Liczba elementów jest równa liczbie wierszy w tej grupie i może zawierać wartości null. Liczba zebranych elementów powinna być mała.
collect(salesPerson)
collect(firstName + lastName))
collect(@(name = salesPerson, sales = salesAmount) )
columnNames
columnNames(<value1>
columnNames( : ciąg, i><value1> : wartość logiczna) => tablica
Pobiera nazwy wszystkich kolumn wyjściowych dla strumienia. Jako pierwszy argument można przekazać opcjonalną nazwę strumienia. Drugi argument jest również opcjonalny z wartością false jako domyślną. Jeśli ustawisz drugi argument na true()
wartość , usługa Data Factory zwróci tylko kolumny dryfujące przez dryf schematu.
columnNames()
columnNames('DeriveStream')
columnNames('DeriveStream', true())
columnNames('', true())
columns
columns([<stream name> : string]) => any
Pobiera wartości wszystkich kolumn wyjściowych dla strumienia. Możesz przekazać opcjonalną nazwę strumienia jako drugi argument.
columns()
columns('DeriveStream')
compare
compare(<value1> : any, <value2> : any) => integer
Porównuje dwie wartości tego samego typu. Zwraca ujemną liczbę całkowitą, jeśli wartość1 < wartość2, 0, jeśli wartość1 == value2, wartość dodatnia, jeśli wartość1 > wartość2.
(compare(12, 24) < 1) -> true
(compare('dumbo', 'dum') > 0) -> true
concat
concat(<this> : string, <that> : string, ...) => string
Łączy ze sobą zmienną liczbę ciągów. Tak samo jak operator + z ciągami.
concat('dataflow', 'is', 'awesome') -> 'dataflowisawesome'
'dataflow' + 'is' + 'awesome' -> 'dataflowisawesome'
isNull('sql' + null) -> true
concatWS
concatWS(<separator> : string, <this> : string, <that> : string, ...) => string
Łączy zmienną liczbę ciągów wraz z separatorem. Pierwszy parametr jest separatorem.
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
Zwraca wartość true, jeśli dowolny element w podanej tablicy daje wartość true w podanym predykacie. Zawiera oczekuje odwołania do jednego elementu w funkcji predykatu jako #item.
contains([1, 2, 3, 4], #item == 3) -> true
contains([1, 2, 3, 4], #item > 5) -> false
cos
cos(<value1> : number) => double
Oblicza wartość cosinusu.
cos(10) -> -0.8390715290764524
cosh
cosh(<value1> : number) => double
Oblicza cosinus hiperboliczny wartości.
cosh(0) -> 1.0
count
count([<value1> : any]) => long
Pobiera zagregowaną liczbę wartości. Jeśli określono co najmniej jedną opcjonalną kolumnę, ignoruje ona wartości NULL w liczbie.
count(custId)
count(custId, custName)
count()
count(iif(isNull(custId), 1, NULL))
countAll
countAll([<value1> : any]) => long
Pobiera zagregowaną liczbę wartości, w tym wartości null.
countAll(custId)
countAll()
countDistinct
countDistinct(<value1> : any, [<value2> : any], ...) => long
Pobiera zagregowaną liczbę unikatowych wartości zestawu kolumn.
countDistinct(custId, custName)
countAllDistinct
countAllDistinct(<value1> : any, [<value2> : any], ...) => long
Pobiera zagregowaną liczbę unikatowych wartości zestawu kolumn, w tym wartości null.
countAllDistinct(custId, custName)
countIf
countIf(<value1> : boolean, [<value2> : any]) => long
Na podstawie kryteriów pobiera zagregowaną liczbę wartości. Jeśli zostanie określona opcjonalna kolumna, zignoruje wartości NULL w liczbie.
countIf(state == 'CA' && commission < 10000, name)
covariancePopulation
covariancePopulation(<value1> : number, <value2> : number) => double
Pobiera kowariancję populacji między dwiema kolumnami.
covariancePopulation(sales, profit)
covariancePopulationIf
covariancePopulationIf(<value1> : boolean, <value2> : number, <value3> : number) => double
Na podstawie kryteriów pobiera kowariancję populacji dwóch kolumn.
covariancePopulationIf(region == 'West', sales)
covarianceSample
covarianceSample(<value1> : number, <value2> : number) => double
Pobiera wariancję przykładową dwóch kolumn.
covarianceSample(sales, profit)
covarianceSampleIf
covarianceSampleIf(<value1> : boolean, <value2> : number, <value3> : number) => double
Na podstawie kryteriów pobiera próbną kowariancję dwóch kolumn.
covarianceSampleIf(region == 'West', sales, profit)
crc32
crc32(<value1> : any, ...) => long
Oblicza skrót CRC32 zestawu różnych pierwotnych typów danych na podstawie długości bitów, które mogą być wartościami 0(256), 224, 256, 384, 512. Może służyć do obliczania odcisku palca dla wiersza.
crc32(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 3630253689L
cumeDist
cumeDist() => integer
Funkcja CumeDist oblicza położenie wartości względem wszystkich wartości w partycji. Wynikiem jest liczba wierszy poprzedzających lub równych bieżącemu wierszowi w kolejności partycji podzielonej przez łączną liczbę wierszy w partycji okna. Wszystkie wartości wiązania w kolejności są obliczane na tej samej pozycji.
cumeDist()
currentDate
currentDate([<value1> : string]) => date
Pobiera bieżącą datę uruchomienia tego zadania. Możesz przekazać opcjonalną strefę czasową w postaci "GMT", "PST", "UTC", "America/Cayman". Lokalna strefa czasowa centrum danych/regionu fabryki danych jest używana jako domyślna. Zapoznaj się z klasą SimpleDateFormat
języka Java, aby uzyskać dostępne formaty. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
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
Pobiera bieżący znacznik czasu, gdy zadanie zaczyna działać z lokalną strefą czasową.
currentTimestamp() == toTimestamp('2250-12-31 12:12:12') -> false
currentUTC
currentUTC([<value1> : string]) => timestamp
Pobiera bieżący znacznik czasu jako UTC. Jeśli chcesz, aby bieżący czas był interpretowany w innej strefie czasowej niż strefa czasowa klastra, możesz przekazać opcjonalną strefę czasową w postaci "GMT", "PST", "UTC", "America/Cayman". Domyślnie jest to bieżąca strefa czasowa. Zapoznaj się z klasą SimpleDateFormat
języka Java, aby uzyskać dostępne formaty. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html. Aby przekonwertować czas UTC na inną strefę czasową, użyj polecenia 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
Pobiera dzień miesiąca z daną datą.
dayOfMonth(toDate('2018-06-08')) -> 8
dayOfWeek
dayOfWeek(<value1> : datetime) => integer
Pobiera dzień tygodnia z daną datą. 1 - niedziela, 2 - poniedziałek ..., 7 - sobota.
dayOfWeek(toDate('2018-06-08')) -> 6
dayOfYear
dayOfYear(<value1> : datetime) => integer
Pobiera dzień roku, biorąc pod uwagę datę.
dayOfYear(toDate('2016-04-09')) -> 100
days
days(<value1> : integer) => long
Czas trwania w milisekundach dla liczby dni.
days(2) -> 172800000L
decode
decode(<Input> : any, <Charset> : string) => binary
Dekoduje zakodowane dane wejściowe do ciągu na podstawie danego zestawu znaków. Drugi (opcjonalny) argument może służyć do określenia zestawu znaków do użycia — "US-ASCII", "ISO-8859-1", "UTF-8" (ustawienie domyślne), "UTF-16BE", "UTF-16LE", "UTF-16"
decode(array(toByte(97),toByte(98),toByte(99)), 'US-ASCII') -> abc
degrees
degrees(<value1> : number) => double
Konwertuje radiany na stopnie.
degrees(3.141592653589793) -> 180
denseRank
denseRank() => integer
Oblicza rangę wartości w grupie wartości określonych w kolejności okna według klauzuli. Wynik jest jednym plus liczbą wierszy poprzedzających lub równych bieżącemu wierszowi w kolejności partycji. Wartości nie generują luk w sekwencji. Funkcja Dense Rank działa nawet wtedy, gdy dane nie są sortowane i szukają zmian w wartościach.
denseRank()
distinct
distinct(<value1> : array) => array
Zwraca unikatowy zestaw elementów z tablicy.
distinct([10, 20, 30, 10]) => [10, 20, 30]
divide
divide(<value1> : any, <value2> : any) => any
Dzieli parę liczb. Tak samo jak /
operator.
divide(20, 10) -> 2
20 / 10 -> 2
dropLeft
dropLeft(<value1> : string, <value2> : integer) => string
Usuwa tyle znaków z lewej strony ciągu. Jeśli żądana kropla przekracza długość ciągu, zwracany jest pusty ciąg.
- dropLeft('bojjus', 2) => 'jjus'
- dropLeft('cake', 10) => ''
dropRight
dropRight(<value1> : string, <value2> : integer) => string
Usuwa tyle znaków z prawej strony ciągu. Jeśli żądana kropla przekracza długość ciągu, zwracany jest pusty ciąg.
- dropRight('bojjus', 2) => 'bojj'
- dropRight('cake', 10) => ''
E
encode
encode(<Input> : string, <Charset> : string) => binary
Koduje dane ciągu wejściowego do danych binarnych na podstawie zestawu znaków. Drugi (opcjonalny) argument może służyć do określenia zestawu znaków do użycia — "US-ASCII", "ISO-8859-1", "UTF-8" (ustawienie domyślne), "UTF-16BE", "UTF-16LE", "UTF-16"
encode('abc', 'US-ASCII') -> array(toByte(97),toByte(98),toByte(99))
endsWith
endsWith(<string> : string, <substring to check> : string) => boolean
Sprawdza, czy ciąg kończy się podanym ciągiem.
endsWith('dumbo', 'mbo') -> true
equals
equals(<value1> : any, <value2> : any) => boolean
Operator porównania równa się. Taki sam jak 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
Porównanie równa się operatorowi ignorujące wielkość liter. Tak samo jak <=> operator.
'abc'<=>'Abc' -> true
equalsIgnoreCase('abc', 'Abc') -> true
escape
escape(<string_to_escape> : string, <format> : string) => string
Usuwa ciąg zgodnie z formatem. Wartości literału dopuszczalnego formatu to "json", "xml", "ecmascript", "html", "java".
except
except(<value1> : array, <value2> : array) => array
Zwraca zestaw różnic z jednej tablicy z innej porzucania duplikatów.
except([10, 20, 30], [20, 40]) => [10, 30]
expr
expr(<expr> : string) => any
Powoduje wyrażenie z ciągu. Jest to takie samo, jak pisanie tego wyrażenia w postaci nieliteralnej. Może to służyć do przekazywania parametrów jako reprezentacji ciągów.
- expr('price * discount') => any
F
factorial
factorial(<value1> : number) => long
Oblicza współczynnik liczby.
factorial(5) -> 120
false
false() => boolean
Zawsze zwraca wartość false. Użyj funkcji syntax(false())
, jeśli istnieje kolumna o nazwie "false".
(10 + 20 > 30) -> false
(10 + 20 > 30) -> false()
filter
filter(<value1> : array, <value2> : unaryfunction) => array
Filtruje elementy z tablicy, które nie spełniają podanego predykatu. Filtr oczekuje odwołania do jednego elementu w funkcji predykatu jako #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
Znajdź pierwszy element z tablicy zgodnej z warunkiem. Przyjmuje funkcję filtru, w której można adresować element w tablicy jako #item. W przypadku głęboko zagnieżdżonych map można odwoływać się do map nadrzędnych przy użyciu notacji #item_n(#item_1, #item_2...).
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
Pobiera pierwszą wartość grupy kolumn. Jeśli drugi parametr ignoreNulls zostanie pominięty, usługa Data Factory przyjmuje wartość false.
first(sales)
first(sales, false)
flatten
flatten(<array> : array, <value2> : array ..., <value2> : boolean) => array
Płaska tablica lub tablice w jedną tablicę. Tablice elementów niepodzielnych są zwracane niezniszczone. Ostatni argument jest opcjonalny i domyślnie ma wartość false, aby spłaszczać rekursywnie więcej niż jeden poziom głębokości.
flatten([['bojjus', 'girl'], ['gunchus', 'boy']]) => ['bojjus', 'girl', 'gunchus', 'boy']
flatten([[['bojjus', 'gunchus']]] , true) => ['bojjus', 'gunchus']
floor
floor(<value1> : number) => number
Zwraca największą liczbę całkowitą nie większą niż liczba.
floor(-0.1) -> -1
fromBase64
fromBase64(<value1> : string, <encoding type> : string) => string
Dekoduje dany ciąg zakodowany w formacie base64. Opcjonalnie można przekazać typ kodowania.
fromBase64('Z3VuY2h1cw==') -> 'gunchus'
fromBase64('SGVsbG8gV29ybGQ=', 'Windows-1252') -> 'Hello World'
fromUTC
fromUTC(<value1> : timestamp, [<value2> : string]) => timestamp
Konwertuje na znacznik czasu z utc. Opcjonalnie możesz przekazać strefę czasową w postaci "GMT", "PST", "UTC", "America/Cayman". Domyślnie jest to bieżąca strefa czasowa. Zapoznaj się z klasą SimpleDateFormat
języka Java, aby uzyskać dostępne formaty. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
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
Operator większego porównania. Tak samo jak > 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
Porównanie większe niż lub równe operator. Tak samo jak >= operator.
greaterOrEqual(12, 12) -> true
('dumbo' >= 'dum') -> true
greatest
greatest(<value1> : any, ...) => any
Zwraca największą wartość na liście wartości jako dane wejściowe pomijając wartości null. Zwraca wartość null, jeśli wszystkie dane wejściowe mają wartość null.
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
Sprawdza wartość kolumny według nazwy w strumieniu. Możesz przekazać opcjonalną nazwę strumienia jako drugi argument. Nazwy kolumn tylko adresów znane w czasie projektowania według ich nazwy. Obliczone dane wejściowe nie są obsługiwane, ale można użyć podstawień parametrów.
hasColumn('parent')
hasError
hasError([<value1> : string]) => boolean
Sprawdza, czy zasób z podanym identyfikatorem jest oznaczony jako błąd.
Przykłady
hasError('assert1')
hasError('assert2')
hasPath
hasPath(<value1> : string, [<streamName> : string]) => boolean
Sprawdza, czy określona ścieżka hierarchiczna istnieje według nazwy w strumieniu. Możesz przekazać opcjonalną nazwę strumienia jako drugi argument. Nazwy kolumn/ścieżki znane w czasie projektowania powinny być adresowane tylko przez ich nazwę lub ścieżkę notacji kropkowej. Obliczone dane wejściowe nie są obsługiwane, ale można użyć podstawień parametrów.
hasPath('grandpa.parent.child') => boolean
hex
hex(<value1>: binary) => string
Zwraca reprezentację ciągu szesnastkowego wartości binarnej
hex(toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])) -> '1fadbe'
hour
hour(<value1> : timestamp, [<value2> : string]) => integer
Pobiera wartość godziny znacznika czasu. Możesz przekazać opcjonalną strefę czasową w postaci "GMT", "PST", "UTC", "America/Cayman". Lokalna strefa czasowa jest używana jako domyślna. Zapoznaj się z klasą SimpleDateFormat
języka Java, aby uzyskać dostępne formaty. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
hour(toTimestamp('2009-07-30 12:58:59')) -> 12
hour(toTimestamp('2009-07-30 12:58:59'), 'PST') -> 12
hours
hours(<value1> : integer) => long
Czas trwania w milisekundach przez liczbę godzin.
hours(2) -> 7200000L
I
iif
iif(<condition> : boolean, <true_expression> : any, [<false_expression> : any]) => any
Na podstawie warunku stosuje jedną wartość lub drugą. Jeśli inne jest nieokreślone, wartość jest uważana za null. Obie wartości muszą być zgodne (numeryczne, ciąg...).
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
Biorąc pod uwagę co najmniej dwa dane wejściowe, zwraca pierwszy element nie null. Ta funkcja jest równoważna łączeniem.
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
Sprawdza, czy element znajduje się w tablicy.
in([10, 20, 30], 10) -> true
in(['good', 'kid'], 'bad') -> false
initCap
initCap(<value1> : string) => string
Konwertuje pierwszą literę każdego wyrazu na wielkie litery. Wyrazy są identyfikowane jako oddzielone białym znakiem.
initCap('cool iceCREAM') -> 'Cool Icecream'
instr
instr(<string> : string, <substring to find> : string) => integer
Znajduje położenie (na podstawie 1) podciągu w ciągu. Wartość 0 jest zwracana, jeśli nie zostanie znaleziona.
instr('dumbo', 'mbo') -> 3
instr('microsoft', 'o') -> 5
instr('good', 'bad') -> 0
intersect
intersect(<value1> : array, <value2> : array) => array
Zwraca zestaw przecięć różnych elementów z dwóch tablic.
intersect([10, 20, 30], [20, 40]) => [20]
isBitSet
isBitSet (<value1> : array, <value2>:integer ) => boolean
Sprawdza, czy pozycja bitowa jest ustawiona w tym zestawie bitów
isBitSet(toBitSet([10, 32, 98]), 10) => true
isBoolean
isBoolean(<value1>: string) => boolean
Sprawdza, czy wartość ciągu jest wartością logiczną zgodnie z regułami toBoolean()
isBoolean('true') -> true
isBoolean('no') -> true
isBoolean('microsoft') -> false
isByte
isByte(<value1> : string) => boolean
Sprawdza, czy wartość ciągu jest wartością bajtów podaną jako opcjonalny format zgodnie z regułami toByte()
isByte('123') -> true
isByte('chocolate') -> false
isDate
isDate (<value1> : string, [<format>: string]) => boolean
Sprawdza, czy wejściowy ciąg daty jest datą przy użyciu opcjonalnego formatu daty wejściowej. Aby uzyskać dostępne formaty, zobacz SimpleDateFormat języka Java. Jeśli format daty wejściowej zostanie pominięty, domyślny format to yyyy-[M]M-[d]d
. Zaakceptowane formaty to [ 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
Sprawdza, czy wartość ciągu jest wartością dziesiętną podaną jako opcjonalny format zgodnie z regułami toDecimal()
isDecimal('123.45') -> true
isDecimal('12/12/2000') -> false
isDelete
isDelete([<value1> : integer]) => boolean
Sprawdza, czy wiersz jest oznaczony do usunięcia. W przypadku przekształceń przyjmujących więcej niż jeden strumień wejściowy można przekazać (oparty na 1) indeksie strumienia. Indeks strumienia powinien mieć wartość 1 lub 2, a wartość domyślna to 1.
isDelete()
isDelete(1)
isDistinct
isDistinct(<value1> : any , <value1> : any) => boolean
Znajduje, czy kolumna lub zestaw kolumn są odrębne. Nie zlicza wartości null jako odrębnej wartości
isDistinct(custId, custName) => boolean
isDouble
isDouble (<value1> : string, [<format>: string]) => boolean
Sprawdza, czy wartość ciągu jest podwójną wartością podaną jako opcjonalny format zgodnie z regułami toDouble()
isDouble('123') -> true
isDouble('$123.45' -> '$###.00') -> true
isDouble('icecream') -> false
isError
isError([<value1> : integer]) => boolean
Sprawdza, czy wiersz jest oznaczony jako błąd. W przypadku przekształceń przyjmujących więcej niż jeden strumień wejściowy można przekazać (oparty na 1) indeksie strumienia. Indeks strumienia powinien mieć wartość 1 lub 2, a wartość domyślna to 1.
isError()
isError(1)
isFloat
isFloat (<value1> : string, [<format>: string]) => boolean
Sprawdza, czy wartość ciągu jest wartością zmiennoprzecinkową w formacie opcjonalnym zgodnie z regułami toFloat()
isFloat('123') -> true
isFloat('$123.45' -> '$###.00') -> true
isFloat('icecream') -> false
isIgnore
isIgnore([<value1> : integer]) => boolean
Sprawdza, czy wiersz jest oznaczony jako ignorowany. W przypadku przekształceń przyjmujących więcej niż jeden strumień wejściowy można przekazać (oparty na 1) indeksie strumienia. Indeks strumienia powinien mieć wartość 1 lub 2, a wartość domyślna to 1.
isIgnore()
isIgnore(1)
isInsert
isInsert([<value1> : integer]) => boolean
Sprawdza, czy wiersz jest oznaczony do wstawiania. W przypadku przekształceń przyjmujących więcej niż jeden strumień wejściowy można przekazać (oparty na 1) indeksie strumienia. Indeks strumienia powinien mieć wartość 1 lub 2, a wartość domyślna to 1.
isInsert()
isInsert(1)
isInteger
isInteger (<value1> : string, [<format>: string]) => boolean
Sprawdza, czy wartość ciągu jest wartością całkowitą podaną jako opcjonalny format zgodnie z regułami toInteger()
isInteger('123') -> true
isInteger('$123' -> '$###') -> true
isInteger('microsoft') -> false
isLong
isLong (<value1> : string, [<format>: string]) => boolean
Sprawdza, czy wartość ciągu jest wartością długą, biorąc pod uwagę opcjonalny format zgodnie z regułami toLong()
isLong('123') -> true
isLong('$123' -> '$###') -> true
isLong('gunchus') -> false
isMatch
isMatch([<value1> : integer]) => boolean
Sprawdza, czy wiersz jest dopasowany do odnośnika. W przypadku przekształceń przyjmujących więcej niż jeden strumień wejściowy można przekazać (oparty na 1) indeksie strumienia. Indeks strumienia powinien mieć wartość 1 lub 2, a wartość domyślna to 1.
isMatch()
isMatch(1)
isNan
isNan (<value1> : integral) => boolean
Sprawdź, czy nie jest to liczba.
isNan(10.2) => false
isNull
isNull(<value1> : any) => boolean
Sprawdza, czy wartość ma wartość NULL.
isNull(NULL()) -> true
isNull('') -> false
isShort
isShort (<value1> : string, [<format>: string]) => boolean
Sprawdza, czy wartość ciągu jest krótką wartością podaną jako opcjonalny format zgodnie z regułami toShort()
isShort('123') -> true
isShort('$123' -> '$###') -> true
isShort('microsoft') -> false
isTimestamp
isTimestamp (<value1> : string, [<format>: string]) => boolean
Sprawdza, czy wejściowy ciąg daty jest znacznikiem czasu przy użyciu opcjonalnego formatu znacznika czasu wejściowego. Aby uzyskać dostępne formaty, zobacz SimpleDateFormat języka Java. Jeśli znacznik czasu zostanie pominięty, zostanie użyty domyślny wzorzec yyyy-[M]M-[d]d hh:mm:ss[.f...]
. Możesz przekazać opcjonalną strefę czasową w postaci "GMT", "PST", "UTC", "America/Cayman". Znacznik czasu obsługuje maksymalnie milisekundę dokładności z wartością 999 Zapoznaj się z formatem SimpleDateFormat języka Java, aby uzyskać dostępne formaty.
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
Sprawdza, czy wiersz jest oznaczony do aktualizacji. W przypadku przekształceń przyjmujących więcej niż jeden strumień wejściowy można przekazać (oparty na 1) indeksie strumienia. Indeks strumienia powinien mieć wartość 1 lub 2, a wartość domyślna to 1.
isUpdate()
isUpdate(1)
isUpsert
isUpsert([<value1> : integer]) => boolean
Sprawdza, czy wiersz jest oznaczony do wstawiania. W przypadku przekształceń przyjmujących więcej niż jeden strumień wejściowy można przekazać (oparty na 1) indeksie strumienia. Indeks strumienia powinien mieć wartość 1 lub 2, a wartość domyślna to 1.
isUpsert()
isUpsert(1)
J
jaroWinkler
jaroWinkler(<value1> : string, <value2> : string) => double
Pobiera odległość JaroWinkler między dwoma ciągami.
jaroWinkler('frog', 'frog') => 1.0
tys.
keyValues
keyValues(<value1> : array, <value2> : array) => map
Tworzy mapę klucz/wartości. Pierwszy parametr to tablica kluczy, a drugi to tablica wartości. Obie tablice powinny mieć równą długość.
keyValues(['bojjus', 'appa'], ['gunchus', 'ammi']) => ['bojjus' -> 'gunchus', 'appa' -> 'ammi']
kurtosis
kurtosis(<value1> : number) => double
Pobiera kurtozę kolumny.
kurtosis(sales)
kurtosisIf
kurtosisIf(<value1> : boolean, <value2> : number) => double
Na podstawie kryteriów pobiera kurtozę kolumny.
kurtosisIf(region == 'West', sales)
L
lag
lag(<value> : any, [<number of rows to look before> : number], [<default value> : any]) => any
Pobiera wartość pierwszego parametru ocenianego n wierszy przed bieżącym wierszem. Drugi parametr to liczba wierszy do wyszukania wstecz, a wartość domyślna to 1. Jeśli nie ma tyle wierszy, zwracana jest wartość null, chyba że zostanie określona wartość domyślna.
lag(amount, 2)
lag(amount, 2000, 100)
last
last(<value1> : any, [<value2> : boolean]) => any
Pobiera ostatnią wartość grupy kolumn. Jeśli drugi parametr ignoreNulls zostanie pominięty, przyjmuje się wartość false.
last(sales)
last(sales, false)
lastDayOfMonth
lastDayOfMonth(<value1> : datetime) => date
Pobiera ostatnią datę miesiąca z datą.
lastDayOfMonth(toDate('2009-01-12')) -> toDate('2009-01-31')
lead
lead(<value> : any, [<number of rows to look after> : number], [<default value> : any]) => any
Pobiera wartość pierwszego parametru ocenianego n wierszy po bieżącym wierszu. Drugi parametr to liczba wierszy do przodu, a wartość domyślna to 1. Jeśli nie ma tyle wierszy, zwracana jest wartość null, chyba że zostanie określona wartość domyślna.
lead(amount, 2)
lead(amount, 2000, 100)
least
least(<value1> : any, ...) => any
Porównanie mniejsze niż lub równe operator. Tak samo jak <= 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
Wyodrębnia podciąg rozpoczynający się od indeksu 1 z liczbą znaków. Tak samo jak PODSTRING(str, 1, n).
left('bojjus', 2) -> 'bo'
left('bojjus', 20) -> 'bojjus'
length
length(<value1> : string) => integer
Zwraca długość ciągu.
length('dumbo') -> 5
lesser
lesser(<value1> : any, <value2> : any) => boolean
Operator less porównania. Tak samo jak < 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
Porównanie mniejsze niż lub równe operator. Tak samo jak <= operator.
lesserOrEqual(12, 12) -> true
('dumbo' <= 'dum') -> false
levenshtein
levenshtein(<from string> : string, <to string> : string) => integer
Pobiera odległość levenshtein między dwoma ciągami.
levenshtein('boys', 'girls') -> 4
like
like(<string> : string, <pattern match> : string) => boolean
Wzorzec jest ciągiem dopasowanym dosłownie. Wyjątki są następującymi symbolami specjalnymi: _ pasuje do dowolnego znaku w danych wejściowych (podobnie jak w przypadku. W posix
wyrażeniach regularnych % pasuje do zera lub większej liczby znaków w danych wejściowych (podobnie jak .*
w wyrażeniach posix
regularnych).
Znak ucieczki to "". Jeśli znak ucieczki poprzedza specjalny symbol lub inny znak ucieczki, następujący znak jest dopasowywany dosłownie. Jest to nieprawidłowe, aby uniknąć żadnego innego znaku.
like('icecream', 'ice%') -> true
locate
locate(<substring to find> : string, <string> : string, [<from index - 1-based> : integral]) => integer
Znajduje położenie (na podstawie 1) podciągu w ciągu rozpoczynającym określoną pozycję. Jeśli pozycja zostanie pominięta, zostanie ona uznana od początku ciągu. Wartość 0 jest zwracana, jeśli nie zostanie znaleziona.
locate('mbo', 'dumbo') -> 3
locate('o', 'microsoft', 6) -> 7
locate('bad', 'good') -> 0
log
log(<value1> : number, [<value2> : number]) => double
Oblicza wartość dziennika. Opcjonalną bazę można podać w przeciwnym razie numer Eulera.
log(100, 10) -> 2
log10
log10(<value1> : number) => double
Oblicza wartość dziennika na podstawie 10 baz.
log10(100) -> 2
lookup
lookup(key, key2, ...) => complex[]
Wyszukuje pierwszy wiersz z buforowanego ujścia przy użyciu określonych kluczy pasujących do kluczy z buforowanego ujścia.
cacheSink#lookup(movieId)
lower
lower(<value1> : string) => string
Małe litery ciągu.
lower('GunChus') -> 'gunchus'
lpad
lpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
Lewa dopełnia ciąg przez podane dopełnienie, dopóki nie będzie mieć określonej długości. Jeśli ciąg jest równy lub większy niż długość, zostanie przycięty do długości.
lpad('dumbo', 10, '-') -> '-----dumbo'
lpad('dumbo', 4, '-') -> 'dumb'
ltrim
ltrim(<string to trim> : string, [<trim characters> : string]) => string
Lewe przycina ciąg znaków wiodących. Jeśli drugi parametr jest nieokreślony, przycina biały znak. W przeciwnym razie przycina dowolny znak określony w drugim parametrze.
ltrim(' dumbo ') -> 'dumbo '
ltrim('!--!du!mbo!', '-!') -> 'du!mbo!'
M
map
map(<value1> : array, <value2> : unaryfunction) => any
Mapuje każdy element tablicy na nowy element przy użyciu podanego wyrażenia. Mapowanie oczekuje odwołania do jednego elementu w funkcji wyrażenia jako #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
Przekształca mapę, kojarząc klucze z nowymi wartościami. Zwraca tablicę. Przyjmuje funkcję mapowania, w której można adresować element jako #key i bieżącą wartość jako #value.
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
Warunkowo mapuje tablicę na inną tablicę o tej samej lub mniejszej długości. Wartości mogą być dowolnego typu danych, w tym structTypes. Przyjmuje funkcję mapowania, w której można adresować element w tablicy jako #item i bieżący indeks jako #index. W przypadku głęboko zagnieżdżonych map można odwoływać się do map nadrzędnych przy użyciu #item_[n](#item_1, #index_1...)
notacji.
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
Mapuje każdy element tablicy na nowy element przy użyciu podanego wyrażenia. Mapowanie oczekuje odwołania do jednego elementu w funkcji wyrażenia jako #item i odwołania do indeksu elementu jako #index.
mapIndex([1, 2, 3, 4], #item + 2 + #index) -> [4, 6, 8, 10]
mapLoop
mapLoop(<value1> : integer, <value2> : unaryfunction) => any
Pętle od 1 do długości, aby utworzyć tablicę o tej długości. Przyjmuje funkcję mapowania, w której można adresować indeks w tablicy jako #index. W przypadku głęboko zagnieżdżonych map można odwoływać się do map nadrzędnych przy użyciu notacji #index_n(#index_1, #index_2...).
mapLoop(3, #index * 10) -> [10, 20, 30]
max
max(<value1> : any) => any
Pobiera maksymalną wartość kolumny.
max(sales)
maxIf
maxIf(<value1> : boolean, <value2> : any) => any
Na podstawie kryteriów pobiera maksymalną wartość kolumny.
maxIf(region == 'West', sales)
md5
md5(<value1> : any, ...) => string
Oblicza skrót MD5 zestawu kolumn o różnych typach danych pierwotnych i zwraca 32-znakowy ciąg szesnastkowy. Może służyć do obliczania odcisku palca dla wiersza.
md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '4ce8a880bd621a1ffad0bca905e1bc5a'
mean
mean(<value1> : number) => number
Pobiera średnią wartości kolumny. Tak samo jak średnia.
mean(sales)
meanIf
meanIf(<value1> : boolean, <value2> : number) => number
Na podstawie kryteriów uzyskuje średnią wartości kolumny. Tak samo jak avgIf.
meanIf(region == 'West', sales)
millisecond
millisecond(<value1> : timestamp, [<value2> : string]) => integer
Pobiera wartość milisekund daty. Możesz przekazać opcjonalną strefę czasową w postaci "GMT", "PST", "UTC", "America/Cayman". Lokalna strefa czasowa jest używana jako domyślna. Zapoznaj się z klasą SimpleDateFormat
języka Java, aby uzyskać dostępne formaty. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
millisecond(toTimestamp('2009-07-30 12:58:59.871', 'yyyy-MM-dd HH:mm:ss.SSS')) -> 871
milliseconds
milliseconds(<value1> : integer) => long
Czas trwania w milisekundach dla liczby milisekund.
milliseconds(2) -> 2L
min
min(<value1> : any) => any
Pobiera minimalną wartość kolumny.
min(sales)
minIf
minIf(<value1> : boolean, <value2> : any) => any
Na podstawie kryteriów pobiera minimalną wartość kolumny.
minIf(region == 'West', sales)
minus
minus(<value1> : any, <value2> : any) => any
Odejmuje liczby. Odejmowanie liczby dni od daty. Odejmij czas trwania od znacznika czasu. Odejmij dwa znaczniki czasu, aby uzyskać różnicę w milisekundach. Taki sam jak 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
Pobiera wartość minuty znacznika czasu. Możesz przekazać opcjonalną strefę czasową w postaci "GMT", "PST", "UTC", "America/Cayman". Lokalna strefa czasowa jest używana jako domyślna. Zapoznaj się z klasą SimpleDateFormat
języka Java, aby uzyskać dostępne formaty. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
minute(toTimestamp('2009-07-30 12:58:59')) -> 58
minute(toTimestamp('2009-07-30 12:58:59'), 'PST') -> 58
minutes
minutes(<value1> : integer) => long
Czas trwania w milisekundach przez liczbę minut.
minutes(2) -> 120000L
mlookup
mlookup(key, key2, ...) => complex[]
Wyszukuje wszystkie pasujące wiersze z buforowanego ujścia przy użyciu określonych kluczy pasujących do kluczy z buforowanego ujścia.
cacheSink#mlookup(movieId)
mod
mod(<value1> : any, <value2> : any) => any
Modulo pary liczb. Taki sam jak operator %.
mod(20, 8) -> 4
20 % 8 -> 4
month
month(<value1> : datetime) => integer
Pobiera wartość miesiąca daty lub znacznika czasu.
month(toDate('2012-8-8')) -> 8
monthsBetween
monthsBetween(<from date/timestamp> : datetime, <to date/timestamp> : datetime, [<roundoff> : boolean], [<time zone> : string]) => double
Pobiera liczbę miesięcy między dwiema datami. Obliczenia można zaokrąglić. Możesz przekazać opcjonalną strefę czasową w postaci "GMT", "PST", "UTC", "America/Cayman". Lokalna strefa czasowa jest używana jako domyślna. Zapoznaj się z klasą SimpleDateFormat
języka Java, aby uzyskać dostępne formaty. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
monthsBetween(toTimestamp('1997-02-28 10:30:00'), toDate('1996-10-30')) -> 3.94959677
multiply
multiply(<value1> : any, <value2> : any) => any
Mnoży parę liczb. Tak samo jak operator *.
multiply(20, 10) -> 200
20 * 10 -> 200
N
negate
negate(<value1> : number) => number
Neguje liczbę. Zamienia liczby dodatnie na ujemne i odwrotnie.
negate(13) -> -13
nextSequence
nextSequence() => long
Zwraca kolejną unikatową sekwencję. Liczba jest kolejna tylko w obrębie partycji i jest poprzedzona identyfikatorem partitionId.
nextSequence() == 12313112 -> false
normalize
normalize(<String to normalize> : string) => string
Normalizuje wartość ciągu na oddzielne znaki Unicode z akcentem.
regexReplace(normalize('bo²s'), `\p{M}`, '') -> 'boys'
not
not(<value1> : boolean) => boolean
Operator negacji logicznej.
not(true) -> false
not(10 == 20) -> true
notEquals
notEquals(<value1> : any, <value2> : any) => boolean
Porównanie nie równa się operatorowi. Taki sam jak operator !=.
12 != 24 -> true
'bojjus' != 'bo' + 'jjus' -> false
nTile
nTile([<value1> : integer]) => integer
Funkcja NTile
dzieli wiersze dla każdej partycji okna na n
zasobniki z zakresu od 1 do co najwyżej n
. Wartości zasobnika będą się różnić co najwyżej o 1. Jeśli liczba wierszy w partycji nie jest równomiernie podzielona na liczbę zasobników, pozostałe wartości są rozdzielane pojedynczo na zasobnik, począwszy od pierwszego zasobnika. Funkcja jest przydatna NTile
do obliczania tertiles
, kwartylów, decyli i innych typowych statystyk podsumowania. Funkcja oblicza dwie zmienne podczas inicjowania: rozmiar zwykłego zasobnika będzie miał dodany do niego jeden dodatkowy wiersz. Obie zmienne są oparte na rozmiarze bieżącej partycji. Podczas procesu obliczania funkcja śledzi bieżący numer wiersza, bieżący numer zasobnika i numer wiersza, w którym zasobnik zmieni się (bucketThreshold). Gdy bieżąca liczba wierszy osiągnie próg zasobnika, wartość zasobnika jest zwiększana o jeden, a próg jest zwiększany przez rozmiar zasobnika (plus jeden dodatkowy, jeśli jest wypełniony bieżący zasobnik).
nTile()
nTile(numOfBuckets)
null
null() => null
Zwraca wartość NULL. Użyj funkcji syntax(null())
, jeśli istnieje kolumna o nazwie "null". Każda operacja, która używa, spowoduje wartość NULL.
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
Operator logiczny OR. Takie same jak ||.
or(true, false) -> true
true || false -> true
originColumns
originColumns(<streamName> : string) => any
Pobiera wszystkie kolumny wyjściowe dla strumienia pochodzenia, w którym zostały utworzone kolumny. Musi być ujęta w inną funkcję.
array(toString(originColumns('source1')))
output
output() => any
Zwraca pierwszy wiersz wyników ujścia pamięci podręcznej
cacheSink#output()
outputs
output() => any
Zwraca cały zestaw wierszy wyjściowych wyników ujścia pamięci podręcznej
cacheSink#outputs()
P
partitionId
partitionId() => integer
Zwraca bieżący identyfikator partycji, w których znajduje się wiersz wejściowy.
partitionId()
pMod
pMod(<value1> : any, <value2> : any) => any
Modulo dodatnie pary liczb.
pmod(-20, 8) -> 4
power
power(<value1> : number, <value2> : number) => double
Podnosi jedną liczbę do potęgi innego.
power(10, 2) -> 100
R
radians
radians(<value1> : number) => double
Konwertuje stopnie na radiany
radians(180) => 3.141592653589793
random
random(<value1> : integral) => long
Zwraca liczbę losową przy użyciu opcjonalnego inicjatora w ramach partycji. Inicjator powinien być stałą wartością i jest używany z identyfikatorem partitionId do generowania wartości losowych
random(1) == 1 -> false
rank
rank() => integer
Oblicza rangę wartości w grupie wartości określonych w kolejności okna według klauzuli. Wynik jest jednym plus liczbą wierszy poprzedzających lub równych bieżącemu wierszowi w kolejności partycji. Wartości spowodują luki w sekwencji. Funkcja Rank działa nawet wtedy, gdy dane nie są sortowane i szukają zmian w wartościach.
rank()
reassociate
reassociate(<value1> : map, <value2> : binaryFunction) => map
Przekształca mapę, kojarząc klucze z nowymi wartościami. Przyjmuje funkcję mapowania, w której można adresować element jako #key i bieżącą wartość jako #value.
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
Gromadzi elementy w tablicy. Funkcja Redukcji oczekuje odwołania do akumulatora i jednego elementu w pierwszej funkcji wyrażenia jako #acc i #item i oczekuje wynikowej wartości jako #result do użycia w drugiej funkcji wyrażenia.
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
Wyodrębnij pasujący podciąg dla danego wzorca wyrażeń regularnych. Ostatni parametr identyfikuje grupę dopasowania i jest domyślnie ustawiony na 1, jeśli pominięto. Użyj <regex>
(cudzysłowu wstecznego), aby dopasować ciąg bez ucieczki. Indeks 0 zwraca wszystkie dopasowania. Bez grup dopasowania indeks 1 lub nowszy nie zwróci żadnego wyniku.
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
Sprawdza, czy ciąg jest zgodny z danym wzorcem wyrażenia regularnego. Użyj <regex>
(cudzysłowu wstecznego), aby dopasować ciąg bez ucieczki.
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
Zastąp wszystkie wystąpienia wzorca wyrażeń regularnych innym podciągem w danym ciągu Użyj <regex>
(cudzysłów wstecznych), aby dopasować ciąg bez ucieczki.
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
Dzieli ciąg na podstawie ogranicznika na podstawie wyrażenia regularnego i zwraca tablicę ciągów.
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
Zastąp wszystkie wystąpienia podciągów innym podciągem w danym ciągu. Jeśli ostatni parametr zostanie pominięty, wartość domyślna to pusty ciąg.
replace('doggie dog', 'dog', 'cat') -> 'catgie cat'
replace('doggie dog', 'dog', '') -> 'gie '
replace('doggie dog', 'dog') -> 'gie '
reverse
reverse(<value1> : string) => string
Odwraca ciąg.
reverse('gunchus') -> 'suhcnug'
right
right(<string to subset> : string, <number of characters> : integral) => string
Wyodrębnia podciąg z liczbą znaków z prawej strony. Tak samo jak PODSTRING(str, LENGTH(str) - n, n.
right('bojjus', 2) -> 'us'
right('bojjus', 20) -> 'bojjus'
rlike
rlike(<string> : string, <pattern match> : string) => boolean
Sprawdza, czy ciąg jest zgodny z danym wzorcem wyrażenia regularnego.
rlike('200.50', `(\d+).(\d+)`) -> true
rlike('bogus', `M[0-9]+.*`) -> false
round
round(<number> : number, [<scale to round> : number], [<rounding option> : integral]) => double
Zaokrągla liczbę, biorąc pod uwagę opcjonalną skalę i opcjonalny tryb zaokrąglania. Jeśli skala zostanie pominięta, wartość domyślna to 0. Jeśli tryb zostanie pominięty, wartość domyślna to ROUND_HALF_UP(5). Wartości zaokrąglania obejmują
- ROUND_UP — tryb zaokrąglania w celu zaokrąglenia od zera.
- ROUND_DOWN — tryb zaokrąglania do zera.
- ROUND_CEILING — tryb zaokrąglania w kierunku nieskończoności dodatniej. [Tak samo jak ROUND_UP, jeśli dane wejściowe są dodatnie. Jeśli wartość ujemna, zachowuje się jako ROUND_DOWN. Ex = -1.1 będzie -1.0 z ROUND_CEILING i -2 z ROUND_UP]
- ROUND_FLOOR — tryb zaokrąglania w kierunku nieskończoności ujemnej. [Tak samo jak ROUND_DOWN, jeśli dane wejściowe są dodatnie. Jeśli wartość ujemna, zachowuje się jako ROUND_UP]
- ROUND_HALF_UP — tryb zaokrąglania do "najbliższego sąsiada", chyba że oba sąsiady są równodysponowane, w tym przypadku ROUND_UP. [Najbardziej typowe + domyślne dla przepływu danych].
- ROUND_HALF_DOWN — tryb zaokrąglania w kierunku "najbliższego sąsiada", chyba że oba sąsiady są równodysponowane, w tym przypadku ROUND_DOWN.
- ROUND_HALF_EVEN — tryb zaokrąglania w kierunku "najbliższego sąsiada", chyba że oba sąsiady są równodysponowane, w tym przypadku zaokrąglaj w kierunku parzystego sąsiada.
- ROUND_UNNECESSARY — tryb zaokrąglania w celu potwierdzenia, że operacja okrężna ma dokładny wynik, dlatego nie jest konieczne zaokrąglanie.
round(100.123) -> 100.0
round(2.5, 0) -> 3.0
round(5.3999999999999995, 2, 7) -> 5.40
rowNumber
rowNumber() => integer
Przypisuje sekwencyjne numerowanie wierszy dla wierszy w oknie rozpoczynającym się od 1.
rowNumber()
rpad
rpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
Prawe wypełnienie ciągu przez podane dopełnienie, dopóki nie będzie mieć określonej długości. Jeśli ciąg jest równy lub większy niż długość, zostanie przycięty do długości.
rpad('dumbo', 10, '-') -> 'dumbo-----'
rpad('dumbo', 4, '-') -> 'dumb'
rpad('dumbo', 8, '<>') -> 'dumbo<><'
rtrim
rtrim(<string to trim> : string, [<trim characters> : string]) => string
Prawe przycina ciąg znaków końcowych. Jeśli drugi parametr jest nieokreślony, przycina biały znak. W przeciwnym razie przycina dowolny znak określony w drugim parametrze.
rtrim(' dumbo ') -> ' dumbo'
rtrim('!--!du!mbo!', '-!') -> '!--!du!mbo'
S
second
second(<value1> : timestamp, [<value2> : string]) => integer
Pobiera drugą wartość daty. Możesz przekazać opcjonalną strefę czasową w postaci "GMT", "PST", "UTC", "America/Cayman". Lokalna strefa czasowa jest używana jako domyślna. Zapoznaj się z klasą SimpleDateFormat
języka Java, aby uzyskać dostępne formaty. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
second(toTimestamp('2009-07-30 12:58:59')) -> 59
seconds
seconds(<value1> : integer) => long
Czas trwania w milisekundach przez liczbę sekund.
seconds(2) -> 2000L
setBitSet
setBitSet (<value1>: array, <value2>:array) => array
Ustawia pozycje bitów w tym zestawie bitów
setBitSet(toBitSet([10, 32]), [98]) => [4294968320L, 17179869184L]
sha1
sha1(<value1> : any, ...) => string
Oblicza skrót SHA-1 zestawu kolumn o różnych typach danych pierwotnych i zwraca 40-znakowy ciąg szesnastkowy. Może służyć do obliczania odcisku palca dla wiersza.
sha1(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '46d3b478e8ec4e1f3b453ac3d8e59d5854e282bb'
sha2
sha2(<value1> : integer, <value2> : any, ...) => string
Oblicza skrót SHA-2 zestawu kolumn o różnych typach danych pierwotnych na podstawie długości bitów, które mogą zawierać tylko wartości 0(256), 224, 256, 384, 512. Może służyć do obliczania odcisku palca dla wiersza.
sha2(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 'afe8a553b1761c67d76f8c31ceef7f71b66a1ee6f4e6d3b5478bf68b47d06bd3'
sin
sin(<value1> : number) => double
Oblicza wartość sinusu.
sin(2) -> 0.9092974268256817
sinh
sinh(<value1> : number) => double
Oblicza wartość sinusu hiperbolicznego.
sinh(0) -> 0.0
size
size(<value1> : any) => integer
Znajduje rozmiar tablicy lub typu mapy
size(['element1', 'element2']) -> 2
size([1,2,3]) -> 3
skewness
skewness(<value1> : number) => double
Pobiera niesymetryczność kolumny.
skewness(sales)
skewnessIf
skewnessIf(<value1> : boolean, <value2> : number) => double
Na podstawie kryteriów pobiera niesymetryczność kolumny.
skewnessIf(region == 'West', sales)
slice
slice(<array to slice> : array, <from 1-based index> : integral, [<number of items> : integral]) => array
Wyodrębnia podzbiór tablicy z pozycji. Pozycja jest oparta na 1. Jeśli długość zostanie pominięta, zostanie ona domyślnie ustawiona na koniec ciągu.
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
Sortuje tablicę przy użyciu podanej funkcji predykatu. Funkcja Sort oczekuje odwołania do dwóch kolejnych elementów w funkcji wyrażenia jako #item1 i #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
soundex
Pobiera kod dla ciągu.
soundex('genius') -> 'G520'
split
split(<string to split> : string, <split characters> : string) => array
Dzieli ciąg na podstawie ogranicznika i zwraca tablicę ciągów.
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
Oblicza pierwiastek kwadratowy liczby.
sqrt(9) -> 3
startsWith
startsWith(<string> : string, <substring to check> : string) => boolean
Sprawdza, czy ciąg rozpoczyna się od podanego ciągu.
startsWith('dumbo', 'du') -> true
stddev
stddev(<value1> : number) => double
Pobiera odchylenie standardowe kolumny.
stdDev(sales)
stddevIf
stddevIf(<value1> : boolean, <value2> : number) => double
Na podstawie kryteriów pobiera odchylenie standardowe kolumny.
stddevIf(region == 'West', sales)
stddevPopulation
stddevPopulation(<value1> : number) => double
Pobiera odchylenie standardowe populacji kolumny.
stddevPopulation(sales)
stddevPopulationIf
stddevPopulationIf(<value1> : boolean, <value2> : number) => double
Na podstawie kryteriów pobiera odchylenie standardowe populacji kolumny.
stddevPopulationIf(region == 'West', sales)
stddevSample
stddevSample(<value1> : number) => double
Pobiera odchylenie standardowe próbki kolumny.
stddevSample(sales)
stddevSampleIf
stddevSampleIf(<value1> : boolean, <value2> : number) => double
Na podstawie kryteriów pobiera przykładowe odchylenie standardowe kolumny.
stddevSampleIf(region == 'West', sales)
subDays
subDays(<date/timestamp> : datetime, <days to subtract> : integral) => datetime
Odejmij dni od daty lub znacznika czasu. Taki sam jak operator - dla daty.
subDays(toDate('2016-08-08'), 1) -> toDate('2016-08-07')
subMonths
subMonths(<date/timestamp> : datetime, <months to subtract> : integral) => datetime
Odejmowanie miesięcy od daty lub znacznika czasu.
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
Wyodrębnia podciąg o określonej długości z pozycji. Pozycja jest oparta na 1. Jeśli długość zostanie pominięta, zostanie ona domyślnie ustawiona na koniec ciągu.
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, : string, <count of delimiter>occurences> : integral]) = string>
Wyodrębnia podciąg przed count
wystąpieniami ogranicznika. Jeśli count
jest dodatni, zwracana jest cała część końcowego ogranicznika (licząc od lewej). Jeśli count
jest ujemna, zwracana jest cała część końcowego ogranicznika (licząc od prawej).
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
Pobiera sumę agregacji kolumny liczbowej.
sum(col)
sumDistinct
sumDistinct(<value1> : number) => number
Pobiera zagregowaną sumę unikatowych wartości kolumny liczbowej.
sumDistinct(col)
sumDistinctIf
sumDistinctIf(<value1> : boolean, <value2> : number) => number
Na podstawie kryteriów pobiera sumę agregowaną kolumny liczbowej. Warunek może być oparty na dowolnej kolumnie.
sumDistinctIf(state == 'CA' && commission < 10000, sales)
sumDistinctIf(true, sales)
sumIf
sumIf(<value1> : boolean, <value2> : number) => number
Na podstawie kryteriów pobiera sumę agregowaną kolumny liczbowej. Warunek może być oparty na dowolnej kolumnie.
sumIf(state == 'CA' && commission < 10000, sales)
sumIf(true, sales)
T
tan
tan(<value1> : number) => double
Oblicza wartość tangensa.
tan(0) -> 0.0
tanh
tanh(<value1> : number) => double
Oblicza wartość tangensa hiperbolicznego.
tanh(0) -> 0.0
toBase64
toBase64(<value1> : string, <encoding type> : string]) => string
Koduje dany ciąg w base64. Opcjonalnie można przekazać typ kodowania
toBase64('bojjus') -> 'Ym9qanVz'
toBase64('± 25000, € 5.000,- |', 'Windows-1252') -> 'sSAyNTAwMCwggCA1LjAwMCwtIHw='
toBinary
toBinary(<value1> : any) => binary
Konwertuje dowolną wartość liczbową/datę/znacznik czasu/ciąg na reprezentację binarną.
toBinary(3) -> [0x11]
toBoolean
toBoolean(<value1> : string) => boolean
Konwertuje wartość wartości ('t', 'true', 'y', 'yes', '1') na true i ('f', 'false', 'n', 'no', '0') na false i NULL dla każdej innej wartości.
toBoolean('true') -> true
toBoolean('n') -> false
isNull(toBoolean('truthy')) -> true
toByte
toByte(<value> : any, [<format> : string], [<locale> : string]) => byte
Konwertuje dowolną wartość liczbową lub ciągową na wartość bajtu. Na potrzeby konwersji można użyć opcjonalnego formatu dziesiętnego Java.
toByte(123)
123
toByte(0xFF)
-1
toByte('123')
123
toDate
toDate(<string> : any, [<date format> : string]) => date
Konwertuje wejściowy ciąg daty na datę przy użyciu opcjonalnego formatu daty wejściowej. Zapoznaj się z klasą SimpleDateFormat
języka Java, aby uzyskać dostępne formaty. Jeśli format daty wejściowej zostanie pominięty, domyślny format to rrrr-[M]M-[d]d].d. Akceptowane formaty to:[ rrrr, y-[M]M, yy-[M]M-[M-[d]d, y-[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)
Konwertuje dowolną wartość liczbową lub ciąg na wartość dziesiętną. Jeśli nie określono precyzji i skali, wartość domyślna to (10,2). Na potrzeby konwersji można użyć opcjonalnego formatu dziesiętnego Java. Opcjonalny format ustawień regionalnych w postaci języka BCP47, takiego jak en-US, de, 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
Konwertuje dowolną wartość liczbową lub ciągową na podwójną wartość. Na potrzeby konwersji można użyć opcjonalnego formatu dziesiętnego Java. Opcjonalny format ustawień regionalnych w postaci języka BCP47, takiego jak en-US, de, 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
Konwertuje dowolną wartość liczbową lub ciągową na wartość zmiennoprzecinkową. Na potrzeby konwersji można użyć opcjonalnego formatu dziesiętnego Java. Obcina wszelkie podwójne.
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
Konwertuje dowolną wartość liczbową lub ciągową na wartość całkowitą. Na potrzeby konwersji można użyć opcjonalnego formatu dziesiętnego Java. Obcina wszelkie długie, zmiennoprzecinkowe, podwójne.
toInteger(123) -> 123
toInteger('123') -> 123
toInteger('$123', '$###') -> 123
toLong
toLong(<value> : any, [<format> : string], [<locale> : string]) => long
Konwertuje dowolną wartość liczbową lub ciągową na wartość długą. Na potrzeby konwersji można użyć opcjonalnego formatu dziesiętnego Java. Obcina dowolny zmiennoprzecinkowy, podwójny.
toLong(123) -> 123
toLong('123') -> 123
toLong('$123', '$###') -> 123
topN
topN(<column/expression> : any, <count> : long, <n> : integer) => array
Pobiera n pierwszych wartości dla tej kolumny na podstawie argumentu count.
topN(custId, count, 5)
topN(productId, num_sales, 10)
toShort
toShort(<value> : any, [<format> : string], [<locale> : string]) => short
Konwertuje dowolną wartość liczbową lub ciągową na krótką wartość. Na potrzeby konwersji można użyć opcjonalnego formatu dziesiętnego Java. Obcina dowolną liczbę całkowitą, długą, zmiennoprzecinkową, podwójną.
toShort(123) -> 123
toShort('123') -> 123
toShort('$123', '$###') -> 123
toString
toString(<value> : any, [<number format/date format> : string], [<date locale> : string]) => string
Konwertuje pierwotny typ danych na ciąg. W przypadku liczb i dat można określić format. Jeśli nie określono ustawienia domyślnego systemu, zostanie wybrana. Format dziesiętny Języka Java jest używany dla liczb. Aby uzyskać wszystkie możliwe formaty dat, zapoznaj się z tematem Java SimpleDateFormat; domyślny format to yyyy-MM-dd. W przypadku znacznika daty lub znacznika czasu można opcjonalnie określić ustawienia regionalne.
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
Konwertuje ciąg na znacznik czasu, biorąc pod uwagę opcjonalny format znacznika czasu. Jeśli znacznik czasu zostanie pominięty domyślny wzorzec rrrr-[M]M-[d]d hh:mm:ss[.f...] jest używany. Możesz przekazać opcjonalną strefę czasową w postaci "GMT", "PST", "UTC", "America/Cayman". Znacznik czasu obsługuje do milisekund dokładności z wartością 999. Zapoznaj się z klasą SimpleDateFormat
języka Java, aby uzyskać dostępne formaty. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
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
Konwertuje znacznik czasu na utc. Możesz przekazać opcjonalną strefę czasową w postaci "GMT", "PST", "UTC", "America/Cayman". Domyślnie jest używana bieżąca strefa czasowa. Zapoznaj się z klasą SimpleDateFormat
języka Java, aby uzyskać dostępne formaty. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html.
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
Zastąp jeden zestaw znaków innym zestawem znaków w ciągu. Znaki mają od 1 do 1 zamiany.
translate('(bojjus)', '()', '[]') -> '[bojjus]'
translate('(gunchus)', '()', '[') -> '[gunchus'
trim
trim(<string to trim> : string, [<trim characters> : string]) => string
Przycina ciąg znaków wiodących i końcowych. Jeśli drugi parametr jest nieokreślony, przycina biały znak. W przeciwnym razie przycina dowolny znak określony w drugim parametrze.
trim(' dumbo ') -> 'dumbo'
trim('!--!du!mbo!', '-!') -> 'dumbo'
true
true() => boolean
Zawsze zwraca wartość true. Użyj funkcji syntax(true())
, jeśli istnieje kolumna o nazwie "true".
(10 + 20 == 30) -> true
(10 + 20 == 30) -> true()
typeMatch
typeMatch(<type> : string, <base type> : string) => boolean
Pasuje do typu kolumny. Można używać tylko w wyrażeniach wzorców. Liczba pasuje do krótkich, całkowitych, długich, podwójnych, zmiennoprzecinkowych lub dziesiętnych, całkowitoliczbowych dopasowań krótkich, całkowitych, długich, ułamkowych dopasowań podwójnych, zmiennoprzecinkowych, dziesiętnych i daty/godziny pasuje do typu daty lub znacznika czasu.
typeMatch(type, 'number')
typeMatch('date', 'datetime')
U
unescape
unescape(<string_to_escape> : string, <format> : string) => string
Unescapes ciąg zgodnie z formatem. Wartości literału dopuszczalnego formatu to "json", "xml", "ecmascript", "html", "java".
unescape('{\\\\\"value\\\\\": 10}', 'json')
'{\\\"value\\\": 10}'
unfold
unfold (<value1>: array) => any
Rozwija tablicę w zestawie wierszy i powtarza wartości pozostałych kolumn w każdym wierszu.
unfold(addresses) => any
unfold( @(name = salesPerson, sales = salesAmount) ) => any
unhex
unhex(<value1>: string) => binary
Anuluje wartość binarną z reprezentacji ciągu. Może to być używane z sha2, md5 do konwersji z ciągu na reprezentację binarną
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
Zwraca zestaw związków unikatowych elementów z 2 tablic.
union([10, 20, 30], [20, 40]) => [10, 20, 30, 40]
upper
upper(<value1> : string) => string
Wielkie litery ciągu.
upper('bojjus') -> 'BOJJUS'
uuid
uuid() => string
Zwraca wygenerowany identyfikator UUID.
uuid()
V
variance
variance(<value1> : number) => double
Pobiera wariancję kolumny.
variance(sales)
varianceIf
varianceIf(<value1> : boolean, <value2> : number) => double
Na podstawie kryteriów pobiera wariancję kolumny.
varianceIf(region == 'West', sales)
variancePopulation
variancePopulation(<value1> : number) => double
Pobiera wariancję populacji kolumny.
variancePopulation(sales)
variancePopulationIf
variancePopulationIf(<value1> : boolean, <value2> : number) => double
Na podstawie kryteriów pobiera wariancję populacji kolumny.
variancePopulationIf(region == 'West', sales)
varianceSample
varianceSample(<value1> : number) => double
Pobiera niestronną wariancję kolumny.
varianceSample(sales)
varianceSampleIf
varianceSampleIf(<value1> : boolean, <value2> : number) => double
Na podstawie kryteriów pobiera niestronną wariancję kolumny.
varianceSampleIf(region == 'West', sales)
Ś
weekOfYear
weekOfYear(<value1> : datetime) => integer
Pobiera tydzień roku, biorąc pod uwagę datę.
weekOfYear(toDate('2008-02-20')) -> 8
weeks
weeks(<value1> : integer) => long
Czas trwania w milisekundach przez liczbę tygodni.
weeks(2) -> 1209600000L
X
xor
xor(<value1> : boolean, <value2> : boolean) => boolean
Operator logiczny XOR. Taki sam jak operator ^.
xor(true, false) -> true
xor(true, true) -> false
true ^ false -> true
Y
year
year(<value1> : datetime) => integer
Pobiera wartość roku daty.
year(toDate('2012-8-8')) -> 2012
Powiązana zawartość
- Lista wszystkich funkcji agregujących.
- Lista wszystkich funkcji tablicy.
- Lista wszystkich buforowanych funkcji wyszukiwania.
- Lista wszystkich funkcji konwersji.
- Lista wszystkich funkcji daty i godziny.
- Lista wszystkich funkcji wyrażeń.
- Lista wszystkich funkcji mapy.
- Lista wszystkich funkcji metafunkcyjnych.
- Lista wszystkich funkcji okna.
- Dowiedz się, jak używać konstruktora wyrażeń.