Utilizzo delle espressioni di trasformazione dei dati nel flusso di dati di mapping
SI APPLICA A: Azure Data Factory
Azure Synapse Analytics
Suggerimento
Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .
I flussi di dati sono disponibili sia in Azure Data Factory che in Azure Synapse Pipelines. Questo articolo si applica ai flussi di dati di mapping. Se non si ha esperienza con le trasformazioni, vedere l'articolo introduttivo Trasformare i dati usando un flusso di dati di 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 di mapping. Per i riepiloghi di 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 di mapping.
Un
abs
abs(<value1> : number) => number
Valore assoluto di un numero.
abs(-20) -> 20
abs(10) -> 10
acos
acos(<value1> : number) => double
Calcola un valore inverso coseno.
acos(1) -> 0.0
add
add(<value1> : any, <value2> : any) => any
Aggiunge una coppia di stringhe o numeri. Aggiunge una data a un numero di 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 date.
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 di valori distinti per una colonna. Il secondo parametro facoltativo consiste nel 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 un valore seno inverso.
asin(0) -> 0.0
assertErrorMessages
assertErrorMessages() => map
Restituisce una mappa di tutti i messaggi di errore per la riga con 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. Tutti i valori e chiavi devono essere dello stesso tipo. Se non viene specificato alcun elemento, per impostazione predefinita viene impostato un mapping di stringa al tipo 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 di un indice di matrice. L'indice è basato su 1. L'indice out-of-bounds 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 un valore tangente inverso.
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 due altri valori in modo inclusivo. È possibile confrontare valori numerici, stringa e datetime
between(10, 5, 24)
true
between(currentDate(), currentDate() + 10, currentDate() + 20)
false
bitwiseAnd
bitwiseAnd(<value1> : integral, <value2> : integral) => integral
Operatore And bit per bit tra i tipi integrali. Uguale all'operatore &
bitwiseAnd(0xf4, 0xef)
0xe4
(0xf4 & 0xef)
0xe4
bitwiseOr
bitwiseOr(<value1> : integral, <value2> : integral) => integral
Operatore Or bit per bit tra tipi integrali. Uguale a | Operatore
bitwiseOr(0xf4, 0xef)
0xff
(0xf4 | 0xef)
0xff
bitwiseXor
bitwiseXor(<value1> : any, <value2> : any) => any
Operatore Or bit per bit tra tipi integrali. Uguale a | 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 del set di colonne di tipi di dati primitivi variabili in base a una lunghezza di bit, che può essere costituito solo da multipli di 8 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 del set di colonne di tipi di dati primitivi variabili in base a una lunghezza di bit, che può essere costituito solo da multipli di 8 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 da una delle azioni di conversione del tipo(? date, ? stringa ...). I nomi di colonna noti in fase di progettazione devono essere risolti in base al nome. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni dei parametri
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 da una delle funzioni di conversione del tipo (TO_DATE, TO_STRING ...). I nomi di colonna noti in fase di progettazione devono essere risolti in base al nome. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni dei parametri.
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 funzione di conversione dei tipi (toDate, toString, ...). I nomi di colonna noti in fase di progettazione devono essere risolti in base al nome. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni dei parametri.
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 in base al nome nel flusso di origine. Il secondo argomento è il 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 da una delle funzioni di conversione del tipo (TO_DATE, TO_STRING ...). I nomi di colonna noti in fase di progettazione devono essere risolti in base al nome. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni dei parametri.
toString(byOrigin('ancestor', 'ancestorStream'))
byOrigins
byOrigins(<column names> : array, [<origin stream name> : string]) => any
Seleziona una matrice di colonne in base al nome nel flusso. Il secondo argomento è il 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 da una delle funzioni di conversione del tipo (TO_DATE, TO_STRING ...) I nomi di colonna noti in fase di progettazione devono essere risolti in base al nome. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni dei parametri.
toString(byOrigins(['ancestor1', 'ancestor2'], 'ancestorStream'))
byPath
byPath(<value1> : string, [<streamName> : string]) => any
Trova un percorso gerarchico in base al nome nel flusso. È possibile passare un nome di flusso facoltativo come secondo argomento. Se non viene trovato alcun percorso di questo tipo, restituisce null. I nomi e i percorsi delle colonne noti in fase di progettazione devono essere indirizzati solo con il nome o il percorso di notazione del punto. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni dei parametri.
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 nei limiti, restituisce un valore NULL. Il valore restituito deve essere convertito da una delle funzioni di conversione del tipo (TO_DATE, TO_STRING ...) Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni dei parametri.
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 predefinito è NULL per l'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 del cubo di un numero.
cbrt(8) -> 2.0
ceil
ceil(<value1> : number) => number
Restituisce il numero 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 number è maggiore di 256, il risultato è equivalente a char(number % 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 sarà uguale al numero di righe nel gruppo e può contenere valori NULL. Il numero di elementi raccolti deve essere ridotto.
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 univoca. Durante questo processo è possibile raccogliere e trasformare le strutture in strutture alternative. Il numero di elementi sarà uguale al numero di righe nel gruppo e può contenere valori NULL. Il numero di elementi raccolti deve essere ridotto.
collect(salesPerson)
collect(firstName + lastName))
collect(@(name = salesPerson, sales = salesAmount) )
columnNames
columnNames(<value1>
columnNames( : string, i><value1> : boolean) = array>
Ottiene i nomi di tutte le colonne di output per un flusso. È possibile passare un nome di flusso facoltativo come primo argomento. Il secondo argomento è facoltativo, con false come valore predefinito. Se si imposta il secondo argomento su true()
, ADF restituirà solo le colonne che vengono deviate tramite deriva dello 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 numero intero negativo se value1 < value2, 0 se value1 == value2, 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 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 un valore coseno.
cos(10) -> -0.8390715290764524
cosh
cosh(<value1> : number) => double
Calcola un coseno iperbolico di un valore.
cosh(0) -> 1.0
count
count([<value1> : any]) => long
Ottiene il conteggio aggregato dei valori. Se si specificano le 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 di valori inclusi i valori Null.
countAll(custId)
countAll()
countDistinct
countDistinct(<value1> : any, [<value2> : any], ...) => long
Ottiene il conteggio aggregato di valori distinti di un set di colonne.
countDistinct(custId, custName)
countAllDistinct
countAllDistinct(<value1> : any, [<value2> : any], ...) => long
Ottiene il conteggio aggregato di 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 di esempio di due colonne.
covarianceSample(sales, profit)
covarianceSampleIf
covarianceSampleIf(<value1> : boolean, <value2> : number, <value3> : number) => double
In base a un criterio, ottiene la covarianza di esempio di due colonne.
covarianceSampleIf(region == 'West', sales, profit)
crc32
crc32(<value1> : any, ...) => long
Calcola l'hash CRC32 del set di colonne di tipi di dati primitivi variabili in base a una lunghezza di bit, che può essere di solo valori 0(256), 224, 256, 384, 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. Eventuali valori collegati nell'ordinamento vengono valutati nella 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'. Il fuso orario locale del data center/area della data factory viene usato come predefinito. 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 all'avvio dell'esecuzione del processo con 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 rispetto al fuso orario del cluster, è possibile passare un fuso orario facoltativo sotto forma di "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 dato una data.
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.
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 produrranno spazi vuoti nella sequenza. Dense Rank funziona anche quando i dati non vengono ordinati e cercano modifiche nei valori.
denseRank()
distinct
distinct(<value1> : array) => array
Restituisce un set distinto di elementi di 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 il numero di caratteri a 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 il numero di caratteri a 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))
Stringa di input: string, Charset: string) => binary
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 accettabile sono 'json', 'xml', 'ecmascript', 'html', '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 un formato non letterale. Può essere usato per passare i parametri come rappresentazioni di stringa.
- expr('price * discount') => any
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 gli elementi dalla matrice 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 da una matrice che corrisponde alla condizione. Accetta una funzione di filtro in cui è possibile indirizzare l'elemento nella matrice come #item. Per le mappe annidate in modo approfondito, è possibile fare riferimento alla 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, si presuppone che sia false.
first(sales)
first(sales, false)
flatten
flatten(<array> : array, <value2> : array ..., <value2> : boolean) => array
Rende flat la matrice o le matrici in una singola matrice. Le matrici di elementi atomici vengono restituite invariate. L'ultimo argomento è facoltativo ed è impostato su false per rendere flat in modo ricorsivo più di un livello profondo.
flatten([['bojjus', 'girl'], ['gunchus', 'boy']]) => ['bojjus', 'girl', 'gunchus', 'boy']
flatten([[['bojjus', 'gunchus']]] , true) => ['bojjus', 'gunchus']
floor
floor(<value1> : number) => number
Restituisce il numero intero più grande non maggiore del numero.
floor(-0.1) -> -1
fromBase64
fromBase64(<value1> : string, <encoding type> : string) => string
Decodifica la stringa con codifica 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. I nomi di colonna noti in fase di progettazione devono essere riportati solo in base al relativo nome. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni dei parametri.
hasColumn('parent')
hasError
hasError([<value1> : string]) => boolean
Controlla se l'asserzione con ID specificato è contrassegnata 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 e i percorsi delle colonne noti in fase di progettazione devono essere indirizzati solo con il nome o il percorso di notazione del punto. Gli input calcolati non sono supportati, ma è possibile usare le sostituzioni dei parametri.
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, viene considerato NULL. Entrambi i valori devono essere compatibili (numeric, string...).
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
Dato due o più input, restituisce il primo elemento non Null. Questa funzione equivale a coalesce.
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
Controlla se un elemento si trova 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 da 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 viene trovato, viene restituito 0.
instr('dumbo', 'mbo') -> 3
instr('microsoft', 'o') -> 5
instr('good', 'bad') -> 0
intersect
intersect(<value1> : array, <value2> : array) => array
Restituisce un set di intersezioni di elementi distinti da 2 matrici.
intersect([10, 20, 30], [20, 40]) => [20]
isBitSet
isBitSet (<value1> : array, <value2>:integer ) => boolean
Controlla se in questo bitset è impostata una posizione di bit
isBitSet(toBitSet([10, 32, 98]), 10) => true
isBoolean
isBoolean(<value1>: string) => boolean
Controlla se il valore 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 stringa è un valore di 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. Per i formati disponibili, vedere SimpleDateFormat di Java. 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 stringa è un valore decimale in base a 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 è distinta. Non conta null come valore distinto
isDistinct(custId, custName) => boolean
isDouble
isDouble (<value1> : string, [<format>: string]) => boolean
Controlla se il valore stringa è un valore doppio 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 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 stringa è un valore intero 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 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 stringa è un valore breve 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 di data di input è un timestamp usando un formato timestamp di input facoltativo. Per i formati disponibili, vedere SimpleDateFormat di Java. Se il timestamp viene omesso, viene usato il modello yyyy-[M]M-[d]d hh:mm:ss[.f...]
predefinito. È possibile passare un fuso orario facoltativo nel formato 'GMT', 'PST', 'UTC', 'America/Cayman'. Timestamp supporta fino a millisecondi di accuratezza con valore 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 la seconda è la matrice di valori. Entrambe le matrici devono avere una lunghezza uguale.
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 non vengono restituite tutte le righe, viene restituito un valore Null a meno che non venga 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'ultima data del mese in base a una data.
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 non vengono restituite tutte le righe, viene restituito un valore Null a meno che non venga 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 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 seguenti simboli speciali: _ corrisponde a qualsiasi carattere nell'input (simile a . nelle posix
espressioni regolari) % corrisponde a zero o più caratteri nell'input (simile a .* nelle posix
espressioni regolari).
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 è valido eseguire l'escape di 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, viene considerata dall'inizio della stringa. Se non viene trovato, viene restituito 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; in caso contrario, è possibile specificare un numero eulero.
log(100, 10) -> 2
log10
log10(<value1> : number) => double
Calcola il valore del log in base a 10 base.
log10(100) -> 2
lookup
lookup(key, key2, ...) => complex[]
Cerca la prima riga dal sink memorizzato nella cache usando le chiavi specificate che corrispondono alle chiavi del sink memorizzato nella cache.
cacheSink#lookup(movieId)
lower
lower(<value1> : string) => string
Lettere minuscole 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 maggiore della lunghezza, viene tagliata fino 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. Altrimenti taglia 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. Map prevede un riferimento a un elemento nella funzione di 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 condizionale di una matrice a un'altra matrice di lunghezza uguale o inferiore. I valori possono essere di qualsiasi tipo di dati, inclusi 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 padre usando la #item_[n](#item_1, #index_1...)
notazione .
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. Map prevede un riferimento a un elemento nella funzione di 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 a 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 alla notazione #index_n(#index_1, #index_2...) padre.
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 del set di colonne di tipi di dati primitivi variabili e restituisce una stringa esadecimale di 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 a AVG.
mean(sales)
meanIf
meanIf(<value1> : boolean, <value2> : number) => number
In base a un criterio, ottiene la media dei valori di una colonna. Uguale a avgIf.
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 dal sink memorizzato nella cache usando le chiavi specificate che corrispondono alle chiavi del sink memorizzato nella cache.
cacheSink#mlookup(movieId)
mod
mod(<value1> : any, <value2> : any) => any
Calcola il modulo di coppie di numeri. Uguale all'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 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 dal partitionId.
nextSequence() == 12313112 -> false
normalize
normalize(<String to normalize> : string) => string
Normalizza il valore stringa in modo da 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 NTile
funzione divide le righe per ogni partizione di finestra in n
bucket compresi tra 1 e al massimo n
. I valori dei bucket si differenzieranno per un massimo di 1. Se il numero di righe nella partizione non viene diviso uniformemente nel numero di bucket, i valori rimanenti vengono distribuiti uno per bucket, a partire dal primo bucket. La NTile
funzione è 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 avranno una riga aggiuntiva aggiunta. 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 utilizzata comporterà 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. Uguale 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 colonne. Deve essere racchiuso 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 della 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
Alza 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. Rank funziona anche quando i dati non sono ordinati e cercano modifiche nei 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. Reduce prevede un riferimento a un enumeratore e un elemento nella prima funzione di espressione come #acc e #item e prevede che il valore risultante venga usato come #result nella seconda funzione di 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>
(virgolette indietro) per trovare una corrispondenza con una stringa senza 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>
(virgolette indietro) per trovare una corrispondenza con una stringa senza 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
Sostituire tutte le occorrenze di un criterio regex con un'altra sottostringa nella stringa specificata Usare <regex>
(virgolette indietro) per trovare una corrispondenza con una stringa senza 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
Divide una stringa in base a un delimitatore in base all'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, per impostazione predefinita è 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 a 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, il valore predefinito è 0. Se la modalità viene omessa, per impostazione predefinita viene ROUND_HALF_UP(5). I valori per l'arrotondamento includono
- ROUND_UP - Modalità di arrotondamento per arrotondare da zero.
- ROUND_DOWN - Modalità di arrotondamento per arrotondare verso zero.
- ROUND_CEILING - Modalità di arrotondamento per arrotondare verso l'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 arrotondare verso l'infinito negativo. [Uguale a ROUND_DOWN se l'input è positivo. Se negativo, si comporta come ROUND_UP]
- ROUND_HALF_UP - Modalità di arrotondamento verso il "vicino più vicino" a meno che entrambi i vicini non siano equidistenti, nel qual caso ROUND_UP. [Più comune + impostazione predefinita per Il flusso di dati].
- ROUND_HALF_DOWN - Modalità di arrotondamento verso il "vicino più vicino" a meno che entrambi i vicini non siano equidistenti, nel qual caso ROUND_DOWN.
- ROUND_HALF_EVEN - Modalità di arrotondamento per arrotondare verso il "vicino più vicino" a meno che entrambi i vicini non siano equidistenti, nel qual caso, arrotondare verso il vicino pari.
- ROUND_UNNECESSARY - Modalità arrotondamento per affermare che l'operazione di arrotondamento ha un risultato esatto, pertanto non è necessario arrotondamento.
round(100.123) -> 100.0
round(2.5, 0) -> 3.0
round(5.3999999999999995, 2, 7) -> 5.40
rowNumber
rowNumber() => integer
Assegna un numero di righe sequenziale per le 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 maggiore della lunghezza, viene tagliata fino alla lunghezza.
rpad('dumbo', 10, '-') -> 'dumbo-----'
rpad('dumbo', 4, '-') -> 'dumb'
rpad('dumbo', 8, '<>') -> 'dumbo<><'
rtrim
rtrim(<string to trim> : string, [<trim characters> : string]) => string
Destra taglia una stringa di caratteri finali. Se il secondo parametro non è specificato, rimuove lo spazio vuoto. Altrimenti taglia 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 dei bit in questo bitset
setBitSet(toBitSet([10, 32]), [98]) => [4294968320L, 17179869184L]
sha1
sha1(<value1> : any, ...) => string
Calcola il digest SHA-1 del set di colonne di tipi di dati primitivi variabili e restituisce una stringa esadecimale di 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 un valore seno.
sin(2) -> 0.9092974268256817
sinh
sinh(<value1> : number) => double
Calcola un valore 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'asimmetria di una colonna.
skewness(sales)
skewnessIf
skewnessIf(<value1> : boolean, <value2> : number) => double
In base a un criterio, ottiene l'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, l'impostazione predefinita è la fine 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 di 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 soundex
codice per la stringa.
soundex('genius') -> 'G520'
split
split(<string to split> : string, <split characters> : string) => array
Divide 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 del campione di una colonna.
stddevSample(sales)
stddevSampleIf
stddevSampleIf(<value1> : boolean, <value2> : number) => double
In base a un criterio, ottiene la deviazione standard del campione di una colonna.
stddevSampleIf(region == 'West', sales)
subDays
subDays(<date/timestamp> : datetime, <days to subtract> : integral) => datetime
Sottrae i giorni da una data o un timestamp. Uguale all'operatore - per date.
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, l'impostazione predefinita è la fine 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(<string to subset><delimiter>
substringIndex( : string, : string, <count of delimiter occurences> : integral]) = string>
Estrae la sottostringa prima count
delle occorrenze del delimitatore. Se count
è positivo, viene restituito tutto a sinistra del delimitatore finale (conteggio dalla sinistra). Se count
è negativo, viene restituito tutto a destra del delimitatore finale (conteggio dalla 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 un valore tangente.
tan(0) -> 0.0
tanh
tanh(<value1> : number) => double
Calcola un valore tangente iperbolico.
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 qualsiasi valore numerico/data/timestamp/stringa in rappresentazione binaria.
toBinary(3) -> [0x11]
toBoolean
toBoolean(<value1> : string) => boolean
Converte un valore di ('t', 'true', 'y', 'yes', '1') in true e ('f', 'false', 'n', 'no', '0') in false e 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 qualsiasi valore numerico o stringa in un valore di 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 viene impostato su (10,2). Per la conversione è possibile usare un formato decimale Java facoltativo. Formato delle impostazioni locali facoltativo sotto forma di linguaggio BCP47 come 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. Formato delle impostazioni locali facoltativo sotto forma di linguaggio BCP47 come 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 doppio.
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 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 float, double.
toLong(123) -> 123
toLong('123') -> 123
toLong('$123', '$###') -> 123
topN
topN(<column/expression> : any, <count> : long, <n> : integer) => array
Ottiene i primi N valori per questa colonna in base all'argomento count.
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 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. Per tutti i formati di data possibili, vedere Java SimpleDateFormat; 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-[d]d hh:mm:ss[.f...]. È possibile passare un fuso orario facoltativo nel formato 'GMT', 'PST', 'UTC', 'America/Cayman'. Timestamp supporta fino a millisecondi di accuratezza con valore 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'. 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.
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. I caratteri hanno 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. Altrimenti taglia 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 pattern.number corrisponde a short, integer, long, double, float o decimal, integral match short, integer, long, fractional match double, float, decimal e datetime corrisponde al 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 accettabile sono 'json', 'xml', 'ecmascript', 'html', 'java'.
unescape('{\\\\\"value\\\\\": 10}', 'json')
'{\\\"value\\\": 10}'
unfold
unfold (<value1>: array) => any
Apre 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
Annulla l'hash di un valore binario dalla relativa 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
Maiuscole 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 non distorta di una colonna.
varianceSample(sales)
varianceSampleIf
varianceSampleIf(<value1> : boolean, <value2> : number) => double
In base a un criterio, ottiene la varianza non distorta di una colonna.
varianceSampleIf(region == 'West', sales)
Me
weekOfYear
weekOfYear(<value1> : datetime) => integer
Ottiene la settimana dell'anno in base a una data.
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.
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per