Uso de expressões de transformação de dados nos fluxos de dados de mapeamento
APLICA-SE A: Azure Data Factory Azure Synapse Analytics
Dica
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange desde movimentação de dados até ciência de dados, análise em tempo real, business intelligence e relatórios. Saiba como iniciar uma avaliação gratuita!
Os fluxos de dados estão disponíveis nos pipelines do Azure Data Factory e do Azure Synapse. Este artigo se aplica ao fluxo de dados de mapeamento. Se você for iniciante nas transformações, veja o artigo introdutório Transformar dados usando um fluxo de dados de mapeamento.
Os artigos a seguir fornecem detalhes sobre o uso de todas as expressões e funções com suporte no Azure Data Factory e no Azure Synapse Analytics em fluxos de dados de mapeamento. Para resumos de cada tipo de função com suporte, consulte os seguintes artigos:
- Funções de agregação
- Funções de matriz
- Funções de pesquisa em cache
- Funções de conversão
- Funções de data e hora
- Funções de expressão
- Funções de mapeamento
- Metafunções
- Funções da janela
Lista alfabética de todas as funções
Segue uma lista alfabética de todas as funções disponíveis nos fluxos de dados de mapeamento.
A
abs
abs(<value1> : number) => number
Valor absoluto de um número.
abs(-20) -> 20
abs(10) -> 10
acos
acos(<value1> : number) => double
Calcula um valor de inverso do cosseno.
acos(1) -> 0.0
add
add(<value1> : any, <value2> : any) => any
Adiciona um par de cadeias de caracteres ou números. Adiciona uma data a vários dias. Adiciona uma duração a um carimbo de data/hora. Acrescenta uma matriz de tipo semelhante a outra. Similar ao operador +.
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
Adiciona dias a uma data ou carimbo de data/hora. Similar ao operador + para data.
addDays(toDate('2016-08-08'), 1) -> toDate('2016-08-09')
addMonths
addMonths(<date/timestamp> : datetime, <months to add> : integral, [<value3> : string]) => datetime
Adiciona meses a uma data ou um carimbo de data/hora. Opcionalmente, você pode transmitir um fuso horário.
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
Operador AND lógico. Similar a &&.
and(true, false) -> false
true && false -> false
approxDistinctCount
approxDistinctCount(<value1> : any, [ <value2> : double ]) => long
Obtém a contagem de agregação aproximada de valores distintos para uma coluna. O segundo parâmetro opcional é controlar o erro de estimativa.
approxDistinctCount(ProductID, .05) => long
array
array([<value1> : any], ...) => array
Cria uma matriz de itens. Todos os itens devem ser do mesmo tipo. Se nenhum item for especificado, o padrão será uma matriz de cadeia de caracteres vazia. O mesmo que um operador de criação [].
array('Seattle', 'Washington')
['Seattle', 'Washington']
['Seattle', 'Washington'][1]
'Washington'
ascii
ascii(<Input> : string) => number
Retorna o valor numérico do caractere de entrada. Se a cadeia de caracteres de entrada tiver mais de um caractere, o valor numérico do primeiro caractere será retornado
ascii('A') -> 65
ascii('a') -> 97
asin
asin(<value1> : number) => double
Calcula um valor de inverso do seno.
asin(0) -> 0.0
assertErrorMessages
assertErrorMessages() => map
Retorna um mapa de todas as mensagens de erro relacionadas à linha com a ID de declaração como a chave.
Exemplos
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
Cria um mapa de chave/valores. Todas as chaves/valores devem ser do mesmo tipo. Se nenhum item for especificado, ele é padronizado a um mapa de cadeia de caracteres para o tipo de cadeia de caracteres. O mesmo que um operador de criação [ -> ]
. As chaves e os valores devem alternar entre si.
associate('fruit', 'apple', 'vegetable', 'carrot' )=> ['fruit' -> 'apple', 'vegetable' -> 'carrot']
at
at(<value1> : array/map, <value2> : integer/key type) => array
Localiza o elemento em um índice de matriz. O índice é baseado em 1. O índice fora dos limites resulta em um valor nulo. Localiza um valor em um mapa de acordo com uma chave. Se a chave não for encontrada, ele retornará nulo.
at(['apples', 'pears'], 1) => 'apples'
at(['fruit' -> 'apples', 'vegetable' -> 'carrot'], 'fruit') => 'apples'
atan
atan(<value1> : number) => double
Calcula um valor inverso da tangente.
atan(0) -> 0.0
atan2
atan2(<value1> : number, <value2> : number) => double
Retorna o ângulo em radianos entre o eixo x positivo de um plano e o ponto dado pelas coordenadas.
atan2(0, 0) -> 0.0
avg
avg(<value1> : number) => number
Obtém a média dos valores de uma coluna.
avg(sales)
avgIf
avgIf(<value1> : boolean, <value2> : number) => number
Com base em um critério, obtém a média dos valores de uma coluna.
avgIf(region == 'West', sales)
B
between
between(<value1> : any, <value2> : any, <value3> : any) => boolean
Verifica se o primeiro valor está entre dois outros valores, inclusive. Os valores numéricos, de cadeia de caracteres e de datetime podem ser comparados
between(10, 5, 24)
true
between(currentDate(), currentDate() + 10, currentDate() + 20)
false
bitwiseAnd
bitwiseAnd(<value1> : integral, <value2> : integral) => integral
Operador And bit a bit em tipos integrais. O mesmo que e operador
bitwiseAnd(0xf4, 0xef)
0xe4
(0xf4 & 0xef)
0xe4
bitwiseOr
bitwiseOr(<value1> : integral, <value2> : integral) => integral
Operador Or bit a bit em tipos integrais. Similar ao operador |
bitwiseOr(0xf4, 0xef)
0xff
(0xf4 | 0xef)
0xff
bitwiseXor
bitwiseXor(<value1> : any, <value2> : any) => any
Operador Or bit a bit em tipos integrais. Similar ao operador |
bitwiseXor(0xf4, 0xef)
0x1b
(0xf4 ^ 0xef)
0x1b
(true ^ false)
true
(true ^ true)
false
blake2b
blake2b(<value1> : integer, <value2> : any, ...) => string
Calcula o código hash Blake2 do conjunto de colunas de diferentes tipos de dados primitivos dado um comprimento de bits, que pode ser apenas de múltiplos de 8 entre 8 e 512. Pode ser usado para calcular uma impressão digital de uma linha
blake2b(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
'c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d'
blake2bBinary
blake2bBinary(<value1> : integer, <value2> : any, ...) => binary
Calcula o código hash Blake2 do conjunto de colunas de diferentes tipos de dados primitivos dado um comprimento de bits, que pode ser apenas de múltiplos de 8 entre 8 e 512. Pode ser usado para calcular uma impressão digital de uma linha
blake2bBinary(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
unHex('c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d')
byItem
byItem(<parent column> : any, <column name> : string) => any
Encontre um subitem dentro de uma estrutura ou matriz de estrutura. Se houver várias correspondências, a primeira correspondência será retornada. Se não houver correspondência, um valor NULL é retornado. O valor retornado deve ser do tipo convertido por uma das funções de conversão de tipo (? data, ? cadeia de caracteres ...). Somente os nomes de coluna conhecidos no tempo de design por seus nomes. Não há suporte a entradas computadas, mas você pode usar substituições de parâmetro.
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
Seleciona um valor de coluna de acordo com o nome no fluxo. Você pode transmitir um nome de fluxo opcional como o segundo argumento. Se houver várias correspondências, a primeira correspondência será retornada. Se não houver correspondência, um valor NULL é retornado. O valor retornado deve ser do tipo convertido por uma das funções de conversão de tipo (TO_DATE, TO_STRING...). Somente os nomes de coluna conhecidos no tempo de design por seus nomes. Não há suporte a entradas computadas, mas você pode usar substituições de parâmetro.
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
Selecione uma matriz de colunas de acordo com o nome no fluxo. Você pode transmitir um nome de fluxo opcional como o segundo argumento. Se houver várias correspondências, a primeira correspondência será retornada. Se não houver correspondência para uma coluna, a saída inteira será um valor NULL. O valor retornado requer uma função de conversão de tipo (toDate, toString,...). Somente os nomes de coluna conhecidos no tempo de design por seus nomes. Não há suporte a entradas computadas, mas você pode usar substituições de parâmetro.
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
Seleciona um valor de coluna pelo nome no fluxo de origem. O segundo argumento é o nome do fluxo de origem. Se houver várias correspondências, a primeira correspondência será retornada. Se não houver correspondência, um valor NULL é retornado. O valor retornado deve ser do tipo convertido por uma das funções de conversão de tipo (TO_DATE, TO_STRING...). Somente os nomes de coluna conhecidos no tempo de design por seus nomes. Não há suporte a entradas computadas, mas você pode usar substituições de parâmetro.
toString(byOrigin('ancestor', 'ancestorStream'))
byOrigins
byOrigins(<column names> : array, [<origin stream name> : string]) => any
Selecione uma matriz de colunas de acordo com o nome no fluxo. O segundo argumento é o fluxo de origem. Se houver várias correspondências, a primeira correspondência será retornada. Se não houver correspondência, um valor NULL é retornado. O valor retornado deve ser do tipo convertido por uma das funções de conversão de tipo (TO_DATE, TO_STRING...). Somente os nomes de coluna conhecidos no tempo de design por seus nomes. Não há suporte a entradas computadas, mas você pode usar substituições de parâmetro.
toString(byOrigins(['ancestor1', 'ancestor2'], 'ancestorStream'))
byPath
byPath(<value1> : string, [<streamName> : string]) => any
Localiza um caminho hierárquico por nome no fluxo. Você pode transmitir um nome de fluxo opcional como o segundo argumento. Se nenhum caminho desse tipo for encontrado, ele retornará null. Os nomes de coluna/caminhos conhecidos no tempo de design devem ser tratados apenas por seus nomes ou caminho de notação de ponto. Não há suporte a entradas computadas, mas você pode usar substituições de parâmetro.
byPath('grandpa.parent.child') => column
byPosition
byPosition(<position> : integer) => any
Seleciona um valor de coluna de acordo com sua posição relativa (com base em 1) no fluxo. Se a posição estiver fora dos limites, ela retornará um valor NULL. O valor retornado deve ser do tipo convertido por uma das funções de conversão de tipo (TO_DATE, TO_STRING...). Não há suporte a entradas computadas, mas você pode usar substituições de parâmetro.
toString(byPosition(1))
toDecimal(byPosition(2), 10, 2)
toBoolean(byName(4))
toString(byName($colName))
toString(byPosition(1234))
C
case
case(<condition> : boolean, <true_expression> : any, <false_expression> : any, ...) => any
Com base em condições alternadas, aplica-se um valor ou o outro. Se o número de entradas for par, o outro é padronizado como NULL na última condição.
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
Calcula a raiz cúbica de um número.
cbrt(8) -> 2.0
ceil
ceil(<value1> : number) => number
Retorna o menor inteiro não inferior ao número.
ceil(-0.1) -> 0
char
char(<Input> : number) => string
Retorna o caractere ASCII representado pelo número de entrada. Se o número for maior que 256, o resultado será equivalente a char(número % 256)
char(65) -> 'A'
char(97) -> 'a'
coalesce
coalesce(<value1> : any, ...) => any
Retorna o primeiro valor não nulo de um conjunto de entradas. Todas as entradas devem ser do mesmo tipo.
coalesce(10, 20) -> 10
coalesce(toString(null), toString(null), 'dumbo', 'bo', 'go') -> 'dumbo'
collect
collect(<value1> : any) => array
Coleta todos os valores da expressão no grupo agregado em uma matriz. As estruturas podem ser coletadas e transformadas em estruturas alternativas durante esse processo. O número de itens é igual ao número de linhas nesse grupo e poderá conter valores nulos. O número de itens coletados deve ser pequeno.
collect(salesPerson)
collect(firstName + lastName))
collect(@(name = salesPerson, sales = salesAmount) )
collectUnique
collectUnique(<value1> : any) => array
Coleta todos os valores da expressão no grupo agregado em uma matriz exclusiva. As estruturas podem ser coletadas e transformadas em estruturas alternativas durante esse processo. O número de itens é igual ao número de linhas nesse grupo e poderá conter valores nulos. O número de itens coletados deve ser pequeno.
collect(salesPerson)
collect(firstName + lastName))
collect(@(name = salesPerson, sales = salesAmount) )
columnNames
columnNames(<value1>
columnNames( : string, i><value1> : boolean) => array
Obtém os nomes de todas as colunas de saída de um fluxo. Você pode transmitir um nome de fluxo opcional como o primeiro argumento. O segundo argumento também é opcional, com false como o padrão. Se você definir o segundo argumento como true()
, o Data Factory retorna apenas colunas que são descompassadas por meio do descompasso de esquema.
columnNames()
columnNames('DeriveStream')
columnNames('DeriveStream', true())
columnNames('', true())
columns
columns([<stream name> : string]) => any
Obtém os valores de todas as colunas de saída de um fluxo. Você pode transmitir um nome de fluxo opcional como o segundo argumento.
columns()
columns('DeriveStream')
compare
compare(<value1> : any, <value2> : any) => integer
Compara dois valores do mesmo tipo. Retorna um inteiro negativo se value1 < value2, 0 se value1 == value2 e um valor positivo se value1 > value2.
(compare(12, 24) < 1) -> true
(compare('dumbo', 'dum') > 0) -> true
concat
concat(<this> : string, <that> : string, ...) => string
Concatena um número variável de cadeias de caracteres juntas. Similar ao operador + com cadeias de caracteres.
concat('dataflow', 'is', 'awesome') -> 'dataflowisawesome'
'dataflow' + 'is' + 'awesome' -> 'dataflowisawesome'
isNull('sql' + null) -> true
concatWS
concatWS(<separator> : string, <this> : string, <that> : string, ...) => string
Concatena um número variável de cadeias de caracteres juntamente com um separador. O primeiro parâmetro é o separador.
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
Retornará true se algum elemento na matriz fornecida for avaliado como true no predicado fornecido. Contains espera uma referência a um elemento na função de predicado como #item.
contains([1, 2, 3, 4], #item == 3) -> true
contains([1, 2, 3, 4], #item > 5) -> false
cos
cos(<value1> : number) => double
Calcula um valor de cosseno.
cos(10) -> -0.8390715290764524
cosh
cosh(<value1> : number) => double
Calcula um cosseno hiperbólico de um valor.
cosh(0) -> 1.0
count
count([<value1> : any]) => long
Obtém a contagem agregada de valores. Se uma ou mais colunas opcionais forem especificadas, ela ignorará os valores NULL na contagem.
count(custId)
count(custId, custName)
count()
count(iif(isNull(custId), 1, NULL))
countAll
countAll([<value1> : any]) => long
Obtém a contagem agregada de valores, incluindo nulos.
countAll(custId)
countAll()
countDistinct
countDistinct(<value1> : any, [<value2> : any], ...) => long
Obtém a contagem agregada de valores distintos de um conjunto de colunas.
countDistinct(custId, custName)
countAllDistinct
countAllDistinct(<value1> : any, [<value2> : any], ...) => long
Obtém a contagem agregada de valores distintos de um conjunto de colunas, incluindo nulos.
countAllDistinct(custId, custName)
countIf
countIf(<value1> : boolean, [<value2> : any]) => long
Com base em um critério, obtém a contagem agregada de valores. Se a coluna opcional for especificada, ela ignorará os valores NULL na contagem.
countIf(state == 'CA' && commission < 10000, name)
covariancePopulation
covariancePopulation(<value1> : number, <value2> : number) => double
Obtém a covariância de população entre duas colunas.
covariancePopulation(sales, profit)
covariancePopulationIf
covariancePopulationIf(<value1> : boolean, <value2> : number, <value3> : number) => double
Com base em um critério, obtém a covariância de população de duas colunas.
covariancePopulationIf(region == 'West', sales)
covarianceSample
covarianceSample(<value1> : number, <value2> : number) => double
Obtém a covariância de amostra de duas colunas.
covarianceSample(sales, profit)
covarianceSampleIf
covarianceSampleIf(<value1> : boolean, <value2> : number, <value3> : number) => double
Com base em um critério, obtém a covariância de amostra de duas colunas.
covarianceSampleIf(region == 'West', sales, profit)
crc32
crc32(<value1> : any, ...) => long
Calcula o hash CRC32 do conjunto de colunas de diferentes tipos de dados primitivos dado um comprimento de bits, que pode ser apenas de valores 0 (256), 224, 256, 384, 512. Pode ser usado para calcular uma impressão digital para uma linha.
crc32(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 3630253689L
cumeDist
cumeDist() => integer
A função CumeDist calcula a posição de um valor relativo a todos os valores na partição. O resultado é o número de linhas anteriores ou iguais à linha atual na ordenação da partição, dividido pelo número total de linhas na partição de janela. Os valores de empate na ordenação, se houver, são avaliados para a mesma posição.
cumeDist()
currentDate
currentDate([<value1> : string]) => date
Obtém a data atual quando este trabalho começa a ser executado. Você pode passar um fuso horário opcional na forma de 'GMT', 'PST', 'UTC', 'America/Cayman'. O fuso horário local do data center/região do data factory é usado como o padrão. Consulte a classe SimpleDateFormat
do Java para os formatos disponíveis. 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
Obtém o carimbo de data/hora atual quando o trabalho começa a ser executado com o fuso horário local.
currentTimestamp() == toTimestamp('2250-12-31 12:12:12') -> false
currentUTC
currentUTC([<value1> : string]) => timestamp
Obtém o carimbo de data/hora atual como UTC. Se desejar que a hora atual seja interpretada em um fuso horário diferente do fuso horário do cluster, você poderá transmitir um fuso horário opcional nos formatos "GMT", "PST", "UTC", "Estados Unidos/Cayman". O valor padrão é o fuso horário atual. Consulte a classe SimpleDateFormat
do Java para os formatos disponíveis. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html. Para converter a hora UTC em um fuso horário diferente, use 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
Obtém o dia do mês de determinada data.
dayOfMonth(toDate('2018-06-08')) -> 8
dayOfWeek
dayOfWeek(<value1> : datetime) => integer
Obtém o dia da semana de uma determinada data. 1 – domingo, 2 – segunda ..., 7 – sábado.
dayOfWeek(toDate('2018-06-08')) -> 6
dayOfYear
dayOfYear(<value1> : datetime) => integer
Obtém o dia do ano de determinada data.
dayOfYear(toDate('2016-04-09')) -> 100
days
days(<value1> : integer) => long
Duração em milissegundos para o número de dias.
days(2) -> 172800000L
decode
decode(<Input> : any, <Charset> : string) => binary
Decodifica os dados de entrada codificados em uma cadeia de caracteres com base no conjunto de caracteres especificado. Um segundo argumento (opcional) pode ser usado para especificar qual conjunto de caracteres deve ser usado - 'US-ASCII', 'ISO-8859-1', 'UTF-8' (padrão), 'UTF-16BE', 'UTF-16LE', 'UTF-16'
decode(array(toByte(97),toByte(98),toByte(99)), 'US-ASCII') -> abc
degrees
degrees(<value1> : number) => double
Converter radianos em graus.
degrees(3.141592653589793) -> 180
denseRank
denseRank() => integer
Computa a classificação de um valor em um grupo de valores especificados na cláusula order by de uma janela. O resultado é 1 mais o número de linhas anteriores ou iguais à linha atual na ordenação da partição. Os valores não produzem lacunas na sequência. O Dense Rank funciona mesmo quando os dados não são classificados e busca alterações nos valores.
denseRank()
distinct
distinct(<value1> : array) => array
Retorna um conjunto distinto de itens de uma matriz.
distinct([10, 20, 30, 10]) => [10, 20, 30]
divide
divide(<value1> : any, <value2> : any) => any
Divide o par de números. Similar ao operador /
.
divide(20, 10) -> 2
20 / 10 -> 2
dropLeft
dropLeft(<value1> : string, <value2> : integer) => string
Remove o maior número de caracteres da esquerda da cadeia de caracteres. Se a queda solicitada exceder o comprimento da cadeia de caracteres, uma cadeia de caracteres vazia será retornada.
- dropLeft('bojjus', 2) => 'jjus'
- dropLeft('cake', 10) => ''
dropRight
dropRight(<value1> : string, <value2> : integer) => string
Remove o maior número de caracteres da direita da cadeia de caracteres. Se a queda solicitada exceder o comprimento da cadeia de caracteres, uma cadeia de caracteres vazia será retornada.
- dropRight('bojjus', 2) => 'bojj'
- dropRight('cake', 10) => ''
E
encode
encode(<Input> : string, <Charset> : string) => binary
Codifica os dados da cadeia de caracteres de entrada em binário com base em um conjunto de caracteres. Um segundo argumento (opcional) pode ser usado para especificar qual conjunto de caracteres deve ser usado - 'US-ASCII', 'ISO-8859-1', 'UTF-8' (padrão), '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
Verifica se a cadeia de caracteres termina com a cadeia de caracteres fornecida.
endsWith('dumbo', 'mbo') -> true
equals
equals(<value1> : any, <value2> : any) => boolean
Operador de comparação equals. Similar ao operador ==.
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
Operador de comparação equals ignorando maiúsculas e minúsculas. O mesmo que o operador <=>.
'abc'<=>'Abc' -> true
equalsIgnoreCase('abc', 'Abc') -> true
escape
escape(<string_to_escape> : string, <format> : string) => string
Escapa uma cadeia de caracteres de acordo com um formato. Os valores literais para o formato aceitável são "json", "xml", "ecmascript", "html", "java'.
except
except(<value1> : array, <value2> : array) => array
Retorna um conjunto de diferenças de uma matriz de outras duplicatas descartadas.
except([10, 20, 30], [20, 40]) => [10, 30]
expr
expr(<expr> : string) => any
Resulta em uma expressão de uma cadeia de caracteres. Isso é o mesmo que escrever essa expressão em um formato não literal. Pode ser usado para passar parâmetros como representações de cadeia de caracteres.
- expr('price * discount') => any
F
factorial
factorial(<value1> : number) => long
Calcula o fatorial de um número.
factorial(5) -> 120
false
false() => boolean
Sempre retorna um valor false. Use a função syntax(false())
se houver uma coluna chamada "false".
(10 + 20 > 30) -> false
(10 + 20 > 30) -> false()
filter
filter(<value1> : array, <value2> : unaryfunction) => array
Filtra elementos da matriz que não atendem ao predicado fornecido. O filtro espera uma referência a um elemento na função de predicado como #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
Localize o primeiro item de uma matriz que corresponda à condição. Ela usa uma função de filtro na qual você pode endereçar o item na matriz como #item. Para mapas profundamente aninhados, você pode consultar os mapas pai usando a notação #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
Obtém o primeiro valor de um grupo de colunas. Se o segundo parâmetro ignoreNulls for omitido, o Data Factory considera false.
first(sales)
first(sales, false)
flatten
flatten(<array> : array, <value2> : array ..., <value2> : boolean) => array
Mescla a matriz ou as matrizes em uma única matriz. Matrizes de itens atômicos são retornadas sem alteração. O último argumento é opcional e padronizado como falso para mesclar recursivamente mais do que um nível de profundidade.
flatten([['bojjus', 'girl'], ['gunchus', 'boy']]) => ['bojjus', 'girl', 'gunchus', 'boy']
flatten([[['bojjus', 'gunchus']]] , true) => ['bojjus', 'gunchus']
floor
floor(<value1> : number) => number
Retorna o maior inteiro não superior ao número.
floor(-0.1) -> -1
fromBase64
fromBase64(<value1> : string, <encoding type> : string) => string
Decodifica a cadeia de caracteres codificada em base64 determinada. Opcionalmente, você pode passar o tipo de codificação.
fromBase64('Z3VuY2h1cw==') -> 'gunchus'
fromBase64('SGVsbG8gV29ybGQ=', 'Windows-1252') -> 'Hello World'
fromUTC
fromUTC(<value1> : timestamp, [<value2> : string]) => timestamp
Converte no carimbo de data/hora do UTC. Você pode opcionalmente transmitir o fuso horário nos formatos 'GMT', 'PST', 'UTC', 'America/Cayman'. O valor padrão é o fuso horário atual. Consulte a classe SimpleDateFormat
do Java para os formatos disponíveis. 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
Operador de comparação greater. O mesmo que o operador >.
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
Operador de comparação greater than or equal. O mesmo que o operador >=.
greaterOrEqual(12, 12) -> true
('dumbo' >= 'dum') -> true
greatest
greatest(<value1> : any, ...) => any
Retorna o maior valor entre a lista de valores como entrada e ignora os valores null. Retorna null se todas as entradas forem 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 um valor de coluna de acordo com o nome no fluxo. Você pode transmitir um nome de fluxo opcional como o segundo argumento. Somente os nomes de coluna conhecidos no tempo de design por seus nomes. Não há suporte a entradas computadas, mas você pode usar substituições de parâmetro.
hasColumn('parent')
hasError
hasError([<value1> : string]) => boolean
Verifica se o ativo com a ID fornecida está marcada como um erro.
Exemplos
hasError('assert1')
hasError('assert2')
hasPath
hasPath(<value1> : string, [<streamName> : string]) => boolean
Verifica se um determinado caminho hierárquico existe por nome no fluxo. Você pode transmitir um nome de fluxo opcional como o segundo argumento. Os nomes de coluna/caminhos conhecidos no tempo de design devem ser tratados apenas por seus nomes ou caminho de notação de ponto. Não há suporte a entradas computadas, mas você pode usar substituições de parâmetro.
hasPath('grandpa.parent.child') => boolean
hex
hex(<value1>: binary) => string
Retorna uma representação de cadeia de caracteres hexa de um valor binário
hex(toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])) -> '1fadbe'
hour
hour(<value1> : timestamp, [<value2> : string]) => integer
Obtém o valor da hora de um carimbo de data/hora. Você pode passar um fuso horário opcional na forma de 'GMT', 'PST', 'UTC', 'America/Cayman'. O fuso horário local é usado como padrão. Consulte a classe SimpleDateFormat
do Java para os formatos disponíveis. 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
Duração em milissegundos para o número de horas.
hours(2) -> 7200000L
I
iif
iif(<condition> : boolean, <true_expression> : any, [<false_expression> : any]) => any
Com base em uma condição, aplica-se um valor ou o outro. Se "Outros" não for especificado, o valor será considerado NULL. Ambos os valores devem ser compatíveis (numérico, cadeia de caracteres...).
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
Dada duas ou mais entradas, retorna o primeiro item não nulo. Essa função é equivalente a unir.
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 se um item está na matriz.
in([10, 20, 30], 10) -> true
in(['good', 'kid'], 'bad') -> false
initCap
initCap(<value1> : string) => string
Converte a primeira letra de cada palavra em maiúscula. Palavras são identificadas como separadas por espaços em branco.
initCap('cool iceCREAM') -> 'Cool Icecream'
instr
instr(<string> : string, <substring to find> : string) => integer
Localiza a posição (baseada em 1) da substring de caracteres dentro de uma cadeia de caracteres. Retorna 0 se não encontrado.
instr('dumbo', 'mbo') -> 3
instr('microsoft', 'o') -> 5
instr('good', 'bad') -> 0
intersect
intersect(<value1> : array, <value2> : array) => array
Retorna um conjunto de interseção de itens distintos de duas matrizes.
intersect([10, 20, 30], [20, 40]) => [20]
isBitSet
isBitSet (<value1> : array, <value2>:integer ) => boolean
Verifica se uma posição de bit está definida neste conjunto de bits
isBitSet(toBitSet([10, 32, 98]), 10) => true
isBoolean
isBoolean(<value1>: string) => boolean
Verifica se o valor da cadeia de caracteres é um valor booliano de acordo com as regras de toBoolean()
isBoolean('true') -> true
isBoolean('no') -> true
isBoolean('microsoft') -> false
isByte
isByte(<value1> : string) => boolean
Verifica se o valor da cadeia de caracteres é um valor de byte para o qual foi dado um formato opcional de acordo com as regras de toByte()
isByte('123') -> true
isByte('chocolate') -> false
isDate
isDate (<value1> : string, [<format>: string]) => boolean
Verifica se a cadeia de caracteres de entrada de data é uma data usando um formato de data de entrada opcional. Consulte SimpleDateFormat do Java para obter os formatos disponíveis. Se o formato de data de entrada for omitido, o formato padrão será yyyy-[M]M-[d]d
. Os formato aceitos são [ 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
Verifica se o valor da cadeia de caracteres é um valor decimal para o qual foi dado um formato opcional de acordo com as regras de toDecimal()
isDecimal('123.45') -> true
isDecimal('12/12/2000') -> false
isDelete
isDelete([<value1> : integer]) => boolean
Verifica se a linha está marcada para exclusão. No caso de transformações que usem mais de um fluxo de entrada, você pode transmitir o índice (baseado em 1) do fluxo. O índice de fluxo deve ser 1 ou 2 e o valor padrão é 1.
isDelete()
isDelete(1)
isDistinct
isDistinct(<value1> : any , <value1> : any) => boolean
Localiza se uma coluna ou conjunto de colunas for diferente. Não contabiliza nulo como um valor distinto
isDistinct(custId, custName) => boolean
isDouble
isDouble (<value1> : string, [<format>: string]) => boolean
Verifica se o valor da cadeia de caracteres é um valor duplo para o qual foi dado um formato opcional de acordo com as regras de toDouble()
isDouble('123') -> true
isDouble('$123.45' -> '$###.00') -> true
isDouble('icecream') -> false
isError
isError([<value1> : integer]) => boolean
Verifica se a linha está marcada como erro. No caso de transformações que usem mais de um fluxo de entrada, você pode transmitir o índice (baseado em 1) do fluxo. O índice de fluxo deve ser 1 ou 2 e o valor padrão é 1.
isError()
isError(1)
isFloat
isFloat (<value1> : string, [<format>: string]) => boolean
Verifica se o valor da cadeia de caracteres é um valor float para o qual foi dado um formato opcional de acordo com as regras de toFloat()
isFloat('123') -> true
isFloat('$123.45' -> '$###.00') -> true
isFloat('icecream') -> false
isIgnore
isIgnore([<value1> : integer]) => boolean
Verifica se a linha está marcada para ser ignorada. No caso de transformações que usem mais de um fluxo de entrada, você pode transmitir o índice (baseado em 1) do fluxo. O índice de fluxo deve ser 1 ou 2 e o valor padrão é 1.
isIgnore()
isIgnore(1)
isInsert
isInsert([<value1> : integer]) => boolean
Verifica se a linha está marcada para inserção. No caso de transformações que usem mais de um fluxo de entrada, você pode transmitir o índice (baseado em 1) do fluxo. O índice de fluxo deve ser 1 ou 2 e o valor padrão é 1.
isInsert()
isInsert(1)
isInteger
isInteger (<value1> : string, [<format>: string]) => boolean
Verifica se o valor da cadeia de caracteres é um valor inteiro para o qual foi dado um formato opcional de acordo com as regras de toInteger()
isInteger('123') -> true
isInteger('$123' -> '$###') -> true
isInteger('microsoft') -> false
isLong
isLong (<value1> : string, [<format>: string]) => boolean
Verifica se o valor da cadeia de caracteres é um valor longo para o qual foi dado um formato opcional de acordo com as regras de toLong()
isLong('123') -> true
isLong('$123' -> '$###') -> true
isLong('gunchus') -> false
isMatch
isMatch([<value1> : integer]) => boolean
Verifica se a linha é correspondida na pesquisa. No caso de transformações que usem mais de um fluxo de entrada, você pode transmitir o índice (baseado em 1) do fluxo. O índice de fluxo deve ser 1 ou 2 e o valor padrão é 1.
isMatch()
isMatch(1)
isNan
isNan (<value1> : integral) => boolean
Verifique se não é um número.
isNan(10.2) => false
isNull
isNull(<value1> : any) => boolean
Verifica se o valor é NULL.
isNull(NULL()) -> true
isNull('') -> false
isShort
isShort (<value1> : string, [<format>: string]) => boolean
Verifica se o valor da cadeia de caracteres é um valor curto para o qual foi dado um formato opcional de acordo com as regras de toShort()
isShort('123') -> true
isShort('$123' -> '$###') -> true
isShort('microsoft') -> false
isTimestamp
isTimestamp (<value1> : string, [<format>: string]) => boolean
Verifica se a cadeia de caracteres de data de entrada é um carimbo de hora usando um formato de carimbo de hora de entrada opcional. Consulte SimpleDateFormat do Java para obter os formatos disponíveis. Se o carimbo de data/hora for omitido, o padrão yyyy-[M]M-[d]d hh:mm:ss[.f...]
será utilizado. Você pode passar um fuso horário opcional na forma de 'GMT', 'PST', 'UTC', 'America/Cayman'. O carimbo de data/hora dá suporte à precisão de milissegundos com o valor de 999. Consulte o SimpleDateFormat do Java para obter os formatos disponíveis.
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
Verifica se a linha está marcada para atualização. No caso de transformações que usem mais de um fluxo de entrada, você pode transmitir o índice (baseado em 1) do fluxo. O índice de fluxo deve ser 1 ou 2 e o valor padrão é 1.
isUpdate()
isUpdate(1)
isUpsert
isUpsert([<value1> : integer]) => boolean
Verifica se a linha está marcada para inserção. No caso de transformações que usem mais de um fluxo de entrada, você pode transmitir o índice (baseado em 1) do fluxo. O índice de fluxo deve ser 1 ou 2 e o valor padrão é 1.
isUpsert()
isUpsert(1)
J
jaroWinkler
jaroWinkler(<value1> : string, <value2> : string) => double
Obtém a distância JaroWinkler entre duas cadeias de caracteres.
jaroWinkler('frog', 'frog') => 1.0
K
keyValues
keyValues(<value1> : array, <value2> : array) => map
Cria um mapa de chave/valores. O primeiro parâmetro é uma matriz de chaves, e o segundo é a matriz de valores. Ambas as matrizes devem ter comprimento igual.
keyValues(['bojjus', 'appa'], ['gunchus', 'ammi']) => ['bojjus' -> 'gunchus', 'appa' -> 'ammi']
kurtosis
kurtosis(<value1> : number) => double
Obtém a curtose de uma coluna.
kurtosis(sales)
kurtosisIf
kurtosisIf(<value1> : boolean, <value2> : number) => double
Com base em um critério, obtém a curtose de uma coluna.
kurtosisIf(region == 'West', sales)
L
lag
lag(<value> : any, [<number of rows to look before> : number], [<default value> : any]) => any
Obtém o valor do primeiro parâmetro avaliado n linhas antes da linha atual. O segundo parâmetro é o número de linhas a retroceder e o valor padrão é 1. Se não houver tantas linhas, um valor null será retornado, a menos que um valor padrão seja especificado.
lag(amount, 2)
lag(amount, 2000, 100)
last
last(<value1> : any, [<value2> : boolean]) => any
Obtém o último valor de um grupo de colunas. Se o segundo parâmetro ignoreNulls for omitido, será considerado false.
last(sales)
last(sales, false)
lastDayOfMonth
lastDayOfMonth(<value1> : datetime) => date
Obtém a última data do mês de determinada 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
Obtém o valor do primeiro parâmetro avaliado n linhas depois da linha atual. O segundo parâmetro é o número de linhas a avançar e o valor padrão é 1. Se não houver tantas linhas, um valor null será retornado, a menos que um valor padrão seja especificado.
lead(amount, 2)
lead(amount, 2000, 100)
least
least(<value1> : any, ...) => any
Operador de comparação lesser than or equal. O mesmo que o operador <=.
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
Extrai um início de subcadeia de caracteres no índice 1 com o número de caracteres. Similar a SUBSTRING(str, 1, n).
left('bojjus', 2) -> 'bo'
left('bojjus', 20) -> 'bojjus'
length
length(<value1> : string) => integer
Retorna o comprimento da cadeia de caracteres.
length('dumbo') -> 5
lesser
lesser(<value1> : any, <value2> : any) => boolean
Operador de comparação less. O mesmo que o operador <.
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
Operador de comparação lesser than or equal. O mesmo que o operador <=.
lesserOrEqual(12, 12) -> true
('dumbo' <= 'dum') -> false
levenshtein
levenshtein(<from string> : string, <to string> : string) => integer
Obtém a distância Levenshtein entre duas cadeias de caracteres.
levenshtein('boys', 'girls') -> 4
like
like(<string> : string, <pattern match> : string) => boolean
O padrão é uma cadeia de caracteres com correspondência literal. As exceções são os seguintes símbolos especiais: _ corresponde a um caractere na entrada (semelhante a. Em expressões regulares do posix
) % corresponde a zero ou mais caracteres na entrada (semelhante a .*
em expressões regulares do posix
).
O caractere de escape é ''. Se um caractere de escape precede um símbolo especial ou outro caractere de escape, o caractere seguinte será correspondido literalmente. Não é válido para escape de qualquer outro caractere.
like('icecream', 'ice%') -> true
locate
locate(<substring to find> : string, <string> : string, [<from index - 1-based> : integral]) => integer
Localiza a posição (baseada em 1) da substring de caracteres dentro de uma cadeia de caracteres começando de uma certa posição. Se a posição for omitida, será considerada desde o começo da cadeia de caracteres. Retorna 0 se não encontrado.
locate('mbo', 'dumbo') -> 3
locate('o', 'microsoft', 6) -> 7
locate('bad', 'good') -> 0
log
log(<value1> : number, [<value2> : number]) => double
Calcula o valor de log. Uma base opcional pode ser fornecida caso um número de Euler seja usado.
log(100, 10) -> 2
log10
log10(<value1> : number) => double
Calcula o valor do log com base em 10.
log10(100) -> 2
lookup
lookup(key, key2, ...) => complex[]
Pesquisa a primeira linha do coletor armazenado em cache usando as chaves especificadas que correspondem às chaves do coletor armazenado em cache.
cacheSink#lookup(movieId)
lower
lower(<value1> : string) => string
Coloca em minúsculas todos os caracteres de uma cadeia de caracteres.
lower('GunChus') -> 'gunchus'
lpad
lpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
Preenche à esquerda a cadeia de caracteres com o preenchimento fornecido até que esta alcance um determinado comprimento. Se a cadeia de caracteres for igual ou maior que o tamanho, ela será cortada no tamanho.
lpad('dumbo', 10, '-') -> '-----dumbo'
lpad('dumbo', 4, '-') -> 'dumb'
ltrim
ltrim(<string to trim> : string, [<trim characters> : string]) => string
Corta uma cadeia de caracteres inicial à esquerda. Se o segundo parâmetro não for especificado, ele cortará o espaço em branco. Caso contrário, ele cortará qualquer caractere especificado no segundo parâmetro.
ltrim(' dumbo ') -> 'dumbo '
ltrim('!--!du!mbo!', '-!') -> 'du!mbo!'
M
map
map(<value1> : array, <value2> : unaryfunction) => any
Mapeia cada elemento da matriz para um novo elemento usando a expressão fornecida. Map espera uma referência a um elemento na função de expressão como #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
Transforma um mapa associando as chaves a novos valores. Retorna uma matriz. Ele usa uma função de mapeamento em que você pode endereçar o item como #chave e o valor atual como #valor.
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
Mapeia condicionalmente uma matriz a outra de comprimento igual ou menor. Os valores podem ser de qualquer tipo de dados, incluindo structTypes. Ele usa uma função de mapeamento onde você pode endereçar o item na matriz como #item e o índice atual como #index. Para mapas profundamente aninhados, você pode consultar os mapas pai usando a notação #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
Mapeia cada elemento da matriz para um novo elemento usando a expressão fornecida. Map espera uma referência a um elemento na função de expressão como #item e uma referência ao índice de elemento como #index.
mapIndex([1, 2, 3, 4], #item + 2 + #index) -> [4, 6, 8, 10]
mapLoop
mapLoop(<value1> : integer, <value2> : unaryfunction) => any
Faz um loop de 1 até o comprimento para criar uma matriz desse comprimento. Ele usa uma função de mapeamento onde você pode endereçar o índice na matriz como #index. Para mapas profundamente aninhados, você pode consultar os mapas pai usando a notação #index_n(#index_1, #index_2...).
mapLoop(3, #index * 10) -> [10, 20, 30]
max
max(<value1> : any) => any
Obtém o valor máximo de uma coluna.
max(sales)
maxIf
maxIf(<value1> : boolean, <value2> : any) => any
Com base em um critério, obtém o valor máximo de uma coluna.
maxIf(region == 'West', sales)
md5
md5(<value1> : any, ...) => string
Calcula o digest MD5 do conjunto de colunas de diferentes tipos de dados primitivos e retorna uma cadeia hexadecimal de 32 caracteres. Pode ser usado para calcular uma impressão digital para uma linha.
md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '4ce8a880bd621a1ffad0bca905e1bc5a'
mean
mean(<value1> : number) => number
Obtém a média dos valores de uma coluna. Igual a AVG.
mean(sales)
meanIf
meanIf(<value1> : boolean, <value2> : number) => number
Com base em um critério, obtém a média dos valores de uma coluna. Igual a avgIf.
meanIf(region == 'West', sales)
millisecond
millisecond(<value1> : timestamp, [<value2> : string]) => integer
Obtém o valor de uma data em milissegundos. Você pode passar um fuso horário opcional na forma de 'GMT', 'PST', 'UTC', 'America/Cayman'. O fuso horário local é usado como padrão. Consulte a classe SimpleDateFormat
do Java para os formatos disponíveis. 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
Duração em milissegundos para o número de milissegundos.
milliseconds(2) -> 2L
min
min(<value1> : any) => any
Obtém o valor mínimo de uma coluna.
min(sales)
minIf
minIf(<value1> : boolean, <value2> : any) => any
Com base em um critério, obtém o valor mínimo de uma coluna.
minIf(region == 'West', sales)
minus
minus(<value1> : any, <value2> : any) => any
Subtrai números. Subtrai o número de dias de uma data. Subtrai a duração de um carimbo de data/hora. Subtrai dois carimbos de data/hora para obter a diferença em milissegundos. Similar ao operador -.
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
Obtém o valor do minuto de um carimbo de data/hora. Você pode passar um fuso horário opcional na forma de 'GMT', 'PST', 'UTC', 'America/Cayman'. O fuso horário local é usado como padrão. Consulte a classe SimpleDateFormat
do Java para os formatos disponíveis. 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
Duração em milissegundos para o número de minutos.
minutes(2) -> 120000L
mlookup
mlookup(key, key2, ...) => complex[]
Pesquisa todas as linhas correspondentes do coletor armazenado em cache usando as chaves especificadas que correspondem às chaves do coletor armazenado em cache.
cacheSink#mlookup(movieId)
mod
mod(<value1> : any, <value2> : any) => any
Módulo de par de números. Similar ao operador %.
mod(20, 8) -> 4
20 % 8 -> 4
month
month(<value1> : datetime) => integer
Obtém o valor do mês de uma data ou carimbo de data/hora.
month(toDate('2012-8-8')) -> 8
monthsBetween
monthsBetween(<from date/timestamp> : datetime, <to date/timestamp> : datetime, [<roundoff> : boolean], [<time zone> : string]) => double
Obtém o número de meses entre duas datas. Você pode arredondar o cálculo. Você pode passar um fuso horário opcional na forma de 'GMT', 'PST', 'UTC', 'America/Cayman'. O fuso horário local é usado como padrão. Consulte a classe SimpleDateFormat
do Java para os formatos disponíveis. 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
Multiplica o par de números. Similar ao operador *.
multiply(20, 10) -> 200
20 * 10 -> 200
N
negate
negate(<value1> : number) => number
Torna um número negativo. Transforma números positivos em negativos e vice-versa.
negate(13) -> -13
nextSequence
nextSequence() => long
Retorna a próxima sequência exclusiva. O número é consecutivo somente dentro de uma partição e é prefixado pela partitionId.
nextSequence() == 12313112 -> false
normalize
normalize(<String to normalize> : string) => string
Normaliza o valor da cadeia de caracteres para separar caracteres Unicode acentuados.
regexReplace(normalize('bo²s'), `\p{M}`, '') -> 'boys'
not
not(<value1> : boolean) => boolean
Operador de negação lógica.
not(true) -> false
not(10 == 20) -> true
notEquals
notEquals(<value1> : any, <value2> : any) => boolean
Operador de comparação not equals. Similar ao operador !=.
12 != 24 -> true
'bojjus' != 'bo' + 'jjus' -> false
nTile
nTile([<value1> : integer]) => integer
A função NTile
divide as linhas de cada partição de janela em buckets n
que variam de 1 a no máximo n
. Os valores de bucket vão diferir em no máximo 1. Se o número de linhas na partição não se dividir uniformemente em um número de buckets, os valores restantes serão distribuídos um por bucket, começando com o primeiro bucket. A função NTile
é útil para o cálculo de tertiles
, quartis, decis e outras estatísticas de resumo comuns. A função calcula duas variáveis durante a inicialização: O tamanho de um bucket regular terá uma linha extra adicionada a ele. Ambas as variáveis são baseadas no tamanho da partição atual. Durante o processo de cálculo, a função acompanha o número da linha atual, o número do bucket atual e o número da linha em que o bucket será alterado (bucketThreshold). Quando o número da linha atual atinge o limite do bucket, o valor do bucket é aumentado em um e o limite é aumentado pelo tamanho do bucket (mais um extra se o bucket atual for preenchido).
nTile()
nTile(numOfBuckets)
null
null() => null
Retorna um valor NULL. Use a função syntax(null())
se houver uma coluna chamada "null". Qualquer operação que a empregar resultará em 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
Operador OR lógico. Similar a ||.
or(true, false) -> true
true || false -> true
originColumns
originColumns(<streamName> : string) => any
Obtém todas as colunas de saída para um fluxo de origem em que as colunas foram criadas. Deve ser incluído em outra função.
array(toString(originColumns('source1')))
output
output() => any
Retorna a primeira linha dos resultados do coletor armazenado em cache
cacheSink#output()
outputs
output() => any
Retorna o conjunto de linhas de saída inteiro dos resultados do coletor armazenado em cache
cacheSink#outputs()
P
partitionId
partitionId() => integer
Retorna a ID da partição atual na qual a linha de entrada está.
partitionId()
pMod
pMod(<value1> : any, <value2> : any) => any
Módulo positivo de par de números.
pmod(-20, 8) -> 4
power
power(<value1> : number, <value2> : number) => double
Eleva um número à potência de outro.
power(10, 2) -> 100
R
radians
radians(<value1> : number) => double
Converte graus em radianos
radians(180) => 3.141592653589793
random
random(<value1> : integral) => long
Retorna um número aleatório dado uma semente opcional em uma partição. A semente deve ser um valor fixo e é usada com a partitionId para produzir valores aleatórios
random(1) == 1 -> false
rank
rank() => integer
Computa a classificação de um valor em um grupo de valores especificados na cláusula order by de uma janela. O resultado é 1 mais o número de linhas anteriores ou iguais à linha atual na ordenação da partição. Os valores produzirão lacunas na sequência. O Rank funciona mesmo quando os dados não são classificados e busca alterações nos valores.
rank()
reassociate
reassociate(<value1> : map, <value2> : binaryFunction) => map
Transforma um mapa associando as chaves a novos valores. Ele usa uma função de mapeamento em que você pode endereçar o item como #chave e o valor atual como #valor.
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
Acumula elementos em uma matriz. A redução espera uma referência a um acumulador e um elemento na primeira função de expressão como #acc e #item, e espera que o valor resultante como #result seja usado na segunda função de expressão.
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
Extrai uma subcadeia de caracteres correspondente a um determinado padrão regex. O último parâmetro identifica o grupo de correspondências e será padronizado como 1 se omitido. Use <regex>
(acento grave) para corresponder a uma cadeia de caracteres sem escape. O índice 0 retorna todas as correspondências. Sem grupos de correspondência, o índice 1 e superior não retornará nenhum resultado.
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 a cadeia de caracteres corresponde ao determinado padrão regex. Use <regex>
(acento grave) para corresponder a uma cadeia de caracteres sem 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
Substitui todas as ocorrências de um padrão regex por outra subcadeia na cadeia de caracteres determinada. Use <regex>
(acento grave) para corresponder a uma cadeia de caracteres sem 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 uma cadeia de caracteres com base em um delimitador baseado no regex e retorna uma matriz de cadeias de caracteres.
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
Substitui todas as ocorrências de uma subcadeia de caracteres por outra subcadeia de caracteres na cadeia de caracteres determinada. Se o último parâmetro for omitido, ele será padronizado como uma cadeia de caracteres vazia.
replace('doggie dog', 'dog', 'cat') -> 'catgie cat'
replace('doggie dog', 'dog', '') -> 'gie '
replace('doggie dog', 'dog') -> 'gie '
reverse
reverse(<value1> : string) => string
Inverte uma cadeia de caracteres.
reverse('gunchus') -> 'suhcnug'
right
right(<string to subset> : string, <number of characters> : integral) => string
Extrai uma subcadeia de caracteres com o número de caracteres à direita. Similar 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 a cadeia de caracteres corresponde ao determinado padrão regex.
rlike('200.50', `(\d+).(\d+)`) -> true
rlike('bogus', `M[0-9]+.*`) -> false
round
round(<number> : number, [<scale to round> : number], [<rounding option> : integral]) => double
Arredonda um número com determinada escala opcional e um modo de arredondamento opcional. Se a escala for omitida, será padronizada como 0. Se o modo for omitido, será padronizado como ROUND_HALF_UP(5). Os valores para arredondamento incluem
- ROUND_UP – modo de arredondamento para arredondar para longe de zero.
- ROUND_DOWN – Podo de arredondamento para arredondar para zero.
- ROUND_CEILING – modo de arredondamento para arredondar em direção ao infinito positivo. [O mesmo que ROUND_UP se a entrada for positiva. Se negativo, se comporta como ROUND_DOWN. Ex = -1,1 seria -1,0 com ROUND_CEILING e -2 com ROUND_UP]
- ROUND_FLOOR – modo de arredondamento para arredondar em direção ao infinito negativo. [O mesmo que ROUND_DOWN se a entrada for positiva. Se negativo, se comporta como ROUND_UP]
- ROUND_HALF_UP – Modo de arredondamento para arredondar em direção ao "vizinho mais próximo", a menos que ambos os vizinhos sejam equidistantes, nesse caso ROUND_UP. [Mais comum + padrão para Fluxo de dados].
- ROUND_HALF_DOWN – Modo de arredondamento para arredondar em direção ao "vizinho mais próximo", a menos que ambos os vizinhos sejam equidistantes, nesse caso ROUND_DOWN.
- ROUND_HALF_EVEN – modo de arredondamento para arredondar em direção ao "vizinho mais próximo", a menos que ambos os vizinhos sejam equidistantes, nesse caso, arredondar para o mesmo vizinho.
- ROUND_UNNECESSARY – Modo de arredondamento para afirmar que a operação redonda tem um resultado exato, portanto, nenhum arredondamento é necessário.
round(100.123) -> 100.0
round(2.5, 0) -> 3.0
round(5.3999999999999995, 2, 7) -> 5.40
rowNumber
rowNumber() => integer
Atribui uma numeração de linha sequencial para linhas em uma janela que começa com 1.
rowNumber()
rpad
rpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
Preenche à direita a cadeia de caracteres com o preenchimento fornecido até que esta alcance um determinado comprimento. Se a cadeia de caracteres for igual ou maior que o tamanho, ela será cortada no tamanho.
rpad('dumbo', 10, '-') -> 'dumbo-----'
rpad('dumbo', 4, '-') -> 'dumb'
rpad('dumbo', 8, '<>') -> 'dumbo<><'
rtrim
rtrim(<string to trim> : string, [<trim characters> : string]) => string
Corta uma cadeia de caracteres final. Se o segundo parâmetro não for especificado, ele cortará o espaço em branco. Caso contrário, ele cortará qualquer caractere especificado no segundo parâmetro.
rtrim(' dumbo ') -> ' dumbo'
rtrim('!--!du!mbo!', '-!') -> '!--!du!mbo'
S
second
second(<value1> : timestamp, [<value2> : string]) => integer
Obtém o segundo valor de uma data. Você pode passar um fuso horário opcional na forma de 'GMT', 'PST', 'UTC', 'America/Cayman'. O fuso horário local é usado como padrão. Consulte a classe SimpleDateFormat
do Java para os formatos disponíveis. 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
Duração em milissegundos para o número de segundos.
seconds(2) -> 2000L
setBitSet
setBitSet (<value1>: array, <value2>:array) => array
Define as posições de bit neste conjunto de bits
setBitSet(toBitSet([10, 32]), [98]) => [4294968320L, 17179869184L]
sha1
sha1(<value1> : any, ...) => string
Calcula o digest SHA-1 do conjunto de colunas de diferentes tipos de dados primitivos e retorna uma cadeia hexadecimal de 40 caracteres. Pode ser usado para calcular uma impressão digital para uma linha.
sha1(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '46d3b478e8ec4e1f3b453ac3d8e59d5854e282bb'
sha2
sha2(<value1> : integer, <value2> : any, ...) => string
Calcula o digest SHA-2 do conjunto de colunas de diferentes tipos de dados primitivos dado um comprimento de bits, que pode ser apenas de valores 0 (256), 224, 256, 384, 512. Pode ser usado para calcular uma impressão digital para uma linha.
sha2(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 'afe8a553b1761c67d76f8c31ceef7f71b66a1ee6f4e6d3b5478bf68b47d06bd3'
sin
sin(<value1> : number) => double
Calcula um valor de seno.
sin(2) -> 0.9092974268256817
sinh
sinh(<value1> : number) => double
Calcula um valor de seno hiperbólico.
sinh(0) -> 0.0
size
size(<value1> : any) => integer
Localiza o tamanho de uma matriz ou tipo de mapa
size(['element1', 'element2']) -> 2
size([1,2,3]) -> 3
skewness
skewness(<value1> : number) => double
Obtém a distorção de uma coluna.
skewness(sales)
skewnessIf
skewnessIf(<value1> : boolean, <value2> : number) => double
Com base em um critério, obtém a distorção de uma coluna.
skewnessIf(region == 'West', sales)
slice
slice(<array to slice> : array, <from 1-based index> : integral, [<number of items> : integral]) => array
Extrai um subconjunto de uma matriz a partir de uma posição. A posição é baseada em 1. Se o comprimento for omitido, ele será padronizado como o final da cadeia de caracteres.
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
Classifica a matriz usando a função de predicado fornecida. Sort espera uma referência a dois elementos consecutivos na função de expressão como #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
Obtém o código soundex
da cadeia de caracteres.
soundex('genius') -> 'G520'
split
split(<string to split> : string, <split characters> : string) => array
Divide uma cadeia de caracteres com base em um delimitador e retorna uma matriz de cadeias de caracteres.
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
Calcula a raiz quadrada de um número.
sqrt(9) -> 3
startsWith
startsWith(<string> : string, <substring to check> : string) => boolean
Verifica se a cadeia de caracteres começa com a cadeia fornecida.
startsWith('dumbo', 'du') -> true
stddev
stddev(<value1> : number) => double
Obtém o desvio padrão de uma coluna.
stdDev(sales)
stddevIf
stddevIf(<value1> : boolean, <value2> : number) => double
Com base em um critério, obtém o desvio padrão de uma coluna.
stddevIf(region == 'West', sales)
stddevPopulation
stddevPopulation(<value1> : number) => double
Obtém o desvio padrão de população de uma coluna.
stddevPopulation(sales)
stddevPopulationIf
stddevPopulationIf(<value1> : boolean, <value2> : number) => double
Com base em um critério, obtém o desvio padrão de população de uma coluna.
stddevPopulationIf(region == 'West', sales)
stddevSample
stddevSample(<value1> : number) => double
Obtém o desvio padrão de amostra de uma coluna.
stddevSample(sales)
stddevSampleIf
stddevSampleIf(<value1> : boolean, <value2> : number) => double
Com base em um critério, obtém o desvio padrão de amostra de uma coluna.
stddevSampleIf(region == 'West', sales)
subDays
subDays(<date/timestamp> : datetime, <days to subtract> : integral) => datetime
Subtrai dias a partir de uma data ou carimbo de data/hora. Similar ao operador - para data.
subDays(toDate('2016-08-08'), 1) -> toDate('2016-08-07')
subMonths
subMonths(<date/timestamp> : datetime, <months to subtract> : integral) => datetime
Subtrai meses a partir de uma data ou carimbo de data/hora.
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
Extrai uma subcadeia de caracteres de um determinado comprimento a partir de uma posição. A posição é baseada em 1. Se o comprimento for omitido, ele será padronizado como o final da cadeia de caracteres.
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
Retorna a substring antes de count
ocorrências do delimitador. Se count
for positivo, tudo à esquerda do delimitador final (contando da esquerda) será retornado. Se count
for negativo, tudo à direita do delimitador final (contando da direita) será retornado.
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
Obtém a soma agregada de uma coluna numérica.
sum(col)
sumDistinct
sumDistinct(<value1> : number) => number
Obtém a soma agregada de valores distintos de uma coluna numérica.
sumDistinct(col)
sumDistinctIf
sumDistinctIf(<value1> : boolean, <value2> : number) => number
Com base em um critério, obtém a soma agregada de uma coluna numérica. A condição pode ser baseada em qualquer coluna.
sumDistinctIf(state == 'CA' && commission < 10000, sales)
sumDistinctIf(true, sales)
sumIf
sumIf(<value1> : boolean, <value2> : number) => number
Com base em um critério, obtém a soma agregada de uma coluna numérica. A condição pode ser baseada em qualquer coluna.
sumIf(state == 'CA' && commission < 10000, sales)
sumIf(true, sales)
T
tan
tan(<value1> : number) => double
Calcula um valor de tangente.
tan(0) -> 0.0
tanh
tanh(<value1> : number) => double
Calcula um valor de tangente hiperbólica.
tanh(0) -> 0.0
toBase64
toBase64(<value1> : string, <encoding type> : string]) => string
Codifica a cadeia de caracteres especificada em base64. Opcionalmente, você pode passar o tipo de codificação
toBase64('bojjus') -> 'Ym9qanVz'
toBase64('± 25000, € 5.000,- |', 'Windows-1252') -> 'sSAyNTAwMCwggCA1LjAwMCwtIHw='
toBinary
toBinary(<value1> : any) => binary
Converte um número de data/hora/carimbo de data/hora/cadeia de caracteres em uma representação binária.
toBinary(3) -> [0x11]
toBoolean
toBoolean(<value1> : string) => boolean
Converte um valor de ("t", "true", "y", "yes", "1") para true e de ("f", "false", "n", "no", "0") para false e NULL para qualquer outro valor.
toBoolean('true') -> true
toBoolean('n') -> false
isNull(toBoolean('truthy')) -> true
toByte
toByte(<value> : any, [<format> : string], [<locale> : string]) => byte
Converte qualquer numérico ou cadeia de caracteres em um valor de byte. Um formato decimal opcional do Java pode ser usado para a conversão.
toByte(123)
123
toByte(0xFF)
-1
toByte('123')
123
toDate
toDate(<string> : any, [<date format> : string]) => date
Converte a cadeia de caracteres de data de entrada em data usando um formato de data de entrada opcional. Consulte a classe SimpleDateFormat
do Java para os formatos disponíveis. Se o formato de data de entrada for omitido, o formato padrão será aaaa-[M]M-[d]d. Os formatos aceitos são: [ aaaa, aaaa-[M]M, aaaa-[M]M-[d]d, aaaa-[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 qualquer numérico ou cadeia de caracteres em um valor decimal. Se a precisão e a escala não forem especificadas, o padrão será (10,2). Um formato decimal opcional do Java pode ser usado para a conversão. Um formato de localidade opcional no formato de linguagem BCP47, como 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 qualquer numérico ou cadeia de caracteres em um valor duplo. Um formato decimal opcional do Java pode ser usado para a conversão. Um formato de localidade opcional no formato de linguagem BCP47, como 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 qualquer numérico ou cadeia de caracteres em um valor flutuante. Um formato decimal opcional do Java pode ser usado para a conversão. Trunca qualquer duplo.
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 qualquer numérico ou cadeia de caracteres em um valor inteiro. Um formato decimal opcional do Java pode ser usado para a conversão. Trunca qualquer longo, float, duplo.
toInteger(123) -> 123
toInteger('123') -> 123
toInteger('$123', '$###') -> 123
toLong
toLong(<value> : any, [<format> : string], [<locale> : string]) => long
Converte qualquer numérico ou cadeia de caracteres em um valor longo. Um formato decimal opcional do Java pode ser usado para a conversão. Trunca qualquer float, duplo.
toLong(123) -> 123
toLong('123') -> 123
toLong('$123', '$###') -> 123
topN
topN(<column/expression> : any, <count> : long, <n> : integer) => array
Obtém os valores N superiores para esta coluna com base no argumento de contagem.
topN(custId, count, 5)
topN(productId, num_sales, 10)
toShort
toShort(<value> : any, [<format> : string], [<locale> : string]) => short
Converte qualquer numérico ou cadeia de caracteres em um valor resumido. Um formato decimal opcional do Java pode ser usado para a conversão. Trunca qualquer inteiro, longo, float, duplo.
toShort(123) -> 123
toShort('123') -> 123
toShort('$123', '$###') -> 123
toString
toString(<value> : any, [<number format/date format> : string], [<date locale> : string]) => string
Converte um tipo de dados primitivo em uma cadeia de caracteres. Para números e data, um formato pode ser especificado. Se não for especificado, o padrão do sistema será selecionado. O formato decimal Java é usado para números. Consulte SimpleDateFormat do Java para ver todos os formatos de data possíveis. O formato padrão é aaaa-MM-dd. Para data ou carimbo de data/hora, uma localidade pode ser especificada opcionalmente.
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 uma cadeia de caracteres em um carimbo de data/hora com determinado formato de carimbo de data/hora opcional. Se o carimbo de data/hora for omitido, o padrão aaaa-[m]m-[d]d hh:mm:ss[.f...] será usado. Você pode passar um fuso horário opcional na forma de 'GMT', 'PST', 'UTC', 'America/Cayman'. O carimbo de data/hora dá suporte à precisão de milissegundos com o valor de 999. Consulte a classe SimpleDateFormat
do Java para os formatos disponíveis. 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 o carimbo de data/hora em UTC. Você pode passar um fuso horário opcional na forma de 'GMT', 'PST', 'UTC', 'America/Cayman'. É padronizado como o fuso horário atual. Consulte a classe SimpleDateFormat
do Java para os formatos disponíveis. 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
Substitui um conjunto de caracteres por outro conjunto de caracteres na cadeia de caracteres. Substituição de caracteres na proporção de 1 para 1.
translate('(bojjus)', '()', '[]') -> '[bojjus]'
translate('(gunchus)', '()', '[') -> '[gunchus'
trim
trim(<string to trim> : string, [<trim characters> : string]) => string
Apara uma cadeia de caracteres inicial e final. Se o segundo parâmetro não for especificado, ele cortará o espaço em branco. Caso contrário, ele cortará qualquer caractere especificado no segundo parâmetro.
trim(' dumbo ') -> 'dumbo'
trim('!--!du!mbo!', '-!') -> 'dumbo'
true
true() => boolean
Sempre retorna um valor true. Use a função syntax(true())
se houver uma coluna chamada 'true'.
(10 + 20 == 30) -> true
(10 + 20 == 30) -> true()
typeMatch
typeMatch(<type> : string, <base type> : string) => boolean
Corresponde ao tipo da coluna. Só pode ser usado em expressões padrão. Number corresponde a curto, inteiro, longo, duplo, flutuante ou decimal; integral corresponde a curto, inteiro, longo; fractional corresponde a duplo, flutuante, decimal; e datetime corresponde à data ou ao tipo de carimbo de data/hora.
typeMatch(type, 'number')
typeMatch('date', 'datetime')
U
unescape
unescape(<string_to_escape> : string, <format> : string) => string
Ignora o escape de uma cadeia de caracteres de acordo com um formato. Os valores literais para o formato aceitável são "json", "xml", "ecmascript", "html", "java'.
unescape('{\\\\\"value\\\\\": 10}', 'json')
'{\\\"value\\\": 10}'
unfold
unfold (<value1>: array) => any
Desdobra uma matriz em um conjunto de linhas e repete os valores para as colunas restantes em cada linha.
unfold(addresses) => any
unfold( @(name = salesPerson, sales = salesAmount) ) => any
unhex
unhex(<value1>: string) => binary
Cancela o hexa de um valor binário de sua representação de cadeia de caracteres. Pode ser usado com sha2, md5 para converter de cadeia de caracteres em representação binária
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
Retorna um conjunto de união de itens distintos de 2 matrizes.
union([10, 20, 30], [20, 40]) => [10, 20, 30, 40]
upper
upper(<value1> : string) => string
Coloca em maiúsculas todos os caracteres de uma cadeia de caracteres.
upper('bojjus') -> 'BOJJUS'
uuid
uuid() => string
Retorna o UUID gerado.
uuid()
V
variance
variance(<value1> : number) => double
Obtém a variação de uma coluna.
variance(sales)
varianceIf
varianceIf(<value1> : boolean, <value2> : number) => double
Com base em um critério, obtém a variação de uma coluna.
varianceIf(region == 'West', sales)
variancePopulation
variancePopulation(<value1> : number) => double
Obtém a variação de população de uma coluna.
variancePopulation(sales)
variancePopulationIf
variancePopulationIf(<value1> : boolean, <value2> : number) => double
Com base em um critério, obtém a variação de população de uma coluna.
variancePopulationIf(region == 'West', sales)
varianceSample
varianceSample(<value1> : number) => double
Obtém a variação não polarizada de uma coluna.
varianceSample(sales)
varianceSampleIf
varianceSampleIf(<value1> : boolean, <value2> : number) => double
Com base em um critério, obtém a variação não polarizada de uma coluna.
varianceSampleIf(region == 'West', sales)
W
weekOfYear
weekOfYear(<value1> : datetime) => integer
Obtém a semana do ano de uma determinada data.
weekOfYear(toDate('2008-02-20')) -> 8
weeks
weeks(<value1> : integer) => long
Duração em milissegundos para o número de semanas.
weeks(2) -> 1209600000L
X
xor
xor(<value1> : boolean, <value2> : boolean) => boolean
Operador lógico XOR. Similar ao operador ^.
xor(true, false) -> true
xor(true, true) -> false
true ^ false -> true
Y
year
year(<value1> : datetime) => integer
Obtém o valor do ano de uma data.
year(toDate('2012-8-8')) -> 2012
Conteúdo relacionado
- Lista todas as funções de agregação.
- Lista de todas as funções de matriz.
- Lista de todas as funções de pesquisa em cache.
- Lista de todas as funções de conversão.
- Lista de todas as funções de data e hora.
- Lista de todas as funções de expressão.
- Lista de todas as funções de mapa.
- Lista de todas as metafunções.
- Lista de todas as funções de janela.
- Saiba como usar o Construtor de Expressões.