Utilizzo dell’espressione per la trasformazione dei dati nel flusso di dati per mapping
SI APPLICA A: Azure Data Factory Azure Synapse Analytics
Suggerimento
Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!
I flussi di dati sono disponibili nelle pipeline sia di Azure Data Factory che di Azure Synapse. Questo articolo si applica ai flussi di dati per mapping. Se non si ha esperienza con le trasformazioni, vedere l'articolo introduttivo Trasformare i dati con un flusso di dati per mapping.
Gli articoli seguenti forniscono informazioni dettagliate sull'utilizzo di tutte le espressioni e funzioni supportate da Azure Data Factory e Azure Synapse Analytics nei flussi di dati per mapping. Per i riepiloghi relativi a ogni tipo di funzione supportata, fare riferimento agli articoli seguenti:
- Funzioni di aggregazione
- Funzioni di matrice
- Funzioni di ricerca memorizzate nella cache
- Funzioni di conversione
- Funzioni di data e ora
- Funzioni per le espressioni
- Funzioni di mapping
- Metafunzioni
- Funzioni finestra
Elenco alfabetico di tutte le funzioni
Di seguito è riportato un elenco alfabetico di tutte le funzioni disponibili nei flussi di dati per mapping.
Un
abs
abs(<value1> : number) => number
Valore assoluto di un numero.
abs(-20) -> 20
abs(10) -> 10
acos
acos(<value1> : number) => double
Calcola il valore della funzione inversa del coseno.
acos(1) -> 0.0
add
add(<value1> : any, <value2> : any) => any
Aggiunge una coppia di stringhe o numeri. Aggiunge una data a molti giorni. Aggiunge una durata a un timestamp. Aggiunge una matrice di tipo simile a un'altra. Uguale all'operatore +.
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
Aggiunge giorni a una data o a un timestamp. Uguale all'operatore + per la data.
addDays(toDate('2016-08-08'), 1) -> toDate('2016-08-09')
addMonths
addMonths(<date/timestamp> : datetime, <months to add> : integral, [<value3> : string]) => datetime
Aggiunge mesi a una data o a un timestamp. Facoltativamente, è possibile passare un fuso orario.
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
Operatore AND logico. Uguale a &&.
and(true, false) -> false
true && false -> false
approxDistinctCount
approxDistinctCount(<value1> : any, [ <value2> : double ]) => long
Ottiene il conteggio aggregato approssimativo dei valori distinti per una colonna. Il secondo parametro facoltativo consente di controllare l'errore di stima.
approxDistinctCount(ProductID, .05) => long
array
array([<value1> : any], ...) => array
Crea una matrice di elementi. Tutti gli elementi devono essere dello stesso tipo. Se non viene specificato alcun elemento, il valore predefinito è una matrice di stringhe vuota. Uguale a un operatore di creazione [].
array('Seattle', 'Washington')
['Seattle', 'Washington']
['Seattle', 'Washington'][1]
'Washington'
ascii
ascii(<Input> : string) => number
Restituisce il valore numerico del carattere di input. Se la stringa di input ha più di un carattere, viene restituito il valore numerico del primo carattere
ascii('A') -> 65
ascii('a') -> 97
asin
asin(<value1> : number) => double
Calcola il valore della funzione inversa del seno.
asin(0) -> 0.0
assertErrorMessages
assertErrorMessages() => map
Restituisce una mappa di tutti i messaggi di errore per la riga con l’ID asserzione come chiave.
Esempi
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
Crea una mappa di chiavi/valori. Tutte le chiavi e i valori devono essere dello stesso tipo. Se non viene specificato alcun elemento, per impostazione predefinita viene impostato un mapping del tipo da stringa a stringa. Uguale a un operatore di creazione [ -> ]
. Chiavi e valori devono alternarsi tra loro.
associate('fruit', 'apple', 'vegetable', 'carrot' )=> ['fruit' -> 'apple', 'vegetable' -> 'carrot']
at
at(<value1> : array/map, <value2> : integer/key type) => array
Trova l'elemento in corrispondenza dell’indice di matrice. L'indice è in base 1. L'indice fuori intervallo restituisce un valore Null. Trova un valore in una mappa in base a una chiave. Se la chiave non viene trovata, restituisce Null.
at(['apples', 'pears'], 1) => 'apples'
at(['fruit' -> 'apples', 'vegetable' -> 'carrot'], 'fruit') => 'apples'
atan
atan(<value1> : number) => double
Calcola il valore della tangente inversa.
atan(0) -> 0.0
atan2
atan2(<value1> : number, <value2> : number) => double
Restituisce l'angolo in radianti, tra l'asse x positivo di un piano e il punto specificato dalle coordinate.
atan2(0, 0) -> 0.0
avg
avg(<value1> : number) => number
Ottiene la media dei valori di una colonna.
avg(sales)
avgIf
avgIf(<value1> : boolean, <value2> : number) => number
In base a un criterio, ottiene la media dei valori di una colonna.
avgIf(region == 'West', sales)
G
between
between(<value1> : any, <value2> : any, <value3> : any) => boolean
Controlla se il primo valore è compreso tra altri due valori in modo inclusivo. È possibile confrontare valori numerici, di stringa e di data/ora
between(10, 5, 24)
true
between(currentDate(), currentDate() + 10, currentDate() + 20)
false
bitwiseAnd
bitwiseAnd(<value1> : integral, <value2> : integral) => integral
Operatore bitwise AND bit a bit tra tipi integrali. Uguale all'operatore &
bitwiseAnd(0xf4, 0xef)
0xe4
(0xf4 & 0xef)
0xe4
bitwiseOr
bitwiseOr(<value1> : integral, <value2> : integral) => integral
Operatore bitwise OR bit a bit tra tipi integrali. Uguale all'operatore |
bitwiseOr(0xf4, 0xef)
0xff
(0xf4 | 0xef)
0xff
bitwiseXor
bitwiseXor(<value1> : any, <value2> : any) => any
Operatore bitwise OR bit a bit tra tipi integrali. Uguale all'operatore |
bitwiseXor(0xf4, 0xef)
0x1b
(0xf4 ^ 0xef)
0x1b
(true ^ false)
true
(true ^ true)
false
blake2b
blake2b(<value1> : integer, <value2> : any, ...) => string
Calcola il digest Blake2 di un set di colonne di diversi tipi di dati primitivi, data una lunghezza in bit che può corrispondere solo a valori multipli di 8 compresi tra 8 e 512. Può essere usato per calcolare un'impronta digitale per una riga
blake2b(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
'c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d'
blake2bBinary
blake2bBinary(<value1> : integer, <value2> : any, ...) => binary
Calcola il digest Blake2 di un set di colonne di diversi tipi di dati primitivi, data una lunghezza in bit che può corrispondere solo a valori multipli di 8 compresi tra 8 e 512. Può essere usato per calcolare un'impronta digitale per una riga
blake2bBinary(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
unHex('c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d')
byItem
byItem(<parent column> : any, <column name> : string) => any
Trovare un elemento secondario all'interno di una struttura o di una matrice di struttura. Se sono presenti più corrispondenze, restituisce la prima corrispondenza. Se non viene trovata nessuna corrispondenza, restituisce un valore NULL. Il valore restituito deve essere convertito in base al tipo secondo una delle funzioni di conversione del tipo (? date, ? string ...). Riportare solo i nomi di colonna noti in fase di progettazione in base al relativo nome. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni di parametro.
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
Seleziona un valore di colonna nel flusso in base al nome. È possibile passare un nome di flusso facoltativo come secondo argomento. Se sono presenti più corrispondenze, restituisce la prima corrispondenza. Se non viene trovata nessuna corrispondenza, restituisce un valore NULL. Il valore restituito deve essere convertito in base al tipo secondo una delle funzioni di conversione del tipo (TO_DATE, TO_STRING ...). Riportare solo i nomi di colonna noti in fase di progettazione in base al relativo nome. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni di parametro.
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
Selezionare una matrice di colonne nel flusso in base al nome. È possibile passare un nome di flusso facoltativo come secondo argomento. Se sono presenti più corrispondenze, restituisce la prima corrispondenza. Se non sono presenti corrispondenze per una colonna, l'intero output è un valore NULL. Il valore restituito richiede una delle funzioni di conversione del tipo (toDate, toString ...). Riportare solo i nomi di colonna noti in fase di progettazione in base al relativo nome. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni di parametro.
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
Seleziona un valore di colonna nel flusso di origine in base al nome. Il secondo argomento corrisponde al nome del flusso di origine. Se sono presenti più corrispondenze, restituisce la prima corrispondenza. Se non viene trovata nessuna corrispondenza, restituisce un valore NULL. Il valore restituito deve essere convertito in base al tipo secondo una delle funzioni di conversione del tipo (TO_DATE, TO_STRING ...). Riportare solo i nomi di colonna noti in fase di progettazione in base al relativo nome. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni di parametro.
toString(byOrigin('ancestor', 'ancestorStream'))
byOrigins
byOrigins(<column names> : array, [<origin stream name> : string]) => any
Seleziona una matrice di colonne nel flusso in base al nome. Il secondo argomento corrisponde al flusso da cui ha avuto origine. Se sono presenti più corrispondenze, restituisce la prima corrispondenza. Se non viene trovata nessuna corrispondenza, restituisce un valore NULL. Il valore restituito deve essere convertito in base al tipo secondo una delle funzioni di conversione del tipo (TO_DATE, TO_STRING ...). Riportare solo i nomi di colonna noti in fase di progettazione in base al relativo nome. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni di parametro.
toString(byOrigins(['ancestor1', 'ancestor2'], 'ancestorStream'))
byPath
byPath(<value1> : string, [<streamName> : string]) => any
Trova un percorso gerarchico nel flusso in base al nome. È possibile passare un nome di flusso facoltativo come secondo argomento. Se non viene trovato alcun percorso di questo tipo, restituisce Null. I nomi o i percorsi delle colonne noti in fase di progettazione devono essere riportati solo in base al relativo nome o percorso di notazione col punto. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni di parametro.
byPath('grandpa.parent.child') => column
byPosition
byPosition(<position> : integer) => any
Seleziona un valore di colonna in base alla relativa posizione (basata su 1) nel flusso. Se la posizione non è compresa nell'intervallo, restituisce un valore NULL. Il valore restituito deve essere convertito in base al tipo secondo una delle funzioni di conversione del tipo (TO_DATE, TO_STRING ...). Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni di parametro.
toString(byPosition(1))
toDecimal(byPosition(2), 10, 2)
toBoolean(byName(4))
toString(byName($colName))
toString(byPosition(1234))
A
case
case(<condition> : boolean, <true_expression> : any, <false_expression> : any, ...) => any
In base alle condizioni alternative, applica un valore o l'altro. Se il numero di input è pari, l'altro valore è NULL per impostazione predefinita in base all'ultima condizione.
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
Calcola la radice cubica di un numero.
cbrt(8) -> 2.0
ceil
ceil(<value1> : number) => number
Restituisce l’intero più piccolo non inferiore al numero.
ceil(-0.1) -> 0
char
char(<Input> : number) => string
Restituisce il carattere ASCII rappresentato dal numero di input. Se il numero è maggiore di 256, il risultato è equivalente a char (numero % 256)
char(65) -> 'A'
char(97) -> 'a'
coalesce
coalesce(<value1> : any, ...) => any
Restituisce il primo valore diverso da NULL da un set di input. Tutti gli input devono essere dello stesso tipo.
coalesce(10, 20) -> 10
coalesce(toString(null), toString(null), 'dumbo', 'bo', 'go') -> 'dumbo'
collect
collect(<value1> : any) => array
Raccoglie tutti i valori dell'espressione nel gruppo aggregato in una matrice. Durante questo processo è possibile raccogliere e trasformare le strutture in strutture alternative. Il numero di elementi è uguale al numero di righe nel gruppo e può contenere valori NULL. Il numero di elementi raccolti deve essere limitato.
collect(salesPerson)
collect(firstName + lastName))
collect(@(name = salesPerson, sales = salesAmount) )
collectUnique
collectUnique(<value1> : any) => array
Raccoglie tutti i valori dell'espressione nel gruppo aggregato in una matrice unità. Durante questo processo è possibile raccogliere e trasformare le strutture in strutture alternative. Il numero di elementi è uguale al numero di righe nel gruppo e può contenere valori NULL. Il numero di elementi raccolti deve essere limitato.
collect(salesPerson)
collect(firstName + lastName))
collect(@(name = salesPerson, sales = salesAmount) )
columnNames
columnNames(<value1>
columnNames( : stringa, i><value1> : booleano) => matrice
Ottiene i nomi di tutte le colonne di output per un flusso. È possibile passare un nome di flusso facoltativo come primo argomento. Anche il secondo argomento è facoltativo, con false come valore predefinito. Se si imposta il secondo argomento su true()
, Data Factory restituisce solo le etichette di colonna che vengono spostate tramite spostamento schema.
columnNames()
columnNames('DeriveStream')
columnNames('DeriveStream', true())
columnNames('', true())
columns
columns([<stream name> : string]) => any
Ottiene i valori di tutte le colonne di output per un flusso. È possibile passare un nome di flusso facoltativo come secondo argomento.
columns()
columns('DeriveStream')
compare
compare(<value1> : any, <value2> : any) => integer
Confronta due valori dello stesso tipo. Restituisce un intero negativo se value1 < value2, 0 se value1 == value2, un valore positivo se value1 > value2.
(compare(12, 24) < 1) -> true
(compare('dumbo', 'dum') > 0) -> true
concat
concat(<this> : string, <that> : string, ...) => string
Concatena un numero variabile di stringhe. Uguale all'operatore + con le stringhe.
concat('dataflow', 'is', 'awesome') -> 'dataflowisawesome'
'dataflow' + 'is' + 'awesome' -> 'dataflowisawesome'
isNull('sql' + null) -> true
concatWS
concatWS(<separator> : string, <this> : string, <that> : string, ...) => string
Concatena un numero variabile di stringhe con un separatore. Il primo parametro è il separatore.
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
Restituisce true se un elemento nella matrice fornita restituisce true nel predicato fornito. Contains prevede un riferimento a un elemento nella funzione predicato come #item.
contains([1, 2, 3, 4], #item == 3) -> true
contains([1, 2, 3, 4], #item > 5) -> false
cos
cos(<value1> : number) => double
Calcola il valore del coseno.
cos(10) -> -0.8390715290764524
cosh
cosh(<value1> : number) => double
Calcola il coseno iperbolico di un valore.
cosh(0) -> 1.0
count
count([<value1> : any]) => long
Ottiene il conteggio aggregato dei valori. Se vengono specificate una o più colonne facoltative, ignora i valori NULL nel conteggio.
count(custId)
count(custId, custName)
count()
count(iif(isNull(custId), 1, NULL))
countAll
countAll([<value1> : any]) => long
Ottiene il conteggio aggregato dei valori, inclusi i valori Null.
countAll(custId)
countAll()
countDistinct
countDistinct(<value1> : any, [<value2> : any], ...) => long
Ottiene il conteggio aggregato dei valori distinti di un set di colonne.
countDistinct(custId, custName)
countAllDistinct
countAllDistinct(<value1> : any, [<value2> : any], ...) => long
Ottiene il conteggio aggregato dei valori distinti di un set di colonne, inclusi i valori Null.
countAllDistinct(custId, custName)
countIf
countIf(<value1> : boolean, [<value2> : any]) => long
In base a un criterio, ottiene il conteggio aggregato dei valori. Se viene specificata la colonna facoltativa, ignora i valori NULL nel conteggio.
countIf(state == 'CA' && commission < 10000, name)
covariancePopulation
covariancePopulation(<value1> : number, <value2> : number) => double
Ottiene la covarianza della popolazione tra due colonne.
covariancePopulation(sales, profit)
covariancePopulationIf
covariancePopulationIf(<value1> : boolean, <value2> : number, <value3> : number) => double
In base a un criterio, ottiene la covarianza della popolazione di due colonne.
covariancePopulationIf(region == 'West', sales)
covarianceSample
covarianceSample(<value1> : number, <value2> : number) => double
Ottiene la covarianza campionaria di due colonne.
covarianceSample(sales, profit)
covarianceSampleIf
covarianceSampleIf(<value1> : boolean, <value2> : number, <value3> : number) => double
In base a un criterio, ottiene la covarianza campionaria di due colonne.
covarianceSampleIf(region == 'West', sales, profit)
crc32
crc32(<value1> : any, ...) => long
Calcola l'hash CRC32 di un set di colonne di diversi tipi di dati primitivi, data una lunghezza in bit che può avere solo i valori 0(256), 224, 256, 384 e 512. Può essere usato per calcolare un'impronta digitale per una riga.
crc32(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 3630253689L
cumeDist
cumeDist() => integer
La funzione CumeDist calcola la posizione di un valore rispetto a tutti i valori nella partizione. Il risultato è il numero di righe precedenti o uguali alla riga corrente nell'ordinamento della partizione diviso per il numero totale di righe nella partizione di finestra. Tutti i valori di parità nell'ordinamento restituiscono la stessa posizione.
cumeDist()
currentDate
currentDate([<value1> : string]) => date
Ottiene la data corrente quando viene avviata l'esecuzione del processo. È possibile passare un fuso orario facoltativo nel formato 'GMT', 'PST', 'UTC', 'America/Cayman'. Per impostazione predefinita, viene usato il fuso orario locale del data center/area della data factory. Per i formati disponibili, vedere la classe Java SimpleDateFormat
. 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
Ottiene il timestamp corrente quando viene avviata l'esecuzione del processo con il fuso orario locale.
currentTimestamp() == toTimestamp('2250-12-31 12:12:12') -> false
currentUTC
currentUTC([<value1> : string]) => timestamp
Ottiene il timestamp corrente come ora UTC. Se si vuole che l'ora corrente venga interpretata in un fuso orario diverso da quello del cluster, è possibile fornire un fuso orario facoltativo nel formato "GMT", "PST", "UTC", "America/Cayman". L'impostazione predefinita è il fuso orario corrente. Per i formati disponibili, vedere la classe Java SimpleDateFormat
. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html. Per convertire l'ora UTC in un fuso orario diverso, usare 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
Ottiene il giorno del mese in base a una data specificata.
dayOfMonth(toDate('2018-06-08')) -> 8
dayOfWeek
dayOfWeek(<value1> : datetime) => integer
Ottiene il giorno della settimana in base a una data specificata. 1 - Domenica, 2 - Lunedì ... , 7 - Sabato.
dayOfWeek(toDate('2018-06-08')) -> 6
dayOfYear
dayOfYear(<value1> : datetime) => integer
Ottiene il giorno dell'anno in base a una data specificata.
dayOfYear(toDate('2016-04-09')) -> 100
days
days(<value1> : integer) => long
Durata in millisecondi per il numero di giorni.
days(2) -> 172800000L
decode
decode(<Input> : any, <Charset> : string) => binary
Decodifica i dati di input codificati in una stringa in base al set di caratteri specificato. È possibile usare un secondo argomento (facoltativo) per specificare il set di caratteri da usare : 'US-ASCII', 'ISO-8859-1', 'UTF-8' (impostazione predefinita), 'UTF-16BE', 'UTF-16LE', 'UTF-16'
decode(array(toByte(97),toByte(98),toByte(99)), 'US-ASCII') -> abc
degrees
degrees(<value1> : number) => double
Converte i radianti in gradi.
degrees(3.141592653589793) -> 180
denseRank
denseRank() => integer
Calcola la classificazione di un valore in un gruppo di valori specificato nella clausola ORDER BY di una finestra. Come risultato si ha uno più il numero di righe precedenti o uguali alla riga corrente nell'ordinamento della partizione. I valori non producono spazi nella sequenza. Dense Rank può essere eseguita anche quando i dati non sono ordinati e cerca eventuali variazioni dei valori.
denseRank()
distinct
distinct(<value1> : array) => array
Restituisce un set di elementi distinti da una matrice.
distinct([10, 20, 30, 10]) => [10, 20, 30]
divide
divide(<value1> : any, <value2> : any) => any
Divide coppie di numeri. Uguale all'operatore /
.
divide(20, 10) -> 2
20 / 10 -> 2
dropLeft
dropLeft(<value1> : string, <value2> : integer) => string
Rimuove lo stesso numero di caratteri dalla parte sinistra della stringa. Se l'eliminazione richiesta supera la lunghezza della stringa, viene restituita una stringa vuota.
- dropLeft('bojjus', 2) => 'jjus'
- dropLeft('cake', 10) => ''
dropRight
dropRight(<value1> : string, <value2> : integer) => string
Rimuove lo stesso numero di caratteri dalla parte destra della stringa. Se l'eliminazione richiesta supera la lunghezza della stringa, viene restituita una stringa vuota.
- dropRight('bojjus', 2) => 'bojj'
- dropRight('cake', 10) => ''
E
encode
encode(<Input> : string, <Charset> : string) => binary
Codifica i dati della stringa di input in file binari in base a un set di caratteri. È possibile usare un secondo argomento (facoltativo) per specificare il set di caratteri da usare : 'US-ASCII', 'ISO-8859-1', 'UTF-8' (impostazione predefinita), '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
Controlla se la stringa termina con la stringa specificata.
endsWith('dumbo', 'mbo') -> true
equals
equals(<value1> : any, <value2> : any) => boolean
Operatore equals di confronto. Uguale all'operatore ==.
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
Operatore equals di confronto senza distinzione tra maiuscole e minuscole. Uguale all'operatore <=>.
'abc'<=>'Abc' -> true
equalsIgnoreCase('abc', 'Abc') -> true
escape
escape(<string_to_escape> : string, <format> : string) => string
Esegue l'escape di una stringa in base a un formato. I valori letterali per il formato accettabili sono ''json'', ''xml'', ''ecmascript'', ''html'' e ''java''.
except
except(<value1> : array, <value2> : array) => array
Restituisce un set di differenze di una matrice da un'altra eliminazione di duplicati.
except([10, 20, 30], [20, 40]) => [10, 30]
expr
expr(<expr> : string) => any
Restituisce un'espressione da una stringa. Equivale a scrivere questa espressione in forma non letterale. Può essere usato per passare i parametri come rappresentazioni di stringa.
- expr('price * discount') => tutti
F
factorial
factorial(<value1> : number) => long
Calcola il fattoriale di un numero.
factorial(5) -> 120
false
false() => boolean
Restituisce sempre un valore false. Usare la funzione syntax(false())
se è presente una colonna denominata ''false''.
(10 + 20 > 30) -> false
(10 + 20 > 30) -> false()
filter
filter(<value1> : array, <value2> : unaryfunction) => array
Filtra dalla matrice gli elementi che non soddisfano il predicato specificato. Il filtro prevede un riferimento a un elemento nella funzione predicato come #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
Trovare il primo elemento di una matrice che soddisfa la condizione. Richiede una funzione di filtro in cui è possibile indirizzare l'elemento nella matrice come #item. Per le mappe annidate in modo approfondito, è possibile fare riferimento alle mappe dell’elemento padre usando la notazione #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
Ottiene il primo valore di un gruppo di colonne. Se il secondo parametro ignoreNulls viene omesso, Data Factory presuppone false.
first(sales)
first(sales, false)
flatten
flatten(<array> : array, <value2> : array ..., <value2> : boolean) => array
Appiattisce la matrice o le matrici in una singola matrice. Le matrici di elementi atomici vengono restituite invariate. L'ultimo argomento è facoltativo e, per impostazione predefinita, impostato su false, in modo da appiattire ricorsivamente più di un livello di profondità.
flatten([['bojjus', 'girl'], ['gunchus', 'boy']]) => ['bojjus', 'girl', 'gunchus', 'boy']
flatten([[['bojjus', 'gunchus']]] , true) => ['bojjus', 'gunchus']
floor
floor(<value1> : number) => number
Restituisce l'intero più grande non superiore al numero.
floor(-0.1) -> -1
fromBase64
fromBase64(<value1> : string, <encoding type> : string) => string
Decodifica la stringa codificata in base64 specificata. Facoltativamente, è possibile passare il tipo di codifica.
fromBase64('Z3VuY2h1cw==') -> 'gunchus'
fromBase64('SGVsbG8gV29ybGQ=', 'Windows-1252') -> 'Hello World'
fromUTC
fromUTC(<value1> : timestamp, [<value2> : string]) => timestamp
Converte il timestamp da UTC. È possibile fornire un fuso orario facoltativo nel formato "GMT", "PST", "UTC", "America/Cayman". L'impostazione predefinita è il fuso orario corrente. Per i formati disponibili, vedere la classe Java SimpleDateFormat
. 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
Operatore greater di confronto. Uguale all'operatore >.
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
Operatore greater than o equal di confronto. Uguale all'operatore >=.
greaterOrEqual(12, 12) -> true
('dumbo' >= 'dum') -> true
greatest
greatest(<value1> : any, ...) => any
Restituisce il valore più grande dell'elenco di valori come input ignorando i valori NULL. Restituisce Null se tutti gli input sono 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
Verifica la presenza di un valore di colonna nel flusso in base al nome. È possibile passare un nome di flusso facoltativo come secondo argomento. Riportare solo i nomi di colonna noti in fase di progettazione in base al relativo nome. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni di parametro.
hasColumn('parent')
hasError
hasError([<value1> : string]) => boolean
Controlla se l'asset con l'ID specificato è contrassegnato come errore.
Esempi
hasError('assert1')
hasError('assert2')
hasPath
hasPath(<value1> : string, [<streamName> : string]) => boolean
Controlla se un determinato percorso gerarchico esiste in base al nome nel flusso. È possibile passare un nome di flusso facoltativo come secondo argomento. I nomi o i percorsi delle colonne noti in fase di progettazione devono essere riportati solo in base al relativo nome o percorso di notazione col punto. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni di parametro.
hasPath('grandpa.parent.child') => boolean
hex
hex(<value1>: binary) => string
Restituisce una rappresentazione di stringa esadecimale di un valore binario
hex(toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])) -> '1fadbe'
hour
hour(<value1> : timestamp, [<value2> : string]) => integer
Ottiene il valore dell'ora di un timestamp. È possibile passare un fuso orario facoltativo nel formato 'GMT', 'PST', 'UTC', 'America/Cayman'. Per impostazione predefinita viene usato il fuso orario locale. Per i formati disponibili, vedere la classe Java SimpleDateFormat
. 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
Durata in millisecondi per il numero di ore.
hours(2) -> 7200000L
I
iif
iif(<condition> : boolean, <true_expression> : any, [<false_expression> : any]) => any
In base alla condizione specifica, applica un valore o l'altro. Se l'altro non è specificato, il valore viene considerato NULL. Entrambi i valori devono essere compatibili (valore numerico, stringa...).
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
Dati due o più input, restituisce il primo elemento non NULL. Questa funzione equivale a unire.
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
Verifica la presenza di un elemento nella matrice.
in([10, 20, 30], 10) -> true
in(['good', 'kid'], 'bad') -> false
initCap
initCap(<value1> : string) => string
Converte la prima lettera di ogni parola in lettere maiuscole. Le parole vengono identificate come separate in base agli spazi vuoti.
initCap('cool iceCREAM') -> 'Cool Icecream'
instr
instr(<string> : string, <substring to find> : string) => integer
Trova la posizione (in base 1) della sottostringa all'interno di una stringa. Se non trovata, restituisce 0.
instr('dumbo', 'mbo') -> 3
instr('microsoft', 'o') -> 5
instr('good', 'bad') -> 0
intersect
intersect(<value1> : array, <value2> : array) => array
Restituisce un set di intersezione di elementi distinti da due matrici.
intersect([10, 20, 30], [20, 40]) => [20]
isBitSet
isBitSet (<value1> : array, <value2>:integer ) => boolean
Controlla se in questo set di bit è impostata una posizione di bit
isBitSet(toBitSet([10, 32, 98]), 10) => true
isBoolean
isBoolean(<value1>: string) => boolean
Controlla se il valore di stringa è un valore booleano in base alle regole di toBoolean()
isBoolean('true') -> true
isBoolean('no') -> true
isBoolean('microsoft') -> false
isByte
isByte(<value1> : string) => boolean
Controlla se il valore di stringa è un valore byte dato un formato facoltativo in base alle regole di toByte()
isByte('123') -> true
isByte('chocolate') -> false
isDate
isDate (<value1> : string, [<format>: string]) => boolean
Controlla se la stringa della data di input è una data usando un formato di data di input facoltativo. Fare riferimento a SimpleDateFormat di Java per i formati disponibili. Se il formato della data di input viene omesso, il formato predefinito è yyyy-[M]M-[d]d
. I formati accettati sono [ 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
Controlla se il valore di stringa è un valore decimale dato un formato facoltativo in base alle regole di toDecimal()
isDecimal('123.45') -> true
isDecimal('12/12/2000') -> false
isDelete
isDelete([<value1> : integer]) => boolean
Controlla se la riga è contrassegnata per l'eliminazione. Per le trasformazioni che accettano più di un flusso di input è possibile fornire l'indice del flusso (in base 1). L'indice del flusso deve essere 1 o 2 e il valore predefinito è 1.
isDelete()
isDelete(1)
isDistinct
isDistinct(<value1> : any , <value1> : any) => boolean
Trova se una colonna o un set di colonne è distinto. Non conta Null come valore distinto
isDistinct(custId, custName) => boolean
isDouble
isDouble (<value1> : string, [<format>: string]) => boolean
Controlla se il valore di stringa è un valore double dato un formato facoltativo in base alle regole di toDouble()
isDouble('123') -> true
isDouble('$123.45' -> '$###.00') -> true
isDouble('icecream') -> false
isError
isError([<value1> : integer]) => boolean
Controlla se la riga è contrassegnata come errore. Per le trasformazioni che accettano più di un flusso di input è possibile fornire l'indice del flusso (in base 1). L'indice del flusso deve essere 1 o 2 e il valore predefinito è 1.
isError()
isError(1)
isFloat
isFloat (<value1> : string, [<format>: string]) => boolean
Controlla se il valore di stringa è un valore float dato un formato facoltativo in base alle regole di toFloat()
isFloat('123') -> true
isFloat('$123.45' -> '$###.00') -> true
isFloat('icecream') -> false
isIgnore
isIgnore([<value1> : integer]) => boolean
Controlla se la riga è contrassegnata per essere ignorata. Per le trasformazioni che accettano più di un flusso di input è possibile fornire l'indice del flusso (in base 1). L'indice del flusso deve essere 1 o 2 e il valore predefinito è 1.
isIgnore()
isIgnore(1)
isInsert
isInsert([<value1> : integer]) => boolean
Controlla se la riga è contrassegnata per l'inserimento. Per le trasformazioni che accettano più di un flusso di input è possibile fornire l'indice del flusso (in base 1). L'indice del flusso deve essere 1 o 2 e il valore predefinito è 1.
isInsert()
isInsert(1)
isInteger
isInteger (<value1> : string, [<format>: string]) => boolean
Controlla se il valore di stringa è un valore integer dato un formato facoltativo in base alle regole di toInteger()
isInteger('123') -> true
isInteger('$123' -> '$###') -> true
isInteger('microsoft') -> false
isLong
isLong (<value1> : string, [<format>: string]) => boolean
Controlla se il valore di stringa è un valore long dato un formato facoltativo in base alle regole di toLong()
isLong('123') -> true
isLong('$123' -> '$###') -> true
isLong('gunchus') -> false
isMatch
isMatch([<value1> : integer]) => boolean
Controlla se per la riga viene trovata una corrispondenza. Per le trasformazioni che accettano più di un flusso di input è possibile fornire l'indice del flusso (in base 1). L'indice del flusso deve essere 1 o 2 e il valore predefinito è 1.
isMatch()
isMatch(1)
isNan
isNan (<value1> : integral) => boolean
Controllare se questo non è un numero.
isNan(10.2) => false
isNull
isNull(<value1> : any) => boolean
Controlla se il valore è NULL.
isNull(NULL()) -> true
isNull('') -> false
isShort
isShort (<value1> : string, [<format>: string]) => boolean
Controlla se il valore di stringa è un valore short dato un formato facoltativo in base alle regole di toShort()
isShort('123') -> true
isShort('$123' -> '$###') -> true
isShort('microsoft') -> false
isTimestamp
isTimestamp (<value1> : string, [<format>: string]) => boolean
Controlla se la stringa della data di input è un timestamp usando un formato di timestamp di input facoltativo. Fare riferimento a SimpleDateFormat di Java per i formati disponibili. Se il timestamp viene omesso, viene usato il modello predefinito yyyy-[M]M-[d]d hh:mm:ss[.f...]
. È possibile passare un fuso orario facoltativo nel formato 'GMT', 'PST', 'UTC', 'America/Cayman'. Il timestamp supporta un'accuratezza fino al millisecondo con un valore pari a 999. Fare riferimento a SimpleDateFormat di Java per i formati disponibili.
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
Controlla se la riga è contrassegnata per l'aggiornamento. Per le trasformazioni che accettano più di un flusso di input è possibile fornire l'indice del flusso (in base 1). L'indice del flusso deve essere 1 o 2 e il valore predefinito è 1.
isUpdate()
isUpdate(1)
isUpsert
isUpsert([<value1> : integer]) => boolean
Controlla se la riga è contrassegnata per l'inserimento. Per le trasformazioni che accettano più di un flusso di input è possibile fornire l'indice del flusso (in base 1). L'indice del flusso deve essere 1 o 2 e il valore predefinito è 1.
isUpsert()
isUpsert(1)
J
jaroWinkler
jaroWinkler(<value1> : string, <value2> : string) => double
Ottiene la distanza JaroWinkler tra due stringhe.
jaroWinkler('frog', 'frog') => 1.0
K
keyValues
keyValues(<value1> : array, <value2> : array) => map
Crea una mappa di chiavi/valori. Il primo parametro è una matrice di chiavi e il secondo è la matrice di valori. Entrambe le matrici devono avere la stessa lunghezza.
keyValues(['bojjus', 'appa'], ['gunchus', 'ammi']) => ['bojjus' -> 'gunchus', 'appa' -> 'ammi']
kurtosis
kurtosis(<value1> : number) => double
Ottiene la curtosi di una colonna.
kurtosis(sales)
kurtosisIf
kurtosisIf(<value1> : boolean, <value2> : number) => double
In base a un criterio, ottiene la curtosi di una colonna.
kurtosisIf(region == 'West', sales)
L
lag
lag(<value> : any, [<number of rows to look before> : number], [<default value> : any]) => any
Ottiene il valore del primo parametro valutato in n righe prima della riga corrente. Il secondo parametro è il numero di righe da controllare e il valore predefinito è 1. Se il numero di righe è limitato, viene restituito un valore Null, a meno che non sia specificato un valore predefinito.
lag(amount, 2)
lag(amount, 2000, 100)
last
last(<value1> : any, [<value2> : boolean]) => any
Ottiene l'ultimo valore di un gruppo di colonne. Se il secondo parametro ignoreNulls viene omesso, si presuppone che sia false.
last(sales)
last(sales, false)
lastDayOfMonth
lastDayOfMonth(<value1> : datetime) => date
Ottiene l'ultimo giorno del mese in base a una data specificata.
lastDayOfMonth(toDate('2009-01-12')) -> toDate('2009-01-31')
lead
lead(<value> : any, [<number of rows to look after> : number], [<default value> : any]) => any
Ottiene il valore del primo parametro valutato in n righe dopo la riga corrente. Il secondo parametro è il numero di righe da controllare e il valore predefinito è 1. Se il numero di righe è limitato, viene restituito un valore Null, a meno che non sia specificato un valore predefinito.
lead(amount, 2)
lead(amount, 2000, 100)
least
least(<value1> : any, ...) => any
Operatore lesser than o equal di confronto. Uguale all'operatore <=.
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
Estrae una sottostringa iniziale in corrispondenza dell'indice 1 con il numero di caratteri specificato. Uguale a SUBSTRING(str, 1, n).
left('bojjus', 2) -> 'bo'
left('bojjus', 20) -> 'bojjus'
length
length(<value1> : string) => integer
Restituisce la lunghezza della stringa.
length('dumbo') -> 5
lesser
lesser(<value1> : any, <value2> : any) => boolean
Operatore less di confronto. Uguale all'operatore <.
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
Operatore lesser than o equal di confronto. Uguale all'operatore <=.
lesserOrEqual(12, 12) -> true
('dumbo' <= 'dum') -> false
levenshtein
levenshtein(<from string> : string, <to string> : string) => integer
Ottiene la distanza di Levenshtein tra due stringhe.
levenshtein('boys', 'girls') -> 4
like
like(<string> : string, <pattern match> : string) => boolean
Il modello è una stringa con corrispondenza letterale. Le eccezioni sono i simboli speciali seguenti: _ corrisponde a un carattere qualsiasi nell'input (simile a. nelle espressioni regolari posix
) % corrisponde a zero o più caratteri nell'input (simile a .*
nelle espressioni regolari posix
).
Il carattere di escape è ". Se un carattere di escape precede un simbolo speciale o un altro carattere di escape, per il carattere successivo viene stabilita una corrispondenza letterale. Non è possibile aggiungere caratteri di escape a qualsiasi altro carattere.
like('icecream', 'ice%') -> true
locate
locate(<substring to find> : string, <string> : string, [<from index - 1-based> : integral]) => integer
Trova la posizione (in base 1) della sottostringa all'interno di una stringa a partire da una determinata posizione. Se la posizione viene omessa, è considerata dall'inizio della stringa. Se non trovata, restituisce 0.
locate('mbo', 'dumbo') -> 3
locate('o', 'microsoft', 6) -> 7
locate('bad', 'good') -> 0
log
log(<value1> : number, [<value2> : number]) => double
Calcola il valore del logaritmo. È possibile specificare una base facoltativa se viene usato un numero di Eulero.
log(100, 10) -> 2
log10
log10(<value1> : number) => double
Calcola il valore del logaritmo in base 10.
log10(100) -> 2
lookup
lookup(key, key2, ...) => complex[]
Cerca la prima riga del sink memorizzato nella cache usando le chiavi specificate che corrispondono a quelle di tale sink.
cacheSink#lookup(movieId)
lower
lower(<value1> : string) => string
Applica il formato minuscolo a tutti i caratteri di una stringa.
lower('GunChus') -> 'gunchus'
lpad
lpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
Riempie a sinistra la stringa in base al riempimento specificato fino a raggiungere una determinata lunghezza. Se la stringa è uguale o superiore alla lunghezza, viene troncata alla lunghezza.
lpad('dumbo', 10, '-') -> '-----dumbo'
lpad('dumbo', 4, '-') -> 'dumb'
ltrim
ltrim(<string to trim> : string, [<trim characters> : string]) => string
Rimuove i caratteri iniziali dal lato sinistro di una stringa. Se il secondo parametro non è specificato, rimuove lo spazio vuoto. In caso contrario, rimuove qualsiasi carattere specificato nel secondo parametro.
ltrim(' dumbo ') -> 'dumbo '
ltrim('!--!du!mbo!', '-!') -> 'du!mbo!'
M
map
map(<value1> : array, <value2> : unaryfunction) => any
Esegue il mapping di ogni elemento della matrice a un nuovo elemento usando l'espressione fornita. Il mapping prevede un riferimento a un elemento nella funzione dell'espressione come #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
Trasforma una mappa associando le chiavi ai nuovi valori. Restituisce una matrice. Accetta una funzione di mapping in cui è possibile indirizzare l'elemento come #key e il valore corrente come #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
Esegue il mapping di una matrice a un'altra matrice di lunghezza uguale o inferiore in modo condizionale. I valori possono provenire da qualsiasi tipo di dato, inclusi gli structTypes. Accetta una funzione di mapping in cui è possibile indirizzare l'elemento nella matrice come #item e l'indice corrente come #index. Per le mappe annidate in modo approfondito, è possibile fare riferimento alle mappe dell’elemento padre usando la notazione #item_[n](#item_1, #index_1...)
.
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
Esegue il mapping di ogni elemento della matrice a un nuovo elemento usando l'espressione fornita. Il mapping prevede un riferimento a un elemento nella funzione dell'espressione come #item e un riferimento all'indice dell'elemento come #index.
mapIndex([1, 2, 3, 4], #item + 2 + #index) -> [4, 6, 8, 10]
mapLoop
mapLoop(<value1> : integer, <value2> : unaryfunction) => any
Esegue un ciclo da 1 alla lunghezza per creare una matrice di tale lunghezza. Accetta una funzione di mapping in cui è possibile indirizzare l'indice nella matrice come #index. Per le mappe annidate in modo approfondito, è possibile fare riferimento alle mappe dell’elemento padre usando la notazione #index_n(#index_1, #index_2...).
mapLoop(3, #index * 10) -> [10, 20, 30]
max
max(<value1> : any) => any
Ottiene il valore massimo di una colonna.
max(sales)
maxIf
maxIf(<value1> : boolean, <value2> : any) => any
In base a un criterio, ottiene il valore massimo di una colonna.
maxIf(region == 'West', sales)
md5
md5(<value1> : any, ...) => string
Calcola il digest MD5 di un set di colonne di diversi tipi di dati primitivi e restituisce una stringa esadecimale a 32 caratteri. Può essere usato per calcolare un'impronta digitale per una riga.
md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '4ce8a880bd621a1ffad0bca905e1bc5a'
mean
mean(<value1> : number) => number
Ottiene la media dei valori di una colonna. Uguale all'operatore AVG.
mean(sales)
meanIf
meanIf(<value1> : boolean, <value2> : number) => number
In base a un criterio, ottiene la media dei valori di una colonna. Uguale all'operatore avglf.
meanIf(region == 'West', sales)
millisecond
millisecond(<value1> : timestamp, [<value2> : string]) => integer
Ottiene il valore dei millisecondi di una data. È possibile passare un fuso orario facoltativo nel formato 'GMT', 'PST', 'UTC', 'America/Cayman'. Per impostazione predefinita viene usato il fuso orario locale. Per i formati disponibili, vedere la classe Java SimpleDateFormat
. 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
Durata in millisecondi per il numero di millisecondi.
milliseconds(2) -> 2L
min
min(<value1> : any) => any
Ottiene il valore minimo di una colonna.
min(sales)
minIf
minIf(<value1> : boolean, <value2> : any) => any
In base a un criterio, ottiene il valore minimo di una colonna.
minIf(region == 'West', sales)
minus
minus(<value1> : any, <value2> : any) => any
Sottrae numeri. Sottrarre il numero di giorni da una data. Sottrarre la durata da un timestamp. Sottrarre due timestamp per ottenere la differenza in millisecondi. Uguale all'operatore -.
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
Ottiene il valore dei minuti di un timestamp. È possibile passare un fuso orario facoltativo nel formato 'GMT', 'PST', 'UTC', 'America/Cayman'. Per impostazione predefinita viene usato il fuso orario locale. Per i formati disponibili, vedere la classe Java SimpleDateFormat
. 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
Durata in millisecondi per il numero di minuti.
minutes(2) -> 120000L
mlookup
mlookup(key, key2, ...) => complex[]
Cerca tutte le righe corrispondenti del sink memorizzato nella cache usando le chiavi specificate che corrispondono a quelle di tale sink.
cacheSink#mlookup(movieId)
mod
mod(<value1> : any, <value2> : any) => any
Calcola il modulo di coppie di numeri. Uguale all'operatore operatore %.
mod(20, 8) -> 4
20 % 8 -> 4
month
month(<value1> : datetime) => integer
Ottiene il valore del mese di una data o di un timestamp.
month(toDate('2012-8-8')) -> 8
monthsBetween
monthsBetween(<from date/timestamp> : datetime, <to date/timestamp> : datetime, [<roundoff> : boolean], [<time zone> : string]) => double
Ottiene il numero di mesi tra due date. È possibile arrotondare il calcolo. È possibile passare un fuso orario facoltativo nel formato 'GMT', 'PST', 'UTC', 'America/Cayman'. Per impostazione predefinita viene usato il fuso orario locale. Per i formati disponibili, vedere la classe Java SimpleDateFormat
. 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
Moltiplica coppie di numeri. Uguale all'operatore *.
multiply(20, 10) -> 200
20 * 10 -> 200
N
negate
negate(<value1> : number) => number
Nega un numero. Trasforma i numeri positivi in negativi e viceversa.
negate(13) -> -13
nextSequence
nextSequence() => long
Restituisce la sequenza univoca successiva. Il numero è consecutivo solo all'interno di una partizione ed è preceduto da partitionId.
nextSequence() == 12313112 -> false
normalize
normalize(<String to normalize> : string) => string
Normalizza il valore della stringa per separare i caratteri Unicode accentati.
regexReplace(normalize('bo²s'), `\p{M}`, '') -> 'boys'
not
not(<value1> : boolean) => boolean
Operatore di negazione logico.
not(true) -> false
not(10 == 20) -> true
notEquals
notEquals(<value1> : any, <value2> : any) => boolean
Operatore not equals di confronto. Uguale all'operatore !=.
12 != 24 -> true
'bojjus' != 'bo' + 'jjus' -> false
nTile
nTile([<value1> : integer]) => integer
La funzione NTile
divide le righe per ogni partizione di finestra in bucket n
compresi tra 1 e un valore massimo di n
. I valori dei bucket si differenzieranno per un massimo di 1. Se il numero di righe nella partizione non può essere diviso equamente in base al numero di bucket, i valori rimanenti vengono distribuiti uno per bucket, a partire dal primo bucket. La funzione NTile
è particolarmente utile per il calcolo di tertiles
, quartili, decili e altre statistiche di riepilogo comuni. La funzione calcola due variabili durante l'inizializzazione: le dimensioni di un bucket regolare, a cui verrà aggiunta una riga in più. Entrambe le variabili si basano sulle dimensioni della partizione corrente. Durante il processo di calcolo, la funzione tiene traccia del numero di righe corrente, del numero di bucket corrente e del numero di righe in corrispondenza del quale il bucket cambierà (bucketThreshold). Quando il numero di righe corrente raggiunge la soglia del bucket, il valore del bucket viene incrementato di uno e la soglia viene aumentata in base alla dimensione del bucket (più un valore aggiuntivo, in caso di riempimento del bucket corrente).
nTile()
nTile(numOfBuckets)
null
null() => null
Restituisce un valore NULL. Usare la funzione syntax(null())
se è presente una colonna denominata ''null''. Qualsiasi operazione usata restituirà un valore 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
Operatore OR logico. Ugual a ||.
or(true, false) -> true
true || false -> true
originColumns
originColumns(<streamName> : string) => any
Ottiene tutte le colonne di output per un flusso di origine in cui sono state create le colonne. Deve essere racchiusa in un'altra funzione.
array(toString(originColumns('source1')))
output
output() => any
Restituisce la prima riga dei risultati del sink della cache
cacheSink#output()
outputs
output() => any
Restituisce l'intero set di righe di output dei risultati del sink della cache
cacheSink#outputs()
P
partitionId
partitionId() => integer
Restituisce l'ID di partizione corrente in cui si trova la riga di input.
partitionId()
pMod
pMod(<value1> : any, <value2> : any) => any
Calcola il modulo positivo di coppie di numeri.
pmod(-20, 8) -> 4
power
power(<value1> : number, <value2> : number) => double
Eleva un numero alla potenza di un altro.
power(10, 2) -> 100
R
radians
radians(<value1> : number) => double
Converte i gradi in radianti
radians(180) => 3.141592653589793
random
random(<value1> : integral) => long
Restituisce un numero casuale dato un valore di inizializzazione facoltativo all'interno di una partizione. Il valore di inizializzazione deve essere un valore fisso e viene usato con partitionId per produrre valori casuali
random(1) == 1 -> false
rank
rank() => integer
Calcola la classificazione di un valore in un gruppo di valori specificato nella clausola ORDER BY di una finestra. Come risultato si ha uno più il numero di righe precedenti o uguali alla riga corrente nell'ordinamento della partizione. I valori produrranno spazi nella sequenza. La funzione rank può essere eseguita anche quando i dati non sono ordinati e cerca eventuali variazioni dei valori.
rank()
reassociate
reassociate(<value1> : map, <value2> : binaryFunction) => map
Trasforma una mappa associando le chiavi ai nuovi valori. Accetta una funzione di mapping in cui è possibile indirizzare l'elemento come #key e il valore corrente come #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
Accumula gli elementi in una matrice. La funzione di riduzione prevede un riferimento a un accumulatore e un elemento nella prima funzione di espressione come #acc e #item e prevede che il valore risultante sia #result da usare nella seconda funzione dell'espressione.
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
Estrae una sottostringa corrispondente per un modello di espressione regolare specificato. L'ultimo parametro identifica il gruppo di corrispondenza e, se omesso, viene usato il valore predefinito 1. Usare <regex>
(apice inverso) per trovare una corrispondenza con una stringa senza caratteri di escape. L'indice 0 restituisce tutte le corrispondenze. Senza gruppi di corrispondenze, l'indice 1 e superiore non restituirà alcun risultato.
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
Verifica se la stringa corrisponde al modello di espressione regolare specificato. Usare <regex>
(apice inverso) per trovare una corrispondenza con una stringa senza caratteri di escape.
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
Sostituisce tutte le occorrenze di un modello di espressione regolare con un'altra sottostringa nella stringa specificata. Usare <regex>
(apice inverso) per trovare una corrispondenza con una stringa senza caratteri di escape.
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
Suddivide una stringa in base a un delimitatore basato su un'espressione regolare e restituisce una matrice di stringhe.
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
Sostituisce tutte le occorrenze di una sottostringa con un'altra sottostringa nella stringa specificata. Se l'ultimo parametro viene omesso, il valore predefinito è una stringa vuota.
replace('doggie dog', 'dog', 'cat') -> 'catgie cat'
replace('doggie dog', 'dog', '') -> 'gie '
replace('doggie dog', 'dog') -> 'gie '
reverse
reverse(<value1> : string) => string
Inverte una stringa.
reverse('gunchus') -> 'suhcnug'
right
right(<string to subset> : string, <number of characters> : integral) => string
Estrae una sottostringa finale con il numero di caratteri specificato. Uguale all'operatore SUBSTRING(str, LENGTH(str) - n, n).
right('bojjus', 2) -> 'us'
right('bojjus', 20) -> 'bojjus'
rlike
rlike(<string> : string, <pattern match> : string) => boolean
Verifica se la stringa corrisponde al modello di espressione regolare specificato.
rlike('200.50', `(\d+).(\d+)`) -> true
rlike('bogus', `M[0-9]+.*`) -> false
round
round(<number> : number, [<scale to round> : number], [<rounding option> : integral]) => double
Arrotonda un numero in base a una scala e a una modalità di arrotondamento facoltative. Se la scala viene omessa, viene usato il valore predefinito 0. Se la modalità di arrotondamento viene omessa, viene usato il valore predefinito ROUND_HALF_UP(5). I valori per l'arrotondamento includono
- ROUND_UP: modalità di arrotondamento per allontanarsi da zero.
- ROUND_DOWN: modalità di arrotondamento per avvicinarsi allo zero.
- ROUND_CEILING: modalità di arrotondamento per avvicinarsi all'infinito positivo. [Uguale a ROUND_UP se l'input è positivo. Se negativo, si comporta come ROUND_DOWN. Ad esempio, -1,1 sarebbe -1,0 con ROUND_CEILING e -2 con ROUND_UP]
- ROUND_FLOOR: modalità di arrotondamento per avvicinarsi all'infinito negativo. [Uguale a ROUND_DOWN se l'input è positivo. Se negativo, si comporta come ROUND_UP]
- ROUND_HALF_UP: modalità di arrotondamento per avvicinarsi al "vicino più prossimo", a meno che entrambi i vicini non siano equidistanti. In tal caso, si tratta della modalità ROUND_UP. [Più comune + impostazione predefinita per il flusso di dati].
- ROUND_HALF_DOWN: modalità di arrotondamento per avvicinarsi al "vicino più prossimo", a meno che entrambi i vicini non siano equidistanti. In tal caso, si tratta della modalità ROUND_DOWN.
- ROUND_HALF_EVEN: modalità di arrotondamento per avvicinarsi al "vicino più prossimo", a meno che entrambi i vicini non siano equidistanti. In tal caso, arrotondare al vicino pari.
- ROUND_UNNECESSARY: modalità di arrotondamento per affermare che l'operazione di arrotondamento genera un risultato esatto. Pertanto, non è necessario alcun arrotondamento.
round(100.123) -> 100.0
round(2.5, 0) -> 3.0
round(5.3999999999999995, 2, 7) -> 5.40
rowNumber
rowNumber() => integer
Assegna una numerazione sequenziale alle righe in una finestra a partire da 1.
rowNumber()
rpad
rpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
Riempie a destra la stringa in base al riempimento specificato fino a raggiungere una determinata lunghezza. Se la stringa è uguale o superiore alla lunghezza, viene troncata in base a tale lunghezza.
rpad('dumbo', 10, '-') -> 'dumbo-----'
rpad('dumbo', 4, '-') -> 'dumb'
rpad('dumbo', 8, '<>') -> 'dumbo<><'
rtrim
rtrim(<string to trim> : string, [<trim characters> : string]) => string
Rimuove i caratteri finali dal lato destro di una stringa. Se il secondo parametro non è specificato, rimuove lo spazio vuoto. In caso contrario, rimuove qualsiasi carattere specificato nel secondo parametro.
rtrim(' dumbo ') -> ' dumbo'
rtrim('!--!du!mbo!', '-!') -> '!--!du!mbo'
S
second
second(<value1> : timestamp, [<value2> : string]) => integer
Ottiene il valore dei secondi di una data. È possibile passare un fuso orario facoltativo nel formato 'GMT', 'PST', 'UTC', 'America/Cayman'. Per impostazione predefinita viene usato il fuso orario locale. Per i formati disponibili, vedere la classe Java SimpleDateFormat
. 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
Durata in millisecondi per il numero di secondi.
seconds(2) -> 2000L
setBitSet
setBitSet (<value1>: array, <value2>:array) => array
Imposta le posizioni di bit in questo set di bit
setBitSet(toBitSet([10, 32]), [98]) => [4294968320L, 17179869184L]
sha1
sha1(<value1> : any, ...) => string
Calcola il digest SHA-1 di un set di colonne di diversi tipi di dati primitivi e restituisce una stringa esadecimale a 40 caratteri. Può essere usato per calcolare un'impronta digitale per una riga.
sha1(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '46d3b478e8ec4e1f3b453ac3d8e59d5854e282bb'
sha2
sha2(<value1> : integer, <value2> : any, ...) => string
Calcola il digest SHA-2 di un set di colonne di diversi tipi di dati primitivi, data una lunghezza in bit che può avere solo i valori 0(256), 224, 256, 384 e 512. Può essere usato per calcolare un'impronta digitale per una riga.
sha2(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 'afe8a553b1761c67d76f8c31ceef7f71b66a1ee6f4e6d3b5478bf68b47d06bd3'
sin
sin(<value1> : number) => double
Calcola il valore del seno.
sin(2) -> 0.9092974268256817
sinh
sinh(<value1> : number) => double
Calcola il valore del seno iperbolico.
sinh(0) -> 0.0
size
size(<value1> : any) => integer
Trova le dimensioni di una matrice o di un tipo di mappa
size(['element1', 'element2']) -> 2
size([1,2,3]) -> 3
skewness
skewness(<value1> : number) => double
Ottiene l’indice di asimmetria di una colonna.
skewness(sales)
skewnessIf
skewnessIf(<value1> : boolean, <value2> : number) => double
In base a un criterio, ottiene l'indice di asimmetria di una colonna.
skewnessIf(region == 'West', sales)
slice
slice(<array to slice> : array, <from 1-based index> : integral, [<number of items> : integral]) => array
Estrae un subset di una matrice da una posizione. La posizione è in base 1. Se la lunghezza viene omessa, per impostazione predefinita viene estratta la parte finale della stringa.
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
Ordina la matrice usando la funzione di predicato fornita. Sort prevede un riferimento a due elementi consecutivi nella funzione dell'espressione come #item1 e #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
Ottiene il codice soundex
per la stringa.
soundex('genius') -> 'G520'
split
split(<string to split> : string, <split characters> : string) => array
Suddivide una stringa in base a un delimitatore e restituisce una matrice di stringhe.
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
Calcola la radice quadrata di un numero.
sqrt(9) -> 3
startsWith
startsWith(<string> : string, <substring to check> : string) => boolean
Controlla se la stringa inizia con la stringa specificata.
startsWith('dumbo', 'du') -> true
stddev
stddev(<value1> : number) => double
Ottiene la deviazione standard di una colonna.
stdDev(sales)
stddevIf
stddevIf(<value1> : boolean, <value2> : number) => double
In base a un criterio, ottiene la deviazione standard di una colonna.
stddevIf(region == 'West', sales)
stddevPopulation
stddevPopulation(<value1> : number) => double
Ottiene la deviazione standard della popolazione di una colonna.
stddevPopulation(sales)
stddevPopulationIf
stddevPopulationIf(<value1> : boolean, <value2> : number) => double
In base a un criterio, ottiene la deviazione standard della popolazione di una colonna.
stddevPopulationIf(region == 'West', sales)
stddevSample
stddevSample(<value1> : number) => double
Ottiene la deviazione standard campionaria di una colonna.
stddevSample(sales)
stddevSampleIf
stddevSampleIf(<value1> : boolean, <value2> : number) => double
In base a un criterio, ottiene la deviazione standard campionaria di una colonna.
stddevSampleIf(region == 'West', sales)
subDays
subDays(<date/timestamp> : datetime, <days to subtract> : integral) => datetime
Sottrae mesi da una data o da un timestamp. Uguale all'operatore - per la data.
subDays(toDate('2016-08-08'), 1) -> toDate('2016-08-07')
subMonths
subMonths(<date/timestamp> : datetime, <months to subtract> : integral) => datetime
Sottrae mesi da una data o da un timestamp.
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
Estrae una sottostringa di una determinata lunghezza da una posizione. La posizione è in base 1. Se la lunghezza viene omessa, per impostazione predefinita viene estratta la parte finale della stringa.
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(<da stringa a sottoinsieme><delimitatore>substringIndex( : stringa, : stringa, <conteggio delle occorrenze del delimitatore> : integrale]) => stringa
Estrae la sottostringa prima del count
delle occorrenze del delimitatore. Se count
è positivo, viene restituito tutto ciò che si trova a sinistra del delimitatore finale (conteggio da sinistra). Se count
è negativo, viene restituito tutto ciò che si trova a destra del delimitatore finale (conteggio da destra).
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
Ottiene la somma aggregata di una colonna numerica.
sum(col)
sumDistinct
sumDistinct(<value1> : number) => number
Ottiene la somma aggregata di valori distinti di una colonna numerica.
sumDistinct(col)
sumDistinctIf
sumDistinctIf(<value1> : boolean, <value2> : number) => number
In base a criteri, ottiene la somma aggregata di una colonna numerica. La condizione può essere basata su qualsiasi colonna.
sumDistinctIf(state == 'CA' && commission < 10000, sales)
sumDistinctIf(true, sales)
sumIf
sumIf(<value1> : boolean, <value2> : number) => number
In base a criteri, ottiene la somma aggregata di una colonna numerica. La condizione può essere basata su qualsiasi colonna.
sumIf(state == 'CA' && commission < 10000, sales)
sumIf(true, sales)
T
tan
tan(<value1> : number) => double
Calcola il valore della tangente.
tan(0) -> 0.0
tanh
tanh(<value1> : number) => double
Calcola il valore della tangente iperbolica.
tanh(0) -> 0.0
toBase64
toBase64(<value1> : string, <encoding type> : string]) => string
Codifica la stringa specificata in base64. Facoltativamente, è possibile passare il tipo di codifica
toBase64('bojjus') -> 'Ym9qanVz'
toBase64('± 25000, € 5.000,- |', 'Windows-1252') -> 'sSAyNTAwMCwggCA1LjAwMCwtIHw='
toBinary
toBinary(<value1> : any) => binary
Converte numeri/dati/timestamp/stringa in una rappresentazione binaria.
toBinary(3) -> [0x11]
toBoolean
toBoolean(<value1> : string) => boolean
Converte un valore ("t", "true", "y", "yes", "1") in true e un valore ("f", "false", "n", "no", "0") in false e in NULL per qualsiasi altro valore.
toBoolean('true') -> true
toBoolean('n') -> false
isNull(toBoolean('truthy')) -> true
toByte
toByte(<value> : any, [<format> : string], [<locale> : string]) => byte
Converte un valore numerico o stringa in un valore byte. Per la conversione è possibile usare un formato decimale Java facoltativo.
toByte(123)
123
toByte(0xFF)
-1
toByte('123')
123
toDate
toDate(<string> : any, [<date format> : string]) => date
Converte la stringa della data di input in date usando un formato di data di input facoltativo. Per i formati disponibili, vedere la classe Java SimpleDateFormat
. Se il formato della data di input viene omesso, il formato predefinito è aaaa-[M]M-[d]d. I formati accettati sono :[ 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)
Converte un valore numerico o stringa in un valore decimale. Se la precisione e la scala non vengono specificate, per impostazione predefinita vengono impostate su (10,2). Per la conversione è possibile usare un formato decimale Java facoltativo. Un formato facoltativo per le impostazioni locali sotto forma di linguaggio BCP47, ad esempio 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
Converte un valore numerico o stringa in un valore double. Per la conversione è possibile usare un formato decimale Java facoltativo. Un formato facoltativo per le impostazioni locali sotto forma di linguaggio BCP47, ad esempio 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
Converte un valore numerico o stringa in un valore float. Per la conversione è possibile usare un formato decimale Java facoltativo. Tronca qualsiasi valore double.
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
Converte un valore numerico o stringa in un valore integer. Per la conversione è possibile usare un formato decimale Java facoltativo. Tronca qualsiasi valore long, float, double.
toInteger(123) -> 123
toInteger('123') -> 123
toInteger('$123', '$###') -> 123
toLong
toLong(<value> : any, [<format> : string], [<locale> : string]) => long
Converte un valore numerico o stringa in un valore long. Per la conversione è possibile usare un formato decimale Java facoltativo. Tronca qualsiasi valore float, double.
toLong(123) -> 123
toLong('123') -> 123
toLong('$123', '$###') -> 123
topN
topN(<column/expression> : any, <count> : long, <n> : integer) => array
Ottiene i primi valori N per questa colonna in base all'argomento conteggio.
topN(custId, count, 5)
topN(productId, num_sales, 10)
toShort
toShort(<value> : any, [<format> : string], [<locale> : string]) => short
Converte un valore numerico o stringa in un valore short. Per la conversione è possibile usare un formato decimale Java facoltativo. Tronca qualsiasi valore integer, long, float, double.
toShort(123) -> 123
toShort('123') -> 123
toShort('$123', '$###') -> 123
toString
toString(<value> : any, [<number format/date format> : string], [<date locale> : string]) => string
Converte un tipo di dati primitivo in una stringa. Per numeri e date è possibile specificare un formato. Se non è specificato, viene selezionato il valore predefinito del sistema. Per i numeri viene usato il formato decimale Java. Fare riferimento a SimpleDateFormat di Java per tutti i formati di data disponibili. Il formato predefinito è aaaa-MM-gg. Per data o timestamp è possibile specificare le impostazioni locali facoltativamente.
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
Converte una stringa in un timestamp in base a un formato di timestamp facoltativo. Se il timestamp viene omesso, viene usato il modello predefinito aaaa-[M]M-[g]g hh:mm:ss[.f...]. È possibile passare un fuso orario facoltativo nel formato 'GMT', 'PST', 'UTC', 'America/Cayman'. Il timestamp supporta un livello di accuratezza fino al millisecondo con un valore pari a 999. Per i formati disponibili, vedere la classe Java SimpleDateFormat
. 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
Converte il timestamp in UTC. È possibile passare un fuso orario facoltativo nel formato 'GMT', 'PST', 'UTC', 'America/Cayman'. Per impostazione predefinita viene usato il fuso orario corrente. Per i formati disponibili, vedere la classe Java SimpleDateFormat
. 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
Sostituisce un set di caratteri con un altro set di caratteri nella stringa. Viene eseguita una sostituzione da 1 a 1.
translate('(bojjus)', '()', '[]') -> '[bojjus]'
translate('(gunchus)', '()', '[') -> '[gunchus'
trim
trim(<string to trim> : string, [<trim characters> : string]) => string
Rimuove i caratteri iniziali e finali di una stringa. Se il secondo parametro non è specificato, rimuove lo spazio vuoto. In caso contrario, rimuove qualsiasi carattere specificato nel secondo parametro.
trim(' dumbo ') -> 'dumbo'
trim('!--!du!mbo!', '-!') -> 'dumbo'
true
true() => boolean
Restituisce sempre un valore true. Usare la funzione syntax(true())
se è presente una colonna denominata ''true''.
(10 + 20 == 30) -> true
(10 + 20 == 30) -> true()
typeMatch
typeMatch(<type> : string, <base type> : string) => boolean
Trova corrispondenze tra tipi di colonne. Può essere usato solo nelle espressioni del criterio. Number trova corrispondenze con short, integer, long, double, float o decimal; integral trova corrispondenze con short, integer o long; fractional trova corrispondenze con double, float o decimal; datetime trova corrispondenze con il tipo date o timestamp.
typeMatch(type, 'number')
typeMatch('date', 'datetime')
U
unescape
unescape(<string_to_escape> : string, <format> : string) => string
Annulla l'escape di una stringa in base a un formato. I valori letterali per il formato accettabili sono ''json'', ''xml'', ''ecmascript'', ''html'' e ''java''.
unescape('{\\\\\"value\\\\\": 10}', 'json')
'{\\\"value\\\": 10}'
unfold
unfold (<value1>: array) => any
Espande una matrice in un set di righe e ripete i valori per le colonne rimanenti in ogni riga.
unfold(addresses) => any
unfold( @(name = salesPerson, sales = salesAmount) ) => any
unhex
unhex(<value1>: string) => binary
Scompone un valore binario nella sua rappresentazione di stringa. Può essere usato con sha2, md5 per eseguire la conversione da stringa a rappresentazione binaria
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
Restituisce un set di unioni di elementi distinti da 2 matrici.
union([10, 20, 30], [20, 40]) => [10, 20, 30, 40]
upper
upper(<value1> : string) => string
Applica il formato maiuscolo a tutti i caratteri di una stringa.
upper('bojjus') -> 'BOJJUS'
uuid
uuid() => string
Restituisce l'UUID generato.
uuid()
V
variance
variance(<value1> : number) => double
Ottiene la varianza di una colonna.
variance(sales)
varianceIf
varianceIf(<value1> : boolean, <value2> : number) => double
In base a un criterio, ottiene la varianza di una colonna.
varianceIf(region == 'West', sales)
variancePopulation
variancePopulation(<value1> : number) => double
Ottiene la varianza della popolazione di una colonna.
variancePopulation(sales)
variancePopulationIf
variancePopulationIf(<value1> : boolean, <value2> : number) => double
In base a un criterio, ottiene la varianza della popolazione di una colonna.
variancePopulationIf(region == 'West', sales)
varianceSample
varianceSample(<value1> : number) => double
Ottiene la varianza imparziale di una colonna.
varianceSample(sales)
varianceSampleIf
varianceSampleIf(<value1> : boolean, <value2> : number) => double
In base a un criterio, ottiene la varianza imparziale di una colonna.
varianceSampleIf(region == 'West', sales)
W
weekOfYear
weekOfYear(<value1> : datetime) => integer
Ottiene la settimana dell'anno in base a una data specificata.
weekOfYear(toDate('2008-02-20')) -> 8
weeks
weeks(<value1> : integer) => long
Durata in millisecondi per il numero di settimane.
weeks(2) -> 1209600000L
X
xor
xor(<value1> : boolean, <value2> : boolean) => boolean
Operatore XOR logico. Uguale all'operatore ^.
xor(true, false) -> true
xor(true, true) -> false
true ^ false -> true
Y
year
year(<value1> : datetime) => integer
Ottiene il valore dell'anno di una data.
year(toDate('2012-8-8')) -> 2012
Contenuto correlato
- Elenco di tutte le funzioni di aggregazione.
- Elenco di tutte le funzioni di matrice.
- Elenco di tutte le funzioni di ricerca memorizzate nella cache.
- Elenco di tutte le funzioni di conversione.
- Elenco di tutte le funzioni di data e ora.
- Elenco di tutte le funzioni di espressione.
- Elenco di tutte le funzioni della mappa.
- Elenco di tutte le metafunzioni.
- Elenco di tutte le funzioni finestra.
- Informazioni su come usare il Generatore di espressioni.