Применение выражений преобразования данных в потоке данных для сопоставления

Область применения:Фабрика данных 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

Создает сопоставление ключей или значений. Все ключи и значения должны быть одного типа. Если не указано ни одного элемента, по умолчанию используется соответствие строки типу String. То же, что и оператор создания [ -> ]. Ключи и значения должны чередоваться.

  • 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))

О

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(), то ADF возвратит только столбцы, которые смещены посредством смещения схемы.

  • 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.

  • 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))

Входная строка: строка, charset: string) => binary

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

Возвращает первое значение группы столбцов. Если второй параметр ignoreNulls опущен, считается, что он имеет значение 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

Возвращает набор пересечений различных элементов из 2 массивов.

  • 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(<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). Возможно округление значений.

  1. ROUND_UP — режим округления до нуля.
  2. ROUND_DOWN — режим округления до нуля.
  3. ROUND_CEILING — режим округления в направлении положительной бесконечности. [То же, что и ROUND_UP, если входные данные являются положительными. Если отрицательный, ведет себя как ROUND_DOWN. Ex = -1.1 будет -1.0 с ROUND_CEILING и -2 с ROUND_UP]
  4. ROUND_FLOOR — режим округления в направлении отрицательной бесконечности. [То же, что и ROUND_DOWN, если входные данные являются положительными. Если отрицательный, ведет себя как ROUND_UP]
  5. ROUND_HALF_UP — циклический режим округления в сторону "ближайшего соседа", если оба соседа не эквивалентны, в этом случае ROUND_UP. [Наиболее распространенный + по умолчанию для потока данных].
  6. ROUND_HALF_DOWN — циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае ROUND_DOWN.
  7. ROUND_HALF_EVEN - Циклический режим округления к "ближайшему соседу", если оба соседа не эквивалентны, в этом случае округляются к даже соседу.
  8. 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

Сопоставляет тип столбца. Может использоваться только в выражениях шаблонов. Число соответствует типу short, integer, long, double, float или decimal. Целое число соответствует типу short, integer или long. Дробное число соответствует типу double, float или decimal. Дата и время соответствуют типу date или timestamp.

  • 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