Ошибки данных в Azure Stream Analytics

Ошибки данных — это ошибки, возникающие при обработке данных. Они чаще всего связаны с операциями десериализации, сериализации и записи данных. При возникновении ошибок данных Stream Analytics записывает подробные сведения и примеры событий в журналы ресурсов. Для доступа к этим дополнительным сведениям включите в задание журналы диагностики. В некоторых случаях сводка этих сведений также доступна в уведомлениях портала.

В этой статье описаны различные типы ошибок ввода и вывода данных, их причины и соответствующие детали в журнале ресурсов.

Схема журналов ресурсов

Схема журналов ресурсов приведена в статье Устранение неполадок Azure Stream Analytics с помощью журналов диагностики. Следующий код JSON — это пример значения для поля Свойства журнала ресурсов для ошибки данных.

{
    "Source": "InputTelemetryData",
    "Type": "DataError",
    "DataErrorType": "InputDeserializerError.InvalidData",
    "BriefMessage": "Json input stream should either be an array of objects or line separated objects. Found token type: Integer",
    "Message": "Input Message Id: https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt Error: Json input stream should either be an array of objects or line separated objects. Found token type: Integer",
    "ExampleEvents": "[\"1,2\\\\u000d\\\\u000a3,4\\\\u000d\\\\u000a5,6\"]",
    "FromTimestamp": "2019-03-22T22:34:18.5664937Z",
    "ToTimestamp": "2019-03-22T22:34:18.5965248Z",
    "EventCount": 1
}

Ошибки входных данных

InputDeserializerError.InvalidCompressionType

  • Причина: выбранный тип сжатия входных данных не соответствует данным.
  • Уведомление на портале: да
  • Уровень журнала ресурсов: предупреждение
  • Влияние: сообщения с ошибками десериализации, включая недопустимый тип сжатия, удаляются из входных данных.
  • Подробные сведения журнала
    • Идентификатор входного сообщения. Для концентратора событий идентификаторами являются PartitionId, Offset и порядковый номер.

Сообщение об ошибке

"BriefMessage": "Unable to decompress events from resource 'https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt'. Please ensure compression setting fits the data being processed."

InputDeserializerError.InvalidHeader

  • Причина: недопустимый заголовок входных данных. Например, в CSV-файле есть столбцы с повторяющимися именами.
  • Уведомление на портале: да
  • Уровень журнала ресурсов: предупреждение
  • Влияние: сообщения с ошибками десериализации, включая недопустимый заголовок, удаляются из входных данных.
  • Подробные сведения журнала
    • Идентификатор входного сообщения.
    • Фактические полезные данные объемом до нескольких килобайт.

Сообщение об ошибке

"BriefMessage": "Invalid CSV Header for resource 'https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt'. Please make sure there are no duplicate field names."

InputDeserializerError.MissingColumns

  • Причина: входные столбцы, определенные с помощью CREATE TABLE или TIMESTAMP, не существуют.
  • Уведомление на портале: да
  • Уровень журнала ресурсов: предупреждение
  • Влияние: события с отсутствующими столбцами удаляются из входных данных.
  • Подробные сведения журнала
    • Идентификатор входного сообщения.
    • Имена отсутствующих столбцов.
    • Фактические полезные данные объемом до нескольких килобайт.

Сообщения об ошибках

"BriefMessage": "Could not deserialize the input event(s) from resource 'https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt' as Csv. Some possible reasons: 1) Malformed events 2) Input source configured with incorrect serialization format" 
"Message": "Missing fields specified in query or in create table. Fields expected:ColumnA Fields found:ColumnB"

InputDeserializerError.TypeConversionError

  • Причина: не удалось преобразовать входные данные в тип, указанный в операторе CREATE TABLE.
  • Уведомление на портале: да
  • Уровень журнала ресурсов: предупреждение
  • Влияние: события с ошибкой преобразования типа удаляются из входных данных.
  • Подробные сведения журнала
    • Идентификатор входного сообщения.
    • Имя столбца и ожидаемый тип.

Сообщения об ошибках

"BriefMessage": "Could not deserialize the input event(s) from resource '''https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt ' as Csv. Some possible reasons: 1) Malformed events 2) Input source configured with incorrect serialization format" 
"Message": "Unable to convert column: dateColumn to expected type."

InputDeserializerError.InvalidData

  • Причина: входные данные имеют неправильный формат. Например, входные данные не являются допустимыми кодом JSON.
  • Уведомление на портале: да
  • Уровень журнала ресурсов: предупреждение
  • Влияние: события в сообщении после обнаружения ошибки недопустимых данных удаляются из входного потока.
  • Подробные сведения журнала
    • Идентификатор входного сообщения.
    • Фактические полезные данные объемом до нескольких килобайт.

Сообщения об ошибках

"BriefMessage": "Json input stream should either be an array of objects or line separated objects. Found token type: String"
"Message": "Json input stream should either be an array of objects or line separated objects. Found token type: String"

InvalidInputTimeStamp

  • Причина: значение выражения TIMESTAMP BY не может быть преобразовано в тип DateTime.
  • Уведомление на портале: да
  • Уровень журнала ресурсов: предупреждение
  • Влияние: события с недопустимой входной меткой времени удаляются из входных данных.
  • Подробные сведения журнала
    • Идентификатор входного сообщения.
    • Сообщение об ошибке.
    • Фактические полезные данные объемом до нескольких килобайт.

Сообщение об ошибке

"BriefMessage": "Unable to get timestamp for resource 'https:\\/\\/exampleBlob.blob.core.windows.net\\/inputfolder\\/csv.txt ' due to error 'Cannot convert string to datetime'"

InvalidInputTimeStampKey

  • Причина: значение TIMESTAMP BY OVER timestampColumn равно NULL.
  • Уведомление на портале: да
  • Уровень журнала ресурсов: предупреждение
  • Влияние: события с недопустимым ключом входной метки времени удаляются из входных данных.
  • Подробные сведения журнала
    • Фактические полезные данные объемом до нескольких килобайт.

Сообщение об ошибке

"BriefMessage": "Unable to get value of TIMESTAMP BY OVER COLUMN"

LateInputEvent

  • Причина: разница между временем приложения и временем поступления больше, чем окно допустимой задержки поступления.
  • Уведомление на портале: нет
  • Уровень ведения журнала ресурсов: информация
  • Влияние: события позднего поступления входных данных обрабатываются в соответствии со значением параметра "Handle other events" (Обрабатывать другие события) в разделе "Упорядочение событий" в конфигурации задания. Дополнительные сведения см. в статье о политиках обработки времени.
  • Подробные сведения журнала
    • Время приложения и время поступления.
    • Фактические полезные данные объемом до нескольких килобайт.

Сообщение об ошибке

"BriefMessage": "Input event with application timestamp '2019-01-01' and arrival time '2019-01-02' was sent later than configured tolerance."

EarlyInputEvent

  • Причина: разница между временем приложения и временем поступления больше 5 минут.
  • Уведомление на портале: нет
  • Уровень ведения журнала ресурсов: информация
  • Влияние: события раннего поступления входных данных обрабатываются в соответствии со значением параметра "Handle other events" (Обрабатывать другие события) в разделе "Упорядочение событий" в конфигурации задания. Дополнительные сведения см. в статье о политиках обработки времени.
  • Подробные сведения журнала
    • Время приложения и время поступления.
    • Фактические полезные данные объемом до нескольких килобайт.

Сообщение об ошибке

"BriefMessage": "Input event arrival time '2019-01-01' is earlier than input event application timestamp '2019-01-02' by more than 5 minutes."

OutOfOrderEvent

  • Причина: событие определяется как имеющее неправильный порядок в соответствии с заданным интервалом для событий, полученных в неправильном порядке.
  • Уведомление на портале: нет
  • Уровень ведения журнала ресурсов: информация
  • Влияние: события, поступающие в неправильном порядке, обрабатываются в соответствии со значением параметра "Handle other events" (Обрабатывать другие события) в разделе "Упорядочение событий" в конфигурации задания. Дополнительные сведения см. в статье о политиках обработки времени.
  • Подробные сведения журнала
    • Фактические полезные данные объемом до нескольких килобайт.

Сообщение об ошибке

