Использование выражений преобразования данных в сопоставлении потоков данных
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
Потоки данных доступны в конвейерах как Фабрики данных Azure, так и Azure Synapse. Эта статья относится к потокам данных для сопоставления. Если вы не знакомы с преобразованиями, см. вводную статью Преобразование данных с помощью потока данных для сопоставления.
В следующих статьях приведены сведения об использовании всех выражений и функций, поддерживаемых Фабрикой данных Azure и Azure Synapse Analytics в потоках данных для сопоставления. Краткое описание поддерживаемых типов функций см. в следующих статьях:
- Агрегатные функции
- Функции массивов
- Кэшированные функции подстановки
- Функции преобразования
- Функции даты и времени
- Функции выражений
- Функции карты
- Метафункционы
- Функции окна
Алфавитный список всех функций
Ниже приведен алфавитный список всех функций, доступных для потоков данных для сопоставления.
а
abs
abs(<value1> : number) => number
Абсолютное значение числа.
abs(-20) -> 20
abs(10) -> 10
acos
acos(<value1> : number) => double
Вычисляет значение арккосинуса.
acos(1) -> 0.0
add
add(<value1> : any, <value2> : any) => any
Добавляет пару строк или чисел. Добавляет дату в много дней. Добавляет длительность в метку времени. Добавляет один массив аналогичного типа к другому. Аналогично оператору +.
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
Добавляет дни к дате или метке времени. Аналогично оператору + для даты.
addDays(toDate('2016-08-08'), 1) -> toDate('2016-08-09')
addMonths
addMonths(<date/timestamp> : datetime, <months to add> : integral, [<value3> : string]) => datetime
Добавляет месяцы к дате или метке времени. При необходимости вы можете передать часовой пояс.
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
Логический оператор И. Аналогично оператору &&.
and(true, false) -> false
true && false -> false
approxDistinctCount
approxDistinctCount(<value1> : any, [ <value2> : double ]) => long
Возвращает приблизительное общее число различных значений для столбца. Необязательный второй параметр предназначен для управления ошибкой оценки.
approxDistinctCount(ProductID, .05) => long
array
array([<value1> : any], ...) => array
Создает массив элементов. Все элементы должны быть одного типа. Если элементы не указаны, по умолчанию используется пустой массив строк. То же, что и оператор создания [].
array('Seattle', 'Washington')
['Seattle', 'Washington']
['Seattle', 'Washington'][1]
'Washington'
ascii
ascii(<Input> : string) => number
Возвращает числовое значение входного символа. Если входная строка имеет несколько символов, возвращается числовое значение первого символа.
ascii('A') -> 65
ascii('a') -> 97
asin
asin(<value1> : number) => double
Вычисляет значение арксинуса.
asin(0) -> 0.0
assertErrorMessages
assertErrorMessages() => map
Возвращает сопоставление всех сообщений об ошибках для строки с идентификатором утверждения в качестве ключа.
Примеры
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
Создает сопоставление ключей или значений. Все ключи и значения должны быть одного типа. Если элементы не указаны, по умолчанию используется сопоставление строк с типом строки. То же, что и оператор создания [ -> ]
. Ключи и значения должны чередоваться.
associate('fruit', 'apple', 'vegetable', 'carrot' )=> ['fruit' -> 'apple', 'vegetable' -> 'carrot']
at
at(<value1> : array/map, <value2> : integer/key type) => array
Находит элемент в индексе массива. Индекс основан на 1. Индекс вне допустимого диапазона возвращает значение NULL. Находит значение в сопоставлении с заданным ключом. Если ключ не найден, он возвращает значение NULL.
at(['apples', 'pears'], 1) => 'apples'
at(['fruit' -> 'apples', 'vegetable' -> 'carrot'], 'fruit') => 'apples'
atan
atan(<value1> : number) => double
Вычисляет значение арктангенса.
atan(0) -> 0.0
atan2
atan2(<value1> : number, <value2> : number) => double
Возвращает угол в радианах между положительной осью x плоскости и точкой, заданной координатами.
atan2(0, 0) -> 0.0
avg
avg(<value1> : number) => number
Возвращает среднее значение столбца.
avg(sales)
avgIf
avgIf(<value1> : boolean, <value2> : number) => number
Возвращает среднее значение столбца на основе критериев.
avgIf(region == 'West', sales)
Б
between
between(<value1> : any, <value2> : any, <value3> : any) => boolean
Проверяет, находится ли первое значение между двумя другими значениями включительно. Можно сравнить числовые, строковые и значения даты и времени.
between(10, 5, 24)
true
between(currentDate(), currentDate() + 10, currentDate() + 20)
false
bitwiseAnd
bitwiseAnd(<value1> : integral, <value2> : integral) => integral
Побитовый оператор "И" для целочисленных типов. То же, что и оператор >
bitwiseAnd(0xf4, 0xef)
0xe4
(0xf4 & 0xef)
0xe4
bitwiseOr
bitwiseOr(<value1> : integral, <value2> : integral) => integral
Побитовый оператор "ИЛИ" для целочисленных типов. То же, что и | оператор
bitwiseOr(0xf4, 0xef)
0xff
(0xf4 | 0xef)
0xff
bitwiseXor
bitwiseXor(<value1> : any, <value2> : any) => any
Побитовый оператор "ИЛИ" для целочисленных типов. То же, что и | оператор
bitwiseXor(0xf4, 0xef)
0x1b
(0xf4 ^ 0xef)
0x1b
(true ^ false)
true
(true ^ true)
false
blake2b
blake2b(<value1> : integer, <value2> : any, ...) => string
Вычисляет дайджест Blake2 набора столбцов различных примитивных типов данных с заданной битовой длиной, которая может быть несколько 8 от 8 до 512. Может использоваться для вычисления отпечатка строки.
blake2b(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
'c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d'
blake2bBinary
blake2bBinary(<value1> : integer, <value2> : any, ...) => binary
Вычисляет дайджест Blake2 набора столбцов различных примитивных типов данных с заданной битовой длиной, которая может быть несколько 8 от 8 до 512. Может использоваться для вычисления отпечатка строки.
blake2bBinary(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4'))
unHex('c9521a5080d8da30dffb430c50ce253c345cc4c4effc315dab2162dac974711d')
byItem
byItem(<parent column> : any, <column name> : string) => any
Поиск вложенного элемента в структуре или массиве структур. Если найдено несколько совпадений, то возвращается первое совпадение. Если совпадений нет, возвращается значение NULL. Возвращаемое значение должно быть преобразовано одним из действий преобразования типов (? date, ? string ...). Просто адресные имена столбцов, известные во время разработки по их имени. Вычисленные входные данные не поддерживаются, но вы можете использовать подстановку параметров.
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
Выбирает значение столбца по имени в потоке. В качестве второго аргумента вы можете передать необязательное имя потока. Если найдено несколько совпадений, то возвращается первое совпадение. Если совпадений нет, возвращается значение NULL. Возвращаемое значение должно быть преобразовано одним из функций преобразования типов (TO_DATE, TO_STRING ...). Просто адресные имена столбцов, известные во время разработки по их имени. Вычисленные входные данные не поддерживаются, но вы можете использовать подстановку параметров.
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
Выберите массив столбцов по имени в потоке. В качестве второго аргумента вы можете передать необязательное имя потока. Если найдено несколько совпадений, то возвращается первое совпадение. Если для столбца нет совпадений, все выходные данные имеют значение NULL. Возвращаемое значение требует функции преобразования типов (toDate, toString, ...). Просто адресные имена столбцов, известные во время разработки по их имени. Вычисленные входные данные не поддерживаются, но вы можете использовать подстановку параметров.
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
Выбирает значение столбца по имени в исходном потоке. Вторым аргументом является имя исходного потока. Если найдено несколько совпадений, то возвращается первое совпадение. Если совпадений нет, возвращается значение NULL. Возвращаемое значение должно быть преобразовано одним из функций преобразования типов (TO_DATE, TO_STRING ...). Просто адресные имена столбцов, известные во время разработки по их имени. Вычисленные входные данные не поддерживаются, но вы можете использовать подстановку параметров.
toString(byOrigin('ancestor', 'ancestorStream'))
byOrigins
byOrigins(<column names> : array, [<origin stream name> : string]) => any
Выбирает массив столбцов по имени в потоке. Второй аргумент указывает исходный поток. Если найдено несколько совпадений, то возвращается первое совпадение. Если совпадений нет, возвращается значение NULL. Возвращаемое значение должно быть преобразовано одним из функций преобразования типов (TO_DATE, TO_STRING ...). Просто адресные имена столбцов, известные во время разработки по их имени. Вычисленные входные данные не поддерживаются, но вы можете использовать подстановку параметров.
toString(byOrigins(['ancestor1', 'ancestor2'], 'ancestorStream'))
byPath
byPath(<value1> : string, [<streamName> : string]) => any
Находит иерархический путь по имени в потоке. В качестве второго аргумента вы можете передать необязательное имя потока. Если такой путь не найден, возвращается значение NULL. Имена столбцов и пути, известные во время разработки, должны указываться только по имени или нотации пути с точками. Вычисленные входные данные не поддерживаются, но вы можете использовать подстановку параметров.
byPath('grandpa.parent.child') => column
byPosition
byPosition(<position> : integer) => any
Выбирает значение столбца по относительной позиции (1 на основе) в потоке. Возвращает значение NULL, если расположение находится вне допустимого диапазона. Возвращаемое значение должно быть преобразовано одним из функций преобразования типов (TO_DATE, TO_STRING ...). Вычисляемых входных данных не поддерживаются, но можно использовать подстановки параметров.
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
На основе чередующихся условий применяется одно или другое значение. Если входные числа четные, другим значением для последнего условия по умолчанию является NULL.
case(10 + 20 == 30, 'dumbo', 'gumbo') -> 'dumbo'
case(10 + 20 == 25, 'bojjus', 'do' < 'go', 'gunchus') -> 'gunchus'
isNull(case(10 + 20 == 25, 'bojjus', 'do' > 'go', 'gunchus')) -> true
case(10 + 20 == 25, 'bojjus', 'do' > 'go', 'gunchus', 'dumbo') -> 'dumbo'
cbrt
cbrt(<value1> : number) => double
Вычисляет кубический корень числа.
cbrt(8) -> 2.0
ceil
ceil(<value1> : number) => number
Возвращает наименьшее целое число, не меньшее заданного числа.
ceil(-0.1) -> 0
char
char(<Input> : number) => string
Возвращает символ ascii, представленный входным номером. Если число больше 256, результат эквивалентен char(число % 256)
char(65) -> 'A'
char(97) -> 'a'
coalesce
coalesce(<value1> : any, ...) => any
Возвращает из набора входных данных первое значение, не равное NULL. Все входные данные должны быть одного типа.
coalesce(10, 20) -> 10
coalesce(toString(null), toString(null), 'dumbo', 'bo', 'go') -> 'dumbo'
collect
collect(<value1> : any) => array
Собирает все значения выражения в агрегированной группе в массив. Во время этого процесса структуры можно собирать и преобразовывать в альтернативные структуры. Число элементов равно количеству строк в этой группе и может содержать значения NULL. Количество собранных элементов должно быть небольшим.
collect(salesPerson)
collect(firstName + lastName))
collect(@(name = salesPerson, sales = salesAmount) )
collectUnique
collectUnique(<value1> : any) => array
Собирает все значения выражения в агрегированной группе в уникальный массив. Во время этого процесса структуры можно собирать и преобразовывать в альтернативные структуры. Число элементов равно количеству строк в этой группе и может содержать значения NULL. Количество собранных элементов должно быть небольшим.
collect(salesPerson)
collect(firstName + lastName))
collect(@(name = salesPerson, sales = salesAmount) )
columnNames
columnNames(<значение1>
columnNames( : string, i><значение1> : boolean) => array
Получает имена всех выходных столбцов для потока. В качестве первого аргумента вы можете передать необязательное имя потока. Второй аргумент также является необязательным и по умолчанию имеет значение false. При установке второго аргумента true()
фабрика данных возвращает только столбцы, которые смещение схемы смещением схемы.
columnNames()
columnNames('DeriveStream')
columnNames('DeriveStream', true())
columnNames('', true())
columns
columns([<stream name> : string]) => any
Получает значения всех выходных столбцов для потока. В качестве второго аргумента вы можете передать необязательное имя потока.
columns()
columns('DeriveStream')
compare
compare(<value1> : any, <value2> : any) => integer
Сравнивает два значения одного типа. Возвращает отрицательное целое число, если значение1 < значение2, 0 — если значение1 == значение2, и положительное значение, если значение1 > значение2.
(compare(12, 24) < 1) -> true
(compare('dumbo', 'dum') > 0) -> true
concat
concat(<this> : string, <that> : string, ...) => string
Объединяет переменное количество строк. Аналогично оператору + со строками.
concat('dataflow', 'is', 'awesome') -> 'dataflowisawesome'
'dataflow' + 'is' + 'awesome' -> 'dataflowisawesome'
isNull('sql' + null) -> true
concatWS
concatWS(<separator> : string, <this> : string, <that> : string, ...) => string
Объединяет переменное количество строк с использованием разделителя. Первый параметр — это разделитель.
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
Возвращает значение true, если какой-либо элемент в указанном массиве оценивается как true в предоставленном предикате. Функция Contains ожидает ссылку на один элемент в функции предиката в качестве #item.
contains([1, 2, 3, 4], #item == 3) -> true
contains([1, 2, 3, 4], #item > 5) -> false
cos
cos(<value1> : number) => double
Вычисляет значение косинуса.
cos(10) -> -0.8390715290764524
cosh
cosh(<value1> : number) => double
Вычисляет значение гиперболического косинуса.
cosh(0) -> 1.0
count
count([<value1> : any]) => long
Возвращает совокупное количество значений. Если указан один или несколько необязательных столбцов, он игнорирует значения NULL в счетчике.
count(custId)
count(custId, custName)
count()
count(iif(isNull(custId), 1, NULL))
countAll
countAll([<value1> : any]) => long
Получение совокупного количества значений, включая значения NULL.
countAll(custId)
countAll()
countDistinct
countDistinct(<value1> : any, [<value2> : any], ...) => long
Возвращает совокупное число различных значений набора столбцов.
countDistinct(custId, custName)
countAllDistinct
countAllDistinct(<value1> : any, [<value2> : any], ...) => long
Получает совокупное количество отдельных значений набора столбцов, включая значения NULL.
countAllDistinct(custId, custName)
countIf
countIf(<value1> : boolean, [<value2> : any]) => long
Возвращает совокупное количество значений на основе критериев. Если указан дополнительный столбец, выражение игнорирует значения NULL в операторе COUNT.
countIf(state == 'CA' && commission < 10000, name)
covariancePopulation
covariancePopulation(<value1> : number, <value2> : number) => double
Возвращает ковариацию по всей совокупности значений двух столбцов.
covariancePopulation(sales, profit)
covariancePopulationIf
covariancePopulationIf(<value1> : boolean, <value2> : number, <value3> : number) => double
Возвращает ковариацию по всей совокупности значений двух столбцов на основе критериев.
covariancePopulationIf(region == 'West', sales)
covarianceSample
covarianceSample(<value1> : number, <value2> : number) => double
Возвращает ковариацию выборки двух столбцов.
covarianceSample(sales, profit)
covarianceSampleIf
covarianceSampleIf(<value1> : boolean, <value2> : number, <value3> : number) => double
Возвращает ковариацию выборки двух столбцов на основе критериев.
covarianceSampleIf(region == 'West', sales, profit)
crc32
crc32(<value1> : any, ...) => long
Вычисляет хэш-код CRC32 набора столбцов различных примитивных типов данных с заданной разрядностью, которая может иметь только значения 0(256), 224, 256, 384, 512. Может использоваться для вычисления отпечатка строки.
crc32(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 3630253689L
cumeDist
cumeDist() => integer
Функция CumeDist вычисляет позицию значения относительно всех значений в разделе. Результатом является количество строк, предшествующих или равных текущей строке в упорядоченном наборе раздела, деленное на общее количество строк в разделе окна. Все значения галстуков в упорядочении оцениваются в той же позиции.
cumeDist()
currentDate
currentDate([<value1> : string]) => date
Возвращает текущую дату начала выполнения этого задания. Вы можете передать дополнительный часовой пояс в формате GMT, PST, UTC, "Острова Кайман". По умолчанию используется локальный часовой пояс центра обработки данных или региона фабрики данных. Доступные форматы приведены в описании класса 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
Возвращает текущую метку времени, когда задание начинает выполняться по местному часовому поясу.
currentTimestamp() == toTimestamp('2250-12-31 12:12:12') -> false
currentUTC
currentUTC([<value1> : string]) => timestamp
Возвращает текущую метку времени в формате UTC. Если вы хотите, чтобы текущее время интерпретировалось в часовом поясе, отличном от часового пояса кластера, дополнительный часовой пояс можно передать в формате "GMT", "PST", "UTC", "America/Cayman". По умолчанию используется текущий часовой пояс. Доступные форматы приведены в описании класса Java SimpleDateFormat
. https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html. Чтобы преобразовать время в формате UTC в другой часовой пояс, используйте 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
Возвращает день месяца для заданной даты.
dayOfMonth(toDate('2018-06-08')) -> 8
dayOfWeek
dayOfWeek(<value1> : datetime) => integer
Возвращает день недели для заданной даты. 1 — воскресенье, 2 — понедельник…, 7 — суббота.
dayOfWeek(toDate('2018-06-08')) -> 6
dayOfYear
dayOfYear(<value1> : datetime) => integer
Возвращает день года для заданной даты.
dayOfYear(toDate('2016-04-09')) -> 100
days
days(<value1> : integer) => long
Длительность в миллисекундах для количества дней.
days(2) -> 172800000L
decode
decode(<Input> : any, <Charset> : string) => binary
Декодирует закодированные входные данные в строку на основе заданного набора символов. Второй (необязательный) аргумент можно использовать для указания используемого набора символов : US-ASCII, ISO-8859-1, UTF-8 (по умолчанию), UTF-16BE, UTF-16LE, UTF-16LE, UTF-16.
decode(array(toByte(97),toByte(98),toByte(99)), 'US-ASCII') -> abc
degrees
degrees(<value1> : number) => double
Преобразует радианы в градусы.
degrees(3.141592653589793) -> 180
denseRank
denseRank() => integer
Вычисляет ранг значения в группе значений, указанных в предложении order by окна. Результатом является единица плюс количество строк, предшествующих или равных текущей строке в упорядоченном наборе раздела. Значения не создают пробелы в последовательности. Функция denseRank работает, даже если данные не отсортированы, и ищет изменения в значениях.
denseRank()
distinct
distinct(<value1> : array) => array
Возвращает отдельный набор элементов из массива.
distinct([10, 20, 30, 10]) => [10, 20, 30]
divide
divide(<value1> : any, <value2> : any) => any
Делит пару чисел. Аналогично оператору /
.
divide(20, 10) -> 2
20 / 10 -> 2
dropLeft
dropLeft(<value1> : string, <value2> : integer) => string
Удаляет столько же символов с левого конца строки. Если запрошенная операция удаления превышает длину строки, возвращается пустая строка.
- dropLeft('bojjus', 2) => 'jjus'
- dropLeft('cake', 10) => ''
dropRight
dropRight(<value1> : string, <value2> : integer) => string
Удаляет столько же символов с правого конца строки. Если запрошенная операция удаления превышает длину строки, возвращается пустая строка.
- dropRight('bojjus', 2) => 'bojj'
- dropRight('cake', 10) => ''
E
encode
encode(<Input> : string, <Charset> : string) => binary
Кодирует входные строковые данные в двоичный файл на основе charset. Второй (необязательный) аргумент можно использовать для указания используемого набора символов : US-ASCII, ISO-8859-1, UTF-8 (по умолчанию), UTF-16BE, UTF-16LE, UTF-16LE, UTF-16.
encode('abc', 'US-ASCII') -> array(toByte(97),toByte(98),toByte(99))
endsWith
endsWith(<string> : string, <substring to check> : string) => boolean
Проверяет, заканчивается ли строка предоставленной строкой.
endsWith('dumbo', 'mbo') -> true
equals
equals(<value1> : any, <value2> : any) => boolean
Оператор сравнения на равенство. Аналогично оператору ==.
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
Оператор сравнения на равенство без учета регистра. Аналогично оператору <=>.
'abc'<=>'Abc' -> true
equalsIgnoreCase('abc', 'Abc') -> true
escape
escape(<string_to_escape> : string, <format> : string) => string
Экранирует строку в соответствии с форматом. Литеральные значения допустимого формата: "json", "xml", "ecmascript", "html", "java".
except
except(<value1> : array, <value2> : array) => array
Возвращает набор отличий одного массива от другого, удаляя дубликаты.
except([10, 20, 30], [20, 40]) => [10, 30]
expr
expr(<expr> : string) => any
Преобразовывает строку в выражение. Это то же самое, что написание этого выражения в нелитеральной форме. Это можно использовать для передачи параметров в виде строк.
- expr('price * discount') => any
F
factorial
factorial(<value1> : number) => long
Вычисляет факториал числа.
factorial(5) -> 120
false
false() => boolean
Всегда возвращает значение false. Используйте функцию syntax(false())
, если есть столбец с именем false.
(10 + 20 > 30) -> false
(10 + 20 > 30) -> false()
filter
filter(<value1> : array, <value2> : unaryfunction) => array
Фильтрует элементы массива, которые не соответствуют предоставленному предикату. Функция Filter ожидает ссылку на один элемент в функции предиката в качестве #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
Поиск первого элемента в массиве, соответствующего условию. Принимает функцию фильтра, в которой можно указать элемент массива как #item. Для глубоко вложенных сопоставлений можно ссылаться на родительские сопоставления, используя нотацию #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
Возвращает первое значение группы столбцов. Если второй параметр пропускаетNulls, фабрика данных принимает значение false.
first(sales)
first(sales, false)
flatten
flatten(<array> : array, <value2> : array ..., <value2> : boolean) => array
Сводит массив или массивы в единый массив. Массивы атомарных элементов возвращаются без изменений. Последний аргумент является необязательным, и его значение по умолчанию false для рекурсивного сведения при наличии более одного уровня вложенности.
flatten([['bojjus', 'girl'], ['gunchus', 'boy']]) => ['bojjus', 'girl', 'gunchus', 'boy']
flatten([[['bojjus', 'gunchus']]] , true) => ['bojjus', 'gunchus']
floor
floor(<value1> : number) => number
Возвращает наибольшее целое число, не превышающее заданное число.
floor(-0.1) -> -1
fromBase64
fromBase64(<value1> : string, <encoding type> : string) => string
Декодирует заданную строку в кодировке Base64. При необходимости можно передать тип кодировки.
fromBase64('Z3VuY2h1cw==') -> 'gunchus'
fromBase64('SGVsbG8gV29ybGQ=', 'Windows-1252') -> 'Hello World'
fromUTC
fromUTC(<value1> : timestamp, [<value2> : string]) => timestamp
Преобразует в метку времени из времени в формате UTC. При необходимости вы можете передать часовой пояс в формате GMT, PST, UTC, "Острова Кайман". По умолчанию используется текущий часовой пояс. Доступные форматы приведены в описании класса 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
Оператор сравнения "больше". Аналогично оператору >.
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
Оператор сравнения "больше чем или равно". Аналогично оператору >=.
greaterOrEqual(12, 12) -> true
('dumbo' >= 'dum') -> true
greatest
greatest(<value1> : any, ...) => any
Возвращает наибольшее значение из списка значений в качестве пропускающих значения NULL. Возвращает значение NULL, если все входные данные имеют значение 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
Проверяет значение столбца по имени в потоке. В качестве второго аргумента вы можете передать необязательное имя потока. Просто адресные имена столбцов, известные во время разработки по их имени. Вычисленные входные данные не поддерживаются, но вы можете использовать подстановку параметров.
hasColumn('parent')
hasError
hasError([<value1> : string]) => boolean
Проверяет, помечен ли ресурс предоставленным идентификатором как ошибка.
Примеры
hasError('assert1')
hasError('assert2')
hasPath
hasPath(<value1> : string, [<streamName> : string]) => boolean
Проверяет, существует ли определенный иерархический путь, по имени в потоке. В качестве второго аргумента вы можете передать необязательное имя потока. Имена столбцов и пути, известные во время разработки, должны указываться только по имени или нотации пути с точками. Вычисленные входные данные не поддерживаются, но вы можете использовать подстановку параметров.
hasPath('grandpa.parent.child') => boolean
hex
hex(<value1>: binary) => string
Возвращает шестнадцатеричное представление двоичного значения
hex(toBinary([toByte(0x1f), toByte(0xad), toByte(0xbe)])) -> '1fadbe'
hour
hour(<value1> : timestamp, [<value2> : string]) => integer
Возвращает значение часа метки времени. Вы можете передать дополнительный часовой пояс в формате GMT, PST, UTC, "Острова Кайман". По умолчанию используется местный часовой пояс. Доступные форматы приведены в описании класса 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
Длительность в миллисекундах для количества часов.
hours(2) -> 7200000L
I
iif
iif(<condition> : boolean, <true_expression> : any, [<false_expression> : any]) => any
В зависимости от условия применяется одно или другое значение. Если другое не указано, значение считается NULL. Оба значения должны быть совместимыми (числовой, строковой...).
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
При наличии двух или более входных данных возвращает первый элемент, не имеющий значение NULL. Эта функция эквивалентна функции объединения.
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
Проверяет, находится ли элемент в массиве.
in([10, 20, 30], 10) -> true
in(['good', 'kid'], 'bad') -> false
initCap
initCap(<value1> : string) => string
Преобразует первую букву каждого слова в верхний регистр. Слова идентифицируются по разделению пробелами.
initCap('cool iceCREAM') -> 'Cool Icecream'
instr
instr(<string> : string, <substring to find> : string) => integer
Находит позицию (1 на основе) подстроки в строке. Если позиция не найдена, возвращается 0.
instr('dumbo', 'mbo') -> 3
instr('microsoft', 'o') -> 5
instr('good', 'bad') -> 0
intersect
intersect(<value1> : array, <value2> : array) => array
Возвращает набор пересечений отдельных элементов из двух массивов.
intersect([10, 20, 30], [20, 40]) => [20]
isBitSet
isBitSet (<value1> : array, <value2>:integer ) => boolean
Проверяет, задана ли битовая позиция в этом битовом наборе
isBitSet(toBitSet([10, 32, 98]), 10) => true
isBoolean
isBoolean(<value1>: string) => boolean
Проверяет, является ли строковое значение логическим значением в соответствии с правилами toBoolean()
.
isBoolean('true') -> true
isBoolean('no') -> true
isBoolean('microsoft') -> false
isByte
isByte(<value1> : string) => boolean
Проверяет, является ли строковое значение байтовым значением, заданным с использованием необязательного формата в соответствии с правилами toByte()
.
isByte('123') -> true
isByte('chocolate') -> false
isDate
isDate (<value1> : string, [<format>: string]) => boolean
Проверяет, является ли входная строка даты датой, используя необязательный формат входной даты. Доступные форматы приведены в описании SimpleDateFormat в Java. Если формат входной даты не указан, формат по умолчанию — yyyy-[M]M-[d]d
. Допустимые форматы: [ 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
Проверяет, является ли строковое значение десятичным значением, заданным с использованием необязательного формата в соответствии с правилами toDecimal()
isDecimal('123.45') -> true
isDecimal('12/12/2000') -> false
isDelete
isDelete([<value1> : integer]) => boolean
Проверяет, помечена ли строка для удаления. Для преобразований, которые принимают более одного входного потока, можно передавать индекс потока (отсчитываемый от единицы). Индекс потока должен быть равен 1 или 2, а значение по умолчанию — 1.
isDelete()
isDelete(1)
isDistinct
isDistinct(<value1> : any , <value1> : any) => boolean
Определяет, является ли столбец или набор столбцов уникальным. Значение NULL не учитывается в качестве уникального значения.
isDistinct(custId, custName) => boolean
isDouble
isDouble (<value1> : string, [<format>: string]) => boolean
Проверяет, является ли строковое значение значением double, заданным с использованием необязательного формата в соответствии с правилами toDouble()
.
isDouble('123') -> true
isDouble('$123.45' -> '$###.00') -> true
isDouble('icecream') -> false
isError
isError([<value1> : integer]) => boolean
Проверяет, помечена ли строка как ошибка. Для преобразований, которые принимают более одного входного потока, можно передавать индекс потока (отсчитываемый от единицы). Индекс потока должен быть равен 1 или 2, а значение по умолчанию — 1.
isError()
isError(1)
isFloat
isFloat (<value1> : string, [<format>: string]) => boolean
Проверяет, является ли строковое значение числом с плавающей точкой, заданным с использованием необязательного формата в соответствии с правилами toFloat()
.
isFloat('123') -> true
isFloat('$123.45' -> '$###.00') -> true
isFloat('icecream') -> false
isIgnore
isIgnore([<value1> : integer]) => boolean
Проверяет, помечена ли строка для игнорирования. Для преобразований, которые принимают более одного входного потока, можно передавать индекс потока (отсчитываемый от единицы). Индекс потока должен быть равен 1 или 2, а значение по умолчанию — 1.
isIgnore()
isIgnore(1)
isInsert
isInsert([<value1> : integer]) => boolean
Проверяет, помечена ли строка для вставки. Для преобразований, которые принимают более одного входного потока, можно передавать индекс потока (отсчитываемый от единицы). Индекс потока должен быть равен 1 или 2, а значение по умолчанию — 1.
isInsert()
isInsert(1)
isInteger
isInteger (<value1> : string, [<format>: string]) => boolean
Проверяет, является ли строковое значение целым числом, заданным с использованием необязательного формата в соответствии с правилами toInteger()
.
isInteger('123') -> true
isInteger('$123' -> '$###') -> true
isInteger('microsoft') -> false
isLong
isLong (<value1> : string, [<format>: string]) => boolean
Проверяет, является ли строковое значение числом long, заданным с использованием необязательного формата в соответствии с правилами toLong()
.
isLong('123') -> true
isLong('$123' -> '$###') -> true
isLong('gunchus') -> false
isMatch
isMatch([<value1> : integer]) => boolean
Проверяет соответствие строки при поиске. Для преобразований, которые принимают более одного входного потока, можно передавать индекс потока (отсчитываемый от единицы). Индекс потока должен быть равен 1 или 2, а значение по умолчанию — 1.
isMatch()
isMatch(1)
isNan
isNan (<value1> : integral) => boolean
Проверяет, не является ли значение числом.
isNan(10.2) => false
isNull
isNull(<value1> : any) => boolean
Проверяет, равно ли значение NULL.
isNull(NULL()) -> true
isNull('') -> false
isShort
isShort (<value1> : string, [<format>: string]) => boolean
Проверяет, является ли строковое значение коротким, заданным с использованием необязательного формата в соответствии с правилами toShort()
isShort('123') -> true
isShort('$123' -> '$###') -> true
isShort('microsoft') -> false
isTimestamp
isTimestamp (<value1> : string, [<format>: string]) => boolean
Проверяет, является ли входная строка даты меткой времени с использованием необязательного формата входной метки времени. Доступные форматы приведены в описании SimpleDateFormat в Java. Если метка времени опущена, используется формат по умолчанию: yyyy-[M]M-[d]d hh:mm:ss[.f...]
. Вы можете передать дополнительный часовой пояс в формате GMT, PST, UTC, "Острова Кайман". Метка времени поддерживает точность до миллисекунд и значение до 999. Доступные форматы приведены в описании SimpleDateFormat в Java.
isTimestamp('2016-12-31 00:12:00') -> true
isTimestamp('2016-12-31T00:12:00' -> 'yyyy-MM-dd\\'T\\'HH:mm:ss' -> 'PST') -> true
isTimestamp('2012-8222.18') -> false
isUpdate
isUpdate([<value1> : integer]) => boolean
Проверяет, помечена ли строка для обновления. Для преобразований, которые принимают более одного входного потока, можно передавать индекс потока (отсчитываемый от единицы). Индекс потока должен быть равен 1 или 2, а значение по умолчанию — 1.
isUpdate()
isUpdate(1)
isUpsert
isUpsert([<value1> : integer]) => boolean
Проверяет, помечена ли строка для вставки. Для преобразований, которые принимают более одного входного потока, можно передавать индекс потока (отсчитываемый от единицы). Индекс потока должен быть равен 1 или 2, а значение по умолчанию — 1.
isUpsert()
isUpsert(1)
J
jaroWinkler
jaroWinkler(<value1> : string, <value2> : string) => double
Вычисляет расстояние Джаро — Винклера между двумя строками.
jaroWinkler('frog', 'frog') => 1.0
тыс.
keyValues
keyValues(<value1> : array, <value2> : array) => map
Создает сопоставление ключей или значений. Первый параметр является массивом ключей, а второй — массивом значений. Оба массива должны иметь одинаковую длину.
keyValues(['bojjus', 'appa'], ['gunchus', 'ammi']) => ['bojjus' -> 'gunchus', 'appa' -> 'ammi']
kurtosis
kurtosis(<value1> : number) => double
Возвращает эксцесс столбца.
kurtosis(sales)
kurtosisIf
kurtosisIf(<value1> : boolean, <value2> : number) => double
Возвращает эксцесс столбца на основе критериев.
kurtosisIf(region == 'West', sales)
L
lag
lag(<value> : any, [<number of rows to look before> : number], [<default value> : any]) => any
Возвращает значение первого параметра, вычислившего n строк перед текущей строкой. Второй параметр — это количество строк для ретроспективного анализа, значение по умолчанию — 1. При наличии небольшого количества строк возвращается значение NULL, если не указано значение по умолчанию.
lag(amount, 2)
lag(amount, 2000, 100)
last
last(<value1> : any, [<value2> : boolean]) => any
Возвращает последнее значение группы столбцов. Если второй параметр ignoreNulls опущен, считается, что он имеет значение false.
last(sales)
last(sales, false)
lastDayOfMonth
lastDayOfMonth(<value1> : datetime) => date
Возвращает последний день месяца для заданной даты.
lastDayOfMonth(toDate('2009-01-12')) -> toDate('2009-01-31')
lead
lead(<value> : any, [<number of rows to look after> : number], [<default value> : any]) => any
Возвращает значение первого параметра, вычислившего n строк после текущей строки. Второй параметр — это количество строк, идущих после текущей, значение по умолчанию — 1. При наличии небольшого количества строк возвращается значение NULL, если не указано значение по умолчанию.
lead(amount, 2)
lead(amount, 2000, 100)
least
least(<value1> : any, ...) => any
Оператор сравнения "меньше чем или равно". Аналогично оператору <=.
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
Извлекает подстроку, начиная с индекса 1, с необходимым количеством знаков. Аналогично выражению SUBSTRING(str, 1, n).
left('bojjus', 2) -> 'bo'
left('bojjus', 20) -> 'bojjus'
length
length(<value1> : string) => integer
Возвращает длину строки.
length('dumbo') -> 5
lesser
lesser(<value1> : any, <value2> : any) => boolean
Оператор сравнения "меньше". Аналогично оператору <.
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
Оператор сравнения "меньше чем или равно". Аналогично оператору <=.
lesserOrEqual(12, 12) -> true
('dumbo' <= 'dum') -> false
levenshtein
levenshtein(<from string> : string, <to string> : string) => integer
Вычисляет расстояние Левенштейна между двумя строками.
levenshtein('boys', 'girls') -> 4
like
like(<string> : string, <pattern match> : string) => boolean
Шаблон представляет собой строку, которая сопоставляется буквально. Исключения являются следующими специальными символами: _ соответствует любому символу в входных данных (аналогично. В posix
регулярных выражениях % соответствует нулю или нескольким символам входных данных (аналогично posix
.*
регулярным выражениям).
Escape-символом является ''. Если escape-символ предшествует специальному символу или другому escape-символу, следующий знак сопоставляется буквально. Недопустимо экранировать любые другие знаки.
like('icecream', 'ice%') -> true
locate
locate(<substring to find> : string, <string> : string, [<from index - 1-based> : integral]) => integer
Находит позицию (1 на основе) подстроки в строке, начиная с определенной позиции. Если позиция опущена, то она отсчитывается с начала строки. Если позиция не найдена, возвращается 0.
locate('mbo', 'dumbo') -> 3
locate('o', 'microsoft', 6) -> 7
locate('bad', 'good') -> 0
log
log(<value1> : number, [<value2> : number]) => double
Вычисляет значение логарифма. Вы можете предоставить необязательное основание, иначе используется число Эйлера.
log(100, 10) -> 2
log10
log10(<value1> : number) => double
Вычисляет значение логарифма с основанием 10.
log10(100) -> 2
lookup
lookup(key, key2, ...) => complex[]
Ищет первую строку из кэшированного приемника, используя указанные ключи, которые соответствуют ключам из кэшированного приемника.
cacheSink#lookup(movieId)
lower
lower(<value1> : string) => string
Преобразовывает строку в нижний регистр.
lower('GunChus') -> 'gunchus'
lpad
lpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
Слева дополняет строку прилагаемым отступом определенной длины. Если строка соответствует заданной длине или превышает ее, она обрезается до этой длины.
lpad('dumbo', 10, '-') -> '-----dumbo'
lpad('dumbo', 4, '-') -> 'dumb'
ltrim
ltrim(<string to trim> : string, [<trim characters> : string]) => string
Обрезает строку начальных знаков слева. Если второй параметр не указан, удаляются пробелы. В противном случае обрезается любой знак, указанный во втором параметре.
ltrim(' dumbo ') -> 'dumbo '
ltrim('!--!du!mbo!', '-!') -> 'du!mbo!'
Пн.
map
map(<value1> : array, <value2> : unaryfunction) => any
Сопоставляет каждый элемент массива с новым элементом, используя предоставленное выражение. Функция map ожидает ссылку на один элемент в функции выражения в качестве #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
Преобразует сопоставление путем связывания ключей с новыми значениями. Возвращает массив. Принимает функцию сопоставления, в которой можно обращаться к элементу как #key, а к текущему значению — как #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
Условно сопоставляет массив с другим массивом с той же или меньшей длиной. Значения могут принадлежать к любому типу данных, включая structTypes. Принимает функцию сопоставления, в которой можно указать элемент массиве как #item, а текущий индекс как #index. Для глубоко вложенных сопоставлений можно ссылаться на родительские сопоставления, используя нотацию #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
Сопоставляет каждый элемент массива с новым элементом, используя предоставленное выражение. Функция map ожидает ссылку на один элемент в функции выражения в качестве #item, а также ссылку на индекс элемента в качестве #index.
mapIndex([1, 2, 3, 4], #item + 2 + #index) -> [4, 6, 8, 10]
mapLoop
mapLoop(<value1> : integer, <value2> : unaryfunction) => any
Перебирает от 1 до length, чтобы создать массив этой длины. Принимает функцию сопоставления, в которой можно указать индекс в массиве как #index. Для глубоко вложенных сопоставлений можно ссылаться на родительские сопоставления, используя нотацию #index_n(#index_1, #index_2...).
mapLoop(3, #index * 10) -> [10, 20, 30]
max
max(<value1> : any) => any
Возвращает максимальное значение столбца.
max(sales)
maxIf
maxIf(<value1> : boolean, <value2> : any) => any
Возвращает максимальное значение столбца на основе критериев.
maxIf(region == 'West', sales)
md5
md5(<value1> : any, ...) => string
Вычисляет хэш-код MD5 набора столбцов с различными типами данных и возвращает шестнадцатеричную строку из 32 знаков. Может использоваться для вычисления отпечатка строки.
md5(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '4ce8a880bd621a1ffad0bca905e1bc5a'
mean
mean(<value1> : number) => number
Возвращает среднее значение столбца. Аналогично оператору AVG.
mean(sales)
meanIf
meanIf(<value1> : boolean, <value2> : number) => number
Возвращает среднее значение столбца на основе критериев. Аналогично оператору avgIf.
meanIf(region == 'West', sales)
millisecond
millisecond(<value1> : timestamp, [<value2> : string]) => integer
Возвращает значение миллисекунды даты. Вы можете передать дополнительный часовой пояс в формате GMT, PST, UTC, "Острова Кайман". По умолчанию используется местный часовой пояс. Доступные форматы приведены в описании класса 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
Длительность в миллисекундах для количества миллисекунд.
milliseconds(2) -> 2L
min
min(<value1> : any) => any
Возвращает минимальное значение столбца.
min(sales)
minIf
minIf(<value1> : boolean, <value2> : any) => any
Возвращает минимальное значение столбца на основе критериев.
minIf(region == 'West', sales)
minus
minus(<value1> : any, <value2> : any) => any
Вычитает числа. Вычитает количество дней из даты. Вычитает длительность из метки времени. Вычитает две метки времени, чтобы получить разницу в миллисекундах. Аналогично оператору -.
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
Возвращает значение минуты метки времени. Вы можете передать дополнительный часовой пояс в формате GMT, PST, UTC, "Острова Кайман". По умолчанию используется местный часовой пояс. Доступные форматы приведены в описании класса 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
Длительность в миллисекундах для количества минут.
minutes(2) -> 120000L
mlookup
mlookup(key, key2, ...) => complex[]
Ищет все совпадающие строки из кэшированного приемника, используя указанные ключи, которые соответствуют ключам из кэшированного приемника.
cacheSink#mlookup(movieId)
mod
mod(<value1> : any, <value2> : any) => any
Модуль пары чисел. Аналогично оператору %.
mod(20, 8) -> 4
20 % 8 -> 4
month
month(<value1> : datetime) => integer
Возвращает значение месяца даты или метки времени.
month(toDate('2012-8-8')) -> 8
monthsBetween
monthsBetween(<from date/timestamp> : datetime, <to date/timestamp> : datetime, [<roundoff> : boolean], [<time zone> : string]) => double
Возвращает количество месяцев между двумя датами. Результат вычисления можно округлить. Вы можете передать дополнительный часовой пояс в формате GMT, PST, UTC, "Острова Кайман". По умолчанию используется местный часовой пояс. Доступные форматы приведены в описании класса 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
Умножает пару чисел. Аналогично оператору *.
multiply(20, 10) -> 200
20 * 10 -> 200
N
negate
negate(<value1> : number) => number
Инвертирует число. Преобразовывает положительные числа в отрицательные и наоборот.
negate(13) -> -13
nextSequence
nextSequence() => long
Возвращает следующую уникальную последовательность. Число является последовательным только в пределах секции и начинается с префикса в виде идентификатора секции.
nextSequence() == 12313112 -> false
normalize
normalize(<String to normalize> : string) => string
Нормализирует значение строки для разделения диакритических знаков Юникода.
regexReplace(normalize('bo²s'), `\p{M}`, '') -> 'boys'
not
not(<value1> : boolean) => boolean
Оператор логического отрицания.
not(true) -> false
not(10 == 20) -> true
notEquals
notEquals(<value1> : any, <value2> : any) => boolean
Оператор сравнения на неравенство. Аналогично оператору !=.
12 != 24 -> true
'bojjus' != 'bo' + 'jjus' -> false
nTile
nTile([<value1> : integer]) => integer
Функция NTile
делит строки для каждого раздела окна на n
групп от 1 до n
. Значения сегментов будут отличаться максимум на 1. Если количество строк в разделе не делится поровну на количество сегментов, то остальные значения распределяются по одному на сегмент, начиная с первого. Функция NTile
полезна для расчета tertiles
, квартилей, децилей и других общих сводных статистических данных. Функция вычисляет две переменные во время инициализации: размер обычного контейнера будет содержать одну дополнительную строку, добавленную в нее. Обе переменные зависят от размера текущего раздела. В процессе вычисления функция отслеживает текущее число строк, номер текущего сегмента и номер строки, на которой изменяется сегмент (bucketThreshold). Когда текущий номер строки достигает порога сегмента, значение сегмента увеличивается на единицу, а порог увеличивается на размер сегмента (плюс единица, если текущий сегмент заполняется).
nTile()
nTile(numOfBuckets)
null
null() => null
Возвращает значение NULL. Используйте функцию syntax(null())
, если есть столбец с именем null. Любая операция, которая использует этот столбец, будет возвращать значение 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
Логический оператор ИЛИ. Аналогично оператору ||.
or(true, false) -> true
true || false -> true
originColumns
originColumns(<streamName> : string) => any
Возвращает все выходные столбцы для исходного потока, в котором они были созданы. Необходимо обернуть в другую функцию.
array(toString(originColumns('source1')))
output
output() => any
Возвращает первую строку результатов приемника кэша
cacheSink#output()
outputs
output() => any
Возвращает весь выходной набор строк результатов приемника кэша
cacheSink#outputs()
P
partitionId
partitionId() => integer
Возвращает идентификатор текущей секции, в которой находится входная строка.
partitionId()
pMod
pMod(<value1> : any, <value2> : any) => any
Положительный модуль пары чисел.
pmod(-20, 8) -> 4
power
power(<value1> : number, <value2> : number) => double
Возводит одно число в степень другого.
power(10, 2) -> 100
R
radians
radians(<value1> : number) => double
Преобразует градусы в радианы
radians(180) => 3.141592653589793
random
random(<value1> : integral) => long
Возвращает случайное число при заданном необязательном начальном значении в секции. Начальное значение должно быть фиксированным значением. Оно используется в сочетании с partitionId для получения случайных значений.
random(1) == 1 -> false
rank
rank() => integer
Вычисляет ранг значения в группе значений, указанных в предложении order by окна. Результатом является единица плюс количество строк, предшествующих или равных текущей строке в упорядоченном наборе раздела. Значения будут создавать промежутки в последовательности. Функция Rank работает, даже если данные не отсортированы, и ищет изменения в значениях.
rank()
reassociate
reassociate(<value1> : map, <value2> : binaryFunction) => map
Преобразует сопоставление путем связывания ключей с новыми значениями. Принимает функцию сопоставления, в которой можно обращаться к элементу как #key, а к текущему значению — как #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
Накапливает элементы в массиве. Функция reduce ожидает ссылку на аккумулятор и один элемент в первой функции выражения в качестве #acc и #item и ожидает, что результирующее значение #result будет использоваться во второй функции выражения.
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
Извлекает соответствующую подстроку для данного шаблона регулярного выражения. Последний параметр идентифицирует группу для сопоставления и, если не указан, по умолчанию равен 1. Используйте <regex>
(обратные кавычки) для сопоставления строки без экранирования. Индекс 0 возвращает все совпадения. Без сопоставленных групп индекс 1 и выше не вернет никакого результата.
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
Проверяет, соответствует ли строка заданному шаблону регулярного выражения. Используйте <regex>
(обратные кавычки) для сопоставления строки без экранирования.
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
Заменяет все вхождения шаблона регулярного выражения другой подстрокой в данной строке. Используйте <regex>
(обратные кавычки), чтобы сопоставить строку без экранирования.
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
Разбивает строку по разделителю на основе регулярного выражения и возвращает массив строк.
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
Заменяет все вхождения подстроки другой подстрокой в заданной строке. Если параметр не указан, по умолчанию он равен пустой сроке.
replace('doggie dog', 'dog', 'cat') -> 'catgie cat'
replace('doggie dog', 'dog', '') -> 'gie '
replace('doggie dog', 'dog') -> 'gie '
reverse
reverse(<value1> : string) => string
Обращает порядок строки.
reverse('gunchus') -> 'suhcnug'
right
right(<string to subset> : string, <number of characters> : integral) => string
Извлекает подстроку с количеством знаков справа. Аналогично выражению SUBSTRING(str, LENGTH(str) - n, n).
right('bojjus', 2) -> 'us'
right('bojjus', 20) -> 'bojjus'
rlike
rlike(<string> : string, <pattern match> : string) => boolean
Проверяет, соответствует ли строка заданному шаблону регулярного выражения.
rlike('200.50', `(\d+).(\d+)`) -> true
rlike('bogus', `M[0-9]+.*`) -> false
round
round(<number> : number, [<scale to round> : number], [<rounding option> : integral]) => double
Округляет число с учетом дополнительного масштаба и режима округления. Если масштаб не указан, по умолчанию используется значение 0. Если режим не указан, по умолчанию используется значение ROUND_HALF_UP(5). Возможно округление значений.
- ROUND_UP — режим округления до нуля.
- ROUND_DOWN — режим округления до нуля.
- ROUND_CEILING — режим округления в направлении положительной бесконечности. [То же, что и ROUND_UP, если входные данные являются положительными. Если отрицательный, ведет себя как ROUND_DOWN. Ex = -1.1 будет -1.0 с ROUND_CEILING и -2 с ROUND_UP]
- ROUND_FLOOR — режим округления в направлении отрицательной бесконечности. [То же, что и ROUND_DOWN, если входные данные являются положительными. Если отрицательный, ведет себя как ROUND_UP]
- ROUND_HALF_UP — циклический режим округления в сторону "ближайшего соседа", если оба соседа не эквивалентны, в этом случае ROUND_UP. [Наиболее распространенный + по умолчанию для потока данных].
- ROUND_HALF_DOWN — циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае ROUND_DOWN.
- ROUND_HALF_EVEN - Циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае округляются к даже соседу.
- ROUND_UNNECESSARY — режим округления для утверждения о том, что операция округления имеет точный результат, поэтому округление не требуется.
round(100.123) -> 100.0
round(2.5, 0) -> 3.0
round(5.3999999999999995, 2, 7) -> 5.40
rowNumber
rowNumber() => integer
Назначает последовательную нумерацию строк для строк в окне, начиная с 1.
rowNumber()
rpad
rpad(<string to pad> : string, <final padded length> : integral, <padding> : string) => string
Дополняет строку прилагаемым отступом справа до достижения определенной длины. Если строка соответствует заданной длине или превышает ее, она обрезается до этой длины.
rpad('dumbo', 10, '-') -> 'dumbo-----'
rpad('dumbo', 4, '-') -> 'dumb'
rpad('dumbo', 8, '<>') -> 'dumbo<><'
rtrim
rtrim(<string to trim> : string, [<trim characters> : string]) => string
Обрезает строку конечных знаков справа. Если второй параметр не указан, удаляются пробелы. В противном случае обрезается любой знак, указанный во втором параметре.
rtrim(' dumbo ') -> ' dumbo'
rtrim('!--!du!mbo!', '-!') -> '!--!du!mbo'
S
second
second(<value1> : timestamp, [<value2> : string]) => integer
Возвращает второе значение даты. Вы можете передать дополнительный часовой пояс в формате GMT, PST, UTC, "Острова Кайман". По умолчанию используется местный часовой пояс. Доступные форматы приведены в описании класса 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
Длительность в миллисекундах для количества секунд.
seconds(2) -> 2000L
setBitSet
setBitSet (<value1>: array, <value2>:array) => array
Задает битовые позиции в этом битовом наборе
setBitSet(toBitSet([10, 32]), [98]) => [4294968320L, 17179869184L]
sha1
sha1(<value1> : any, ...) => string
Вычисляет хэш-код SHA-1 набора столбцов с различными типами данных и возвращает шестнадцатеричную строку из 40 знаков. Может использоваться для вычисления отпечатка строки.
sha1(5, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> '46d3b478e8ec4e1f3b453ac3d8e59d5854e282bb'
sha2
sha2(<value1> : integer, <value2> : any, ...) => string
Вычисляет хэш-код SHA-2 набора столбцов различных примитивных типов данных с заданной разрядностью, которая может иметь только значения 0(256), 224, 256, 384, 512. Может использоваться для вычисления отпечатка строки.
sha2(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 'afe8a553b1761c67d76f8c31ceef7f71b66a1ee6f4e6d3b5478bf68b47d06bd3'
sin
sin(<value1> : number) => double
Вычисляет значение синуса.
sin(2) -> 0.9092974268256817
sinh
sinh(<value1> : number) => double
Вычисляет значение гиперболического синуса.
sinh(0) -> 0.0
size
size(<value1> : any) => integer
Определяет размер массива или типа сопоставления.
size(['element1', 'element2']) -> 2
size([1,2,3]) -> 3
skewness
skewness(<value1> : number) => double
Возвращает асимметрию столбца.
skewness(sales)
skewnessIf
skewnessIf(<value1> : boolean, <value2> : number) => double
Возвращает асимметрию столбца на основе критериев.
skewnessIf(region == 'West', sales)
slice
slice(<array to slice> : array, <from 1-based index> : integral, [<number of items> : integral]) => array
Извлекает подмножество массива из позиции. Позиция отсчитывается от единицы. Если длина опущена, то по умолчанию позиция отсчитывается от конца строки.
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
Сортирует массив, используя предоставленную функцию предиката. Функция sort ожидает ссылку на два последовательных элемента в функции выражения в качестве #item1 и #item2.
sort([4, 8, 2, 3], compare(#item1, #item2)) -> [2, 3, 4, 8]
sort(['a3', 'b2', 'c1'], iif(right(#item1, 1) >= right(#item2, 1), 1, -1)) -> ['c1', 'b2', 'a3']
soundex
soundex(<value1> : string) => string
Возвращает код soundex
для строки.
soundex('genius') -> 'G520'
split
split(<string to split> : string, <split characters> : string) => array
Разделяет строку на основе разделителя и возвращает массив строк.
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
Вычисляет квадратный корень числа.
sqrt(9) -> 3
startsWith
startsWith(<string> : string, <substring to check> : string) => boolean
Проверяет, начинается ли строка с предоставленной строки.
startsWith('dumbo', 'du') -> true
stddev
stddev(<value1> : number) => double
Возвращает стандартное отклонение для столбца.
stdDev(sales)
stddevIf
stddevIf(<value1> : boolean, <value2> : number) => double
Возвращает стандартное отклонение для столбца на основе критериев.
stddevIf(region == 'West', sales)
stddevPopulation
stddevPopulation(<value1> : number) => double
Возвращает стандартное отклонение по всей совокупности значений столбца.
stddevPopulation(sales)
stddevPopulationIf
stddevPopulationIf(<value1> : boolean, <value2> : number) => double
Возвращает стандартное отклонение по всей совокупности значений столбца на основе критериев.
stddevPopulationIf(region == 'West', sales)
stddevSample
stddevSample(<value1> : number) => double
Возвращает выборочное стандартное отклонение для столбца.
stddevSample(sales)
stddevSampleIf
stddevSampleIf(<value1> : boolean, <value2> : number) => double
Возвращает выборочное стандартное отклонение для столбца на основе критериев.
stddevSampleIf(region == 'West', sales)
subDays
subDays(<date/timestamp> : datetime, <days to subtract> : integral) => datetime
Вычитает дни из даты или метки времени. Аналогично оператору - для даты.
subDays(toDate('2016-08-08'), 1) -> toDate('2016-08-07')
subMonths
subMonths(<date/timestamp> : datetime, <months to subtract> : integral) => datetime
Вычитает месяцы из даты или метки времени.
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
Извлекает подстроку определенной длины из заданной позиции. Позиция отсчитывается от единицы. Если длина опущена, то по умолчанию позиция отсчитывается от конца строки.
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><разделитель>substringIndex( : string, : string, <количество вхождений разделителя> : integral]) => string
Извлекает подстроку перед count
вхождениями разделителя. Если count
является положительным, возвращается все слева от последнего разделителя (слева направо). Если count
является отрицательным, возвращается все справа от последнего разделителя (справа налево).
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
Возвращает общую сумму числового столбца.
sum(col)
sumDistinct
sumDistinct(<value1> : number) => number
Возвращает общую сумму различных значений числового столбца.
sumDistinct(col)
sumDistinctIf
sumDistinctIf(<value1> : boolean, <value2> : number) => number
Возвращает общую сумму числового столбца на основе критериев. Условие может быть основано на любом столбце.
sumDistinctIf(state == 'CA' && commission < 10000, sales)
sumDistinctIf(true, sales)
sumIf
sumIf(<value1> : boolean, <value2> : number) => number
Возвращает общую сумму числового столбца на основе критериев. Условие может быть основано на любом столбце.
sumIf(state == 'CA' && commission < 10000, sales)
sumIf(true, sales)
T
tan
tan(<value1> : number) => double
Вычисляет значение тангенса.
tan(0) -> 0.0
tanh
tanh(<value1> : number) => double
Вычисляет значение гиперболического тангенса.
tanh(0) -> 0.0
toBase64
toBase64(<value1> : string, <encoding type> : string]) => string
Кодирует указанную строку в формат Base64. При необходимости можно передать тип кодировки.
toBase64('bojjus') -> 'Ym9qanVz'
toBase64('± 25000, € 5.000,- |', 'Windows-1252') -> 'sSAyNTAwMCwggCA1LjAwMCwtIHw='
toBinary
toBinary(<value1> : any) => binary
Преобразовывает все числовые значения, дату, метку времени, строку в двоичное представление.
toBinary(3) -> [0x11]
toBoolean
toBoolean(<value1> : string) => boolean
Преобразовывает значение ('t ", "true", "y" "yes","1") в значение true, ("f", "false", "n", "no","0") в false и значение NULL для любых других значений.
toBoolean('true') -> true
toBoolean('n') -> false
isNull(toBoolean('truthy')) -> true
toByte
toByte(<value> : any, [<format> : string], [<locale> : string]) => byte
Преобразовывает любое числовое или строковое значение в байтовое значение. Для преобразования может использоваться дополнительный десятичный формат Java.
toByte(123)
123
toByte(0xFF)
-1
toByte('123')
123
toDate
toDate(<string> : any, [<date format> : string]) => date
Преобразует строку даты ввода в дату, используя необязательный формат даты ввода. Доступные форматы приведены в описании класса Java SimpleDateFormat
. Если формат даты ввода не указан, формат по умолчанию — гггг-[М]М-[д]д. Допустимые форматы: [ гггг, гггг-[М]М, гггг-[М]М-[д]д, гггг-[М]М-[д]д* ].
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)
Преобразует любое числовое значение или строку в десятичное значение. Если точность и масштаб не указаны, по умолчанию используется значение (10,2). Для преобразования может использоваться дополнительный десятичный формат Java. Необязательный формат языкового стандарта в формате языка BCP47, например en-US, 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
Преобразует любое числовое значение или строку в двойное значение. Для преобразования может использоваться дополнительный десятичный формат Java. Необязательный формат языкового стандарта в формате языка BCP47, например en-US, 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
Преобразует любое числовое или строковое значение в плавающее. Для преобразования может использоваться дополнительный десятичный формат Java. Усекает любое значение double.
toFloat(123.45) -> 123.45f
toFloat('123.45') -> 123.45f
toFloat('$123.45', '$###.00') -> 123.45f
toInteger
toInteger(<value> : any, [<format> : string], [<locale> : string]) => integer
Преобразует любое числовое или строковое значение в целое. Для преобразования может использоваться дополнительный десятичный формат Java. Усекает любое значение long, float, double.
toInteger(123) -> 123
toInteger('123') -> 123
toInteger('$123', '$###') -> 123
toLong
toLong(<value> : any, [<format> : string], [<locale> : string]) => long
Преобразует любое числовое или строковое значение в длинное. Для преобразования может использоваться дополнительный десятичный формат Java. Усекает любое значение float, double.
toLong(123) -> 123
toLong('123') -> 123
toLong('$123', '$###') -> 123
topN
topN(<column/expression> : any, <count> : long, <n> : integer) => array
Возвращает первые N значений для этого столбца на основе аргумента count.
topN(custId, count, 5)
topN(productId, num_sales, 10)
toShort
toShort(<value> : any, [<format> : string], [<locale> : string]) => short
Преобразует любое числовое или строковое значение в короткое. Для преобразования может использоваться дополнительный десятичный формат Java. Усекает любое значение 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
Преобразует примитивный тип данных в строку. Для чисел и даты можно указать формат. Если формат не задан, выбирается значение по умолчанию. Для чисел используется десятичный формат Java, Все возможные форматы даты приведены в описании SimpleDateFormat в Java; формат по умолчанию — гггг-ММ-дд. Для даты или метки времени можно дополнительно указать языковой стандарт.
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
Преобразует строку в метку времени на основе указанного формата метки времени (необязательно). Если метка времени опущена, используется формат по умолчанию: гггг-[М]М-[д]д чч:мм:сс[доля секунды]. Вы можете передать дополнительный часовой пояс в формате GMT, PST, UTC, "Острова Кайман". Метка времени поддерживает точность до миллисекунд и значение до 999. Доступные форматы приведены в описании класса 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
Преобразует метку времени в формат UTC. Вы можете передать дополнительный часовой пояс в формате GMT, PST, UTC, "Острова Кайман". По умолчанию используется текущий часовой пояс. Доступные форматы приведены в описании класса 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
Заменяет один набор знаков другим набором знаков в строке. Знаки заменяются 1 к 1.
translate('(bojjus)', '()', '[]') -> '[bojjus]'
translate('(gunchus)', '()', '[') -> '[gunchus'
trim
trim(<string to trim> : string, [<trim characters> : string]) => string
Обрезает строку начальных и конечных знаков. Если второй параметр не указан, удаляются пробелы. В противном случае обрезается любой знак, указанный во втором параметре.
trim(' dumbo ') -> 'dumbo'
trim('!--!du!mbo!', '-!') -> 'dumbo'
true
true() => boolean
Всегда возвращает истинное значение. Используйте функцию syntax(true())
, если есть столбец с именем true.
(10 + 20 == 30) -> true
(10 + 20 == 30) -> true()
typeMatch
typeMatch(<type> : string, <base type> : string) => boolean
Сопоставляет тип столбца. Можно использовать только в выражениях шаблонов. Число совпадает с коротким, целым числом, длинным, двойным, плавающим или десятичным, целым совпадением коротким, целым числом, длинным, дробным совпадением, с плавающей запятой, десятичным и датой совпадает с типом даты или метки времени.
typeMatch(type, 'number')
typeMatch('date', 'datetime')
U
unescape
unescape(<string_to_escape> : string, <format> : string) => string
Отменяет экранирование строки в соответствии с форматом. Литеральные значения допустимого формата: "json", "xml", "ecmascript", "html", "java".
unescape('{\\\\\"value\\\\\": 10}', 'json')
'{\\\"value\\\": 10}'
unfold
unfold (<value1>: array) => any
Разворачивает массив в набор строк и повторяет значения для оставшихся столбцов в каждой строке
unfold(addresses) => any
unfold( @(name = salesPerson, sales = salesAmount) ) => any
unhex
unhex(<value1>: string) => binary
Преобразовывает шестнадцатеричное строковое представление в двоичное значение. Это можно использовать в сочетании с SHA2 или MD5 для преобразования строки в двоичное значение.
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
Возвращает набор объединения различных элементов из 2 массивов.
union([10, 20, 30], [20, 40]) => [10, 20, 30, 40]
upper
upper(<value1> : string) => string
Преобразовывает строку в верхний регистр.
upper('bojjus') -> 'BOJJUS'
uuid
uuid() => string
Возвращает созданный UUID.
uuid()
V
variance
variance(<value1> : number) => double
Возвращает дисперсию столбца.
variance(sales)
varianceIf
varianceIf(<value1> : boolean, <value2> : number) => double
Возвращает дисперсию столбца на основе критериев.
varianceIf(region == 'West', sales)
variancePopulation
variancePopulation(<value1> : number) => double
Возвращает дисперсию по всей совокупности значений столбца.
variancePopulation(sales)
variancePopulationIf
variancePopulationIf(<value1> : boolean, <value2> : number) => double
Возвращает дисперсию по всей совокупности значений столбца на основе критериев.
variancePopulationIf(region == 'West', sales)
varianceSample
varianceSample(<value1> : number) => double
Возвращает несмещенную дисперсию столбца.
varianceSample(sales)
varianceSampleIf
varianceSampleIf(<value1> : boolean, <value2> : number) => double
Возвращает несмещенную дисперсию столбца на основе критериев.
varianceSampleIf(region == 'West', sales)
Ср.
weekOfYear
weekOfYear(<value1> : datetime) => integer
Возвращает неделю года для заданной даты.
weekOfYear(toDate('2008-02-20')) -> 8
weeks
weeks(<value1> : integer) => long
Длительность в миллисекундах для количества недель.
weeks(2) -> 1209600000L
X
xor
xor(<value1> : boolean, <value2> : boolean) => boolean
Логический оператор XOR. Аналогично оператору ^.
xor(true, false) -> true
xor(true, true) -> false
true ^ false -> true
Y
year
year(<value1> : datetime) => integer
Возвращает значение года даты.
year(toDate('2012-8-8')) -> 2012
Связанный контент
- Список всех агрегатных функций.
- Список всех функций массивов.
- Список всех функций кэшированного поиска.
- Список всех функций преобразования.
- Список всех функций даты и времени.
- Список всех функций выражений.
- Список всех функций сопоставления.
- Список всех метафункций.
- Список всех оконных функций.
- Создание выражений в потоке данных для сопоставления