ISFIRST

✅ Поток событий Azure Stream Analytics ✅ Fabric

Возвращает значение 1, если событие является первым событием в пределах заданного фиксированного интервала или 0 в противном случае. Интервалы выравниваются так же, как и переворачивающиеся окна (см. раздел "Переворачивающееся окно"). ISFIRST не влияет на предикаты в предложении WHERE, условия соединения в предложении JOIN или выражения группировки в предложении GROUP BY текущего запроса. ).

Синтаксис

ISFIRST ( timeunit  , duration )   
    [ OVER ( [PARTITION BY partition_by_expression] [WHEN when_expression]) ]  
  

Аргументы

timeunit

Единица времени в течение длительности. В следующей таблице перечислены все допустимые значения единиц времени --- оба полных
имена и аббревиаты могут использоваться в запросе.

Timeunit Аббревиатуры
день дд, д
час Чч
минута mi, n
секунда ss, s
миллисекунда мс
микросекунда mcs

длительность

Большое целое число, указывающее количество единиц времени в интервале. Например:
ISFIRST(минута, 15) будет смотреться на 15-минутные интервалы. Время начала интервалов
выравнивается таким же образом, как в переворачивающихся окнах (см. раздел "Переворачивающееся окно").

[ OVER ( partition_by_clause [when_clause]) ]

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

Предложение PARTITION BY partition_by_expression делит результирующий набор, созданный from the FROM
предложение в секции, к которым применяется функция. Другими словами, каждое событие сравнивается
только для таких других событий, которые разделяют его значение partition_by_expression. Если не указано, каждый из них
событие ранжируется относительно всех других событий в течение интервала времени.

Если предложение when_expression указывает логическое условие для рассмотрения событий.
Другими словами, каждое событие оценивается только по сравнению с такими другими событиями, которые удовлетворяют
when_expression. Если само событие не удовлетворяет when_expression, функция возвращает значение 0.
Предложение WHEN является необязательным.

Типы возвращаемых данных

bigint (либо "1", либо "0", представляющий "true" или "false" соответственно)

Общие замечания

ISFIRST является недетерминированным. События обрабатываются в темпоральной последовательности. При наличии нескольких событий с одинаковыми событиями метки времени обрабатываются в порядке прибытия.

Применение ISFIRST к результирующем набору функции окна может привести к непредвиденным результатам. Функции окна изменяют метку времени событий, так как каждая операция окна выводит событие в конце окна. Текущая метка времени события может быть доступна с помощью system.timestamp(), после операции окна она будет отличаться от исходного атрибута времени события. Если не удается переместить ISFIRST перед операцией окна, рассмотрите возможность использования CollectTop, упорядочение по исходному времени события.

Примеры

Указывает, является ли событие чтения датчика первым в течение 10 минут интервалов переворачивания:

SELECT  
       reading,  
       ISFIRST(mi, 10) as first  
FROM Input  

Укажите, является ли событие первым в течение 10 минут интервалов переворачивания на идентификатор устройства:

SELECT  
       deviceid,  
       reading,  
       ISFIRST(mi, 10) OVER (PARTITION BY deviceid) as first  
FROM Input  

Указывает, является ли событие первым событием со значением, превышающим 50 в течение 10 минут интервалов переворачивания
per deviceid:

SELECT
       deviceid,
       reading,
       ISFIRST(mi, 10) OVER (PARTITION BY deviceid WHEN reading > 50 AND devicetype = 'thermostat') as firstAbove,
       ISFIRST(mi, 10) OVER (PARTITION BY deviceid WHEN reading < 50 AND devicetype = 'thermostat') as firstUnder
FROM Input
WHERE
       devicetype = 'thermostat'

См. также

ОТСТАВАНИЕ
ПОСЛЕДНИЙ