Справочник по языку запросов Stream Analytics

Azure Stream Analytics предлагает язык SQL-запросов для выполнения преобразований и вычислений в потоках событий.

Язык запросов Stream Analytics, подмножество синтаксиса T-SQL

В этом документе описывается синтаксис, использование и рекомендации для языка запросов Stream Analytics. Во всех примерах, применяемых в данном документе, используется сценарий пункта сбора оплаты, как описано ниже.

Язык запросов Stream Analytics является подмножеством стандартного синтаксиса T-SQL для выполнения вычислений потоковой передачи.

Сценарий пункта сбора оплаты

Пункты сбора оплаты можно встретить на многих скоростных автомагистралях, мостах и туннелях по всему миру. Каждый такой пункт имеет несколько кабинок, которые могут работать в ручном режиме, когда нужно остановиться и внести плату контроллеру, или в автоматическом, когда сенсор на крыше кабинки считывает RFID-карту, прикрепленную на ветровое стекло автомобиля, при проезде через кабинку. Проезд автомобилей через станции сбора платы можно легко представить в виде потока событий, в котором выполняются интересные операции.

Время прибытия и время применения

В любой временной системе наподобие Azure Stream Analytics важно понимать ход времени. Каждое событие, которое проходит через систему, поставляется с меткой времени, доступ к которому можно получить через System.Timestamp(). Другими словами, каждое событие в нашей системе изображает момент во времени. Эта метка времени может либо указываться пользователем в запросе как время приложения, либо назначаться системой на основе времени прибытия. Время прибытия имеет разные значения в зависимости от источников входных данных. Для событий из Концентратора событий Azure время прибытия — это метка времени, заданная концентратором событий; Для хранилища BLOB-объектов это время последнего изменения BLOB-объекта. Отметка времени — это момент времени, связанный с записью или анализом данных. Если пользователь хочет использовать время приложения, он может сделать это с помощью ключевое слово TIMESTAMP BY. В вышеприведенном сценарии это момент входа автомобиля в кабинку сбора оплаты. Очень важно определить метку времени во входящем потоке данных. Необходимо убедиться, что записанное время также подтверждает возникновение события. Например, если вы отслеживаете счетчики денежных средств и хотите подсчитать количество клиентов, выставленных счетов, то в идеале метка времени события должна быть "успешной оплаты", а не времени создания счета.

TIMESTAMP BY

В Azure Stream Analytics все события имеют четко определенные метки времени. Если пользователь хочет использовать время приложения, он может использовать ключевое слово TIMESTAMP BY, чтобы указать столбец в полезных данных, который следует использовать для метки времени каждого входящего события для выполнения любых временных вычислений, таких как оконные операции, соединения и т. д. Рекомендуется использовать TIMESTAMP BY по времени прибытия. TIMESTAMP BY можно использовать в любом столбце типа datetime, и поддерживаются все форматы ISO 8601. System.Timestamp() можно использовать только в select.

Ниже приведен пример TIMESTAMP BY, в котором используется столбец EntryTime в качестве времени приложения для события.

  
SELECT TollId, EntryTime AS VehicleEntryTime, LicensePlate, State, Make, Model, VehicleType, VehicleWeight, Toll, Tag   
FROM TollTagEntry TIMESTAMP BY EntryTime  
  

Чувствительность имени поля к регистру

Имена полей для задания, созданного с помощью уровня совместимости 1.0, изменяются на строчные (без учета регистра) при обработке подсистемой Azure Stream Analytics. Для форматов ввода, поддерживающих схему с учетом регистра, например JSON, можно создавать события с повторяющимися полями при сравнении имен полей с учетом регистра. Такие события считаются недопустимыми и удаляются во время обработки.

Учет регистра сохраняется для имен полей при создании задания Stream Analytics с использованием уровня совместимости 1.1 или выше. Дополнительные сведения см. в разделе о настройке уровня совместимости .

В этом разделе

Рекомендации по использованию языка запросов Stream Analytics см. в следующих разделах.

См. также: