Поделиться через


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

ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics

Tip

Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !

Потоки данных доступны как в конвейерах Фабрики данных Azure, так и в конвейерах Azure Synapse Analytics. Эта статья относится к потокам данных для сопоставления. Если вы не знакомы с преобразованиями, ознакомьтесь с вводной статьей "Преобразование данных с помощью сопоставления потоков данных".

В этой статье содержатся сведения об использовании всех выражений и функций, поддерживаемых Azure Data Factory и Azure Synapse Analytics в сопоставлении потоков данных. Сводки по каждому типу поддерживаемой функции см. в следующих статьях:

Алфавитный список всех функций

Следующий алфавитный список включает все функции, доступные в потоках данных сопоставления.

A

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 оператор. То же, что и &&.

  • 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

Возвращает сопоставление всех сообщений об ошибках для строки с идентификатором утверждения в качестве ключа.

Examples

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

B

between

between(<value1> : any, <value2> : any, <value3> : any) => boolean

Проверяет, находится ли первое значение между двумя другими значениями включительно. Можно сравнить числовые, строковые и datetime значения.

  • between(10, 5, 24)
  • true
  • between(currentDate(), currentDate() + 10, currentDate() + 20)
  • false

bitwiseAnd

bitwiseAnd(<value1> : integral, <value2> : integral) => integral

Использует побитовый And оператор для целочисленных типов. Аналогично оператору &.

  • bitwiseAnd(0xf4, 0xef)
  • 0xe4
  • (0xf4 & 0xef)
  • 0xe4

bitwiseOr

bitwiseOr(<value1> : integral, <value2> : integral) => integral

Использует побитовый Or оператор для целочисленных типов. Аналогично оператору |.

  • bitwiseOr(0xf4, 0xef)
  • 0xff
  • (0xf4 | 0xef)
  • 0xff

bitwiseXor

bitwiseXor(<value1> : any, <value2> : any) => any

Использует побитовый Or оператор для целочисленных типов. То же, что оператор |

  • 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

В зависимости от переменных условий case функция применяет одно значение или другое. Если количество входных данных чётное, второй элемент по умолчанию принимает значение 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, результат эквивалентен символу (число % 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 в предоставленном предикате. Функция Th 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 значения в счетчике.

  • 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(256224), , 256и 384512. Его можно использовать для вычисления отпечатка пальца для строки.

  • crc32(256, 'gunchus', 8.2, 'bojjus', true, toDate('2010-4-4')) -> 3630253689L

cumeDist

cumeDist() => integer

Функция cumeDist вычисляет положение значения относительно всех значений в секции. Результатом является количество строк, предшествующих или равных текущей строке в упорядоченном наборе раздела, деленное на общее количество строк в разделе окна. Все значения галстуков в упорядочении оцениваются в той же позиции.

  • cumeDist()

currentDate

currentDate([<value1> : string]) => date

Возвращает текущую дату начала выполнения этого задания. Можно передать необязательный часовой пояс в виде GMT, PSTUTCили America/Cayman. Локальный часовой пояс центра обработки данных или региона фабрики данных используется в качестве значения по умолчанию. Ознакомьтесь с классом SimpleDateFormat Java для доступных форматов.

  • 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, PSTUTCили America/Cayman. По умолчанию используется текущий часовой пояс. Ознакомьтесь с классом SimpleDateFormat Java для доступных форматов. Чтобы преобразовать время 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-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-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

Фильтрует элементы массива, которые не соответствуют предоставленному предикату. Фильтр ожидает ссылку на один элемент в функции предиката как #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, PSTUTCили America/Cayman. По умолчанию используется текущий часовой пояс. Ознакомьтесь с классом SimpleDateFormat Java для доступных форматов.

  • 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

Проверяет, помечен ли актив с предоставленным идентификатором как ошибка.

Examples

  • 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, PSTUTCили America/Cayman. Локальный часовой пояс используется в качестве значения по умолчанию. Ознакомьтесь с классом SimpleDateFormat Java для доступных форматов.

  • 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-элемент при указании двух или более входных данных. Эта функция эквивалентна coalesce функции.

  • iifNull(10, 20) -> 10
  • iifNull(null, 20, 40) -> 20
  • iifNull('azure', 'data', 'factory') -> 'azure'
  • iifNull(null, 'data', 'factory') -> 'data'

in

in(<array of items> : array, <item to find> : any) => boolean

Проверяет, находится ли элемент в массиве.

  • 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. Индекс потока должен быть либо 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

Проверяет, является ли строковое значение двойным значением при указании необязательного формата в соответствии с правилами toDouble().

  • isDouble('123') -> true
  • isDouble('$123.45' -> '$###.00') -> true
  • isDouble('icecream') -> false

isError

isError([<value1> : integer]) => boolean

Проверяет, помечена ли строка как ошибка. Для преобразований, которые принимают более одного входного потока, вы можете передать индекс потока, начиная с 1. Индекс потока должен иметь значение 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). Индекс потока должен быть либо 1 , либо 2, а значение по умолчанию — 1.

  • isIgnore()
  • isIgnore(1)

isInsert

isInsert([<value1> : integer]) => boolean

Проверяет, помечена ли строка для вставки. Для преобразований, принимающих несколько входных потоков, можно передать индекс потока, начиная с 1. Индекс потока должен быть либо 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

Проверяет, является ли строковое значение длинным, если задан необязательный формат в соответствии с правилами toLong().

  • isLong('123') -> true
  • isLong('$123' -> '$###') -> true
  • isLong('gunchus') -> false

isMatch

isMatch([<value1> : integer]) => boolean

Проверяет соответствие строки при поиске. Для преобразований, принимающих несколько входных потоков, можно передать индекс потока, начиная с 1. Индекс потока должен быть либо 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, PSTUTCили America/Cayman. Функция timestamp поддерживает точность до миллисекунды со значением 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. Индекс потока должен быть либо 1 , либо 2, а значение по умолчанию — 1.

  • isUpdate()
  • isUpdate(1)

isUpsert

isUpsert([<value1> : integer]) => boolean

Проверяет, помечена ли строка для вставки. Для преобразований, принимающих несколько входных потоков, можно передавать индекс потока, начиная с 1. Индекс потока должен быть либо 1 , либо 2, а значение по умолчанию — 1.

  • isUpsert()
  • isUpsert(1)

J

jaroWinkler

jaroWinkler(<value1> : string, <value2> : string) => double

Вычисляет расстояние Джаро — Винклера между двумя строками.

  • jaroWinkler('frog', 'frog') => 1.0

K

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!'

M

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 до заданной длины для создания массива этой длины. Он принимает функцию сопоставления, где можно адресировать индекс в массиве как #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, PSTUTCили America/Cayman. Локальный часовой пояс используется в качестве значения по умолчанию. Ознакомьтесь с классом SimpleDateFormat Java для доступных форматов.

  • 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, PSTUTCили America/Cayman. Локальный часовой пояс используется в качестве значения по умолчанию. Ознакомьтесь с классом SimpleDateFormat Java для доступных форматов.

  • 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, PSTUTCили America/Cayman. Локальный часовой пояс используется в качестве значения по умолчанию. Ознакомьтесь с классом SimpleDateFormat Java для доступных форматов.

  • 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, приводит к значению 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 оператор. То же, что и ||.

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

Возвращает случайное число при указании начального значения в пределах раздела. Начальное значение должно быть фиксированным и используется вместе с идентификатором раздела для генерации случайных значений в заданном диапазоне (0.0-1.0).

  • 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

Извлекает соответствующую подстроку для заданного шаблона regex. Последний параметр определяет группу соответствия и по умолчанию принимает значение 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 другой подстрокой в конкретной строке. Используйте <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. Например, -1.1 будет -1.0 с ROUND_CEILING и -2 с ROUND_UP.)

  4. ROUND_FLOOR: режим округления вниз до отрицательной бесконечности. (То же самое, что ROUND_DOWN и если входные данные являются положительными. Если отрицательный, он ведет себя как ROUND_UP.)

  5. ROUND_HALF_UP: режим округления к "ближайшему соседу", если оба соседа равноудалены, в этом случае он ведет себя как ROUND_UP. (Чаще всего используется + по умолчанию для Dataflow.)

  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, PSTUTCили America/Cayman. Локальный часовой пояс используется в качестве значения по умолчанию. Ознакомьтесь с классом SimpleDateFormat Java для доступных форматов.

  • 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