"Message": "Out of order event(s) received."

Ошибки выходных данных

Azure Stream Analytics выявляет ошибки выходных данных с запросом ввода-вывода или без него в приемнике вывода в зависимости от конфигурации. Например, отсутствие обязательного столбца, такого как PartitionKey, при использовании выходных данных таблицы Azure может быть обнаружено без запроса ввода-вывода. В то же время для обнаружения нарушений ограничений в выходных данных SQL потребуется запрос ввода-вывода.

Некоторые ошибки данных могут быть обнаружены только после вызова к приемнику выходных данных, что способно замедлить обработку. Чтобы устранить эту проблему, измените конфигурацию задания или запрос, который вызывает ошибку данных.

OutputDataConversionError.RequiredColumnMissing

  • Причина: обязательный столбец выходных данных не существует. Например, это может быть столбец, определенный как PartitionKey в таблице Azure.
  • Уведомление на портале: да
  • Уровень журнала ресурсов: предупреждение
  • Влияние: все ошибки преобразования выходных данных, включая отсутствие обязательных столбцов, обрабатываются в соответствии со значением параметра Output Data Policy (Политика выходных данных).
  • Подробные сведения журнала
    • Имя столбца и идентификатор либо часть записи.

Сообщение об ошибке

"Message": "The output record does not contain primary key property: [deviceId] Ensure the query output contains the column [deviceId] with a unique non-empty string less than '255' characters."

OutputDataConversionError.ColumnNameInvalid

  • Причина: значение столбца не соответствует выходным данным. Например, имя столбца не является допустимым столбцом таблицы Azure.
  • Уведомление на портале: да
  • Уровень журнала ресурсов: предупреждение
  • Влияние: все ошибки преобразования выходных данных, включая недопустимые имена столбцов, обрабатываются в соответствии со значением параметра Output Data Policy (Политика выходных данных).
  • Подробные сведения журнала
    • Имя столбца и идентификатор либо часть записи.

Сообщение об ошибке

"Message": "Invalid property name #deviceIdValue. Please refer MSDN for Azure table property naming convention."

OutputDataConversionError.TypeConversionError

  • Причина: столбец в выходных данных не может быть преобразован к допустимому типу. Например, значение столбца несовместимо с ограничениями или типами, заданными в таблице SQL.
  • Уведомление на портале: да
  • Уровень журнала ресурсов: предупреждение
  • Влияние: все ошибки преобразования выходных данных, включая ошибки преобразования типов, обрабатываются в соответствии со значением параметра Output Data Policy (Политика выходных данных).
  • Подробные сведения журнала
    • Имя столбца.
    • Идентификатор или часть записи.

Сообщение об ошибке

"Message": "The column [id] value null or its type is invalid. Ensure to provide a unique non-empty string less than '255' characters."

OutputDataConversionError.RecordExceededSizeLimit

  • Причина: значение сообщения больше, чем поддерживаемый размер выходных данных. Например, для выходных данных концентратора событий запись больше 1 МБ.
  • Уведомление на портале: да
  • Уровень журнала ресурсов: предупреждение
  • Влияние: все ошибки преобразования выходных данных, включая превышение допустимого размера записи, обрабатываются в соответствии со значением параметра Output Data Policy (Политика выходных данных).
  • Подробные сведения журнала
    • Идентификатор или часть записи.

Сообщение об ошибке

"BriefMessage": "Single output event exceeds the maximum message size limit allowed (262144 bytes) by Event Hub."

OutputDataConversionError.DuplicateKey

  • Причина: запись уже содержит столбец с тем же именем, что и системный столбец. Например, в выходных данных CosmosDB есть столбец ID, когда используется другой столбец идентификатора.
  • Уведомление на портале: да
  • Уровень журнала ресурсов: предупреждение
  • Влияние: все ошибки преобразования выходных данных, включая дублирующиеся ключ, обрабатываются в соответствии со значением параметра Output Data Policy (Политика выходных данных).
  • Подробные сведения журнала
    • Имя столбца.
    • Идентификатор или часть записи.
"BriefMessage": "Column 'devicePartitionKey' is being mapped to multiple columns."

Дальнейшие действия