Извлекает подмножество массива из позиции. Позиция начинается с 1. Если длина опущена, она по умолчанию используется в конце строки.

  • 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

Извлекает подстроку определенной длины из заданной позиции. Нумерация начинается с 1. Если длина опущена, она по умолчанию используется в конце строки.

  • 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( <строка для подмножества><разделитель>substringIndex( : string, : string, <количество вхождений разделителя> : целое]) => string

Извлекает подстроку перед подсчетом вхождения разделителя. Если количество положительное, возвращается все, что находится слева от последнего разделителя (при подсчёте слева направо). Если число отрицательное, возвращается все справа от последнего разделителя, начиная с правого конца.

  • 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

Преобразует входную строку даты в дату с помощью необязательного формата входной даты. Ознакомьтесь с классом SimpleDateFormat Java для доступных форматов. Если формат входной даты опущен, формат по умолчанию равен yyyy-[M]M-[d]d. Допустимые форматы.:[ yyyy, yyyy-[M]M, yyyy-[M]M-[d]d, yyyy-[M]M-[d]dT* ]

  • toDate('2012-8-18') -> toDate('2012-08-18')
  • toDate('12/18/2012', 'MM/dd/yyyy') -> toDate('2012-12-18')

toDecimal

toDecimal(<value> : any, [<precision> : integral], [<scale> : integral], [<format> : string], [<locale> : string]) => decimal(10,0)

Преобразует любое числовое значение или строку в десятичное значение. Если точность и масштабирование не указаны, по умолчанию используется значение (10,2). Для преобразования можно использовать необязательный десятичный формат Java. Используйте необязательный языковой стандарт в формате BCP47, например en-US, de или zh-CN.

  • toDecimal(123.45) -> 123.45
  • toDecimal('123.45', 8, 4) -> 123.4500
  • toDecimal('$123.45', 8, 4,'$###.00') -> 123.4500
  • toDecimal('Ç123,45', 10, 2, 'Ç###,##', 'de') -> 123.45

toDouble

toDouble(<value> : any, [<format> : string], [<locale> : string]) => double

Преобразует любое числовое значение или строку в двойное значение. Для преобразования можно использовать необязательный десятичный формат Java. Используйте опциональный формат в виде языкового стандарта BCP47, такого как en-US, de или zh-CN.

  • toDouble(123.45) -> 123.45
  • toDouble('123.45') -> 123.45
  • toDouble('$123.45', '$###.00') -> 123.45
  • toDouble('Ç123,45', 'Ç###,##', 'de') -> 123.45

toFloat

toFloat(<value> : any, [<format> : string], [<locale> : string]) => float

Преобразует любое числовое или строковое значение в плавающее. Для преобразования можно использовать необязательный десятичный формат 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 значения для этого столбца на основе аргумента количества.

  • 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 для доступных форматов. Формат по умолчанию — yyyy-MM-dd. Для метки даты или времени можно опционально указать локаль.

  • 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

Преобразует строку в метку времени при указании необязательного формата метки времени. Если метка времени опущена, используется шаблон yyyy-[M]M-[d]d hh:mm:ss[.f...] по умолчанию. Можно передать необязательный часовой пояс в виде GMT, PSTUTCили America/Cayman. Функция timestamp поддерживает точность до миллисекунды со значением 999. Ознакомьтесь с классом SimpleDateFormat Java для доступных форматов.

  • 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, PSTUTCили America/Cayman. По умолчанию используется текущий часовой пояс. Ознакомьтесь с классом SimpleDateFormat Java для доступных форматов.

  • 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

Заменяет один набор знаков другим набором знаков в строке. Символы имеют одну на одну замену.

  • 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

Сопоставляет тип столбца. Его можно использовать только в выражениях шаблонов. Функция number совпадает с коротким, целым числом, длинным, двойным, плавающим или десятичным. Функция integral сопоставляет short, int, long. Функция соответствует типам double, float, decimal fractional. Функция datetime соответствует типу метки даты или времени.

  • 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

Возвращает объединенный набор уникальных элементов из двух массивов.

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

W

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