Анализ временных рядов Microsoft Azure: Как запросить сглаженный динамический массив

#azure-timeseries-insights

#azure-временные ряды-insights

Вопрос:

Мы используем анализ временных рядов поколения 2, который считывает данные из IoT Hub. Данные имеют форму, очень похожую на пример C в этой документации: https://learn.microsoft.com/en-us/azure/time-series-insights/concepts-json-flattening-escaping-rules

Наши данные имеют следующую структуру:

 {
  "timestamp": "2020-11-01T10:00:00.000Z",
  "sensors": [{
        "name" : "temperature",
        "unit" : "celsius"
        "value": 25.39
    },
    {
        "name" : "humidity",
        "unit" : "percentage" 
        "value": 97.85
    }
  ]
}
  

И обычно со многими другими элементами «датчика» в массиве. Мы всегда использовали предварительный просмотр Time Series Insights PAYG, и он работал нормально. Мы могли бы запросить температуру со следующей полезной нагрузкой JSON:

 {
  "getEvents": {
    "timeSeriesId": ["some Id"],
    "searchSpan": {
        "from": "2020-08-27T07:34:00.000Z",
        "to": "2020-08-27T07:34:10.000Z"
    },
    "filter": {
        "tsx": "$event.sensors_name.String = 'temperature'"
    },
    "projectedProperties": [{
            "name": "sensors_value",
            "type": "Double"
        }]
    }
}
  

Это работало отлично, пока Microsoft не выпустила предварительную версию PAYG для официального выпуска. Это больше не работает, и мы нашли это в документации:

введите описание изображения здесь

источник:https://learn.microsoft.com/en-us/azure/time-series-insights/concepts-supported-data-types

В следующей документации даже четко указано, что сглаживание массивов теперь отличается: введите описание изображения здесь

источник:https://learn.microsoft.com/en-us/azure/time-series-insights/ingestion-rules-update

Есть ли возможность по-прежнему запрашивать этот динамический тип массива без необходимости указывать временную метку или DeviceID в каждом элементе массива?

Ответ №1:

Эта функциональность еще не реализована, динамические типы не могут ссылаться в выражениях TSX, а значения в массиве не могут быть получены как projectedProperties. Весь массив должен быть извлечен, а затем проанализирован на стороне клиента. Чтобы вызвать сглаживание, вам нужно будет добавить идентификатор или временную метку в объекты, как вы упомянули выше.

Одна идея — создать новую среду TSI и настроить составной идентификатор TS — независимо от вашего первоначального идентификатора plus sensor.name (предполагая, что это имя стало уникальным идентификатором), тогда вы также уберете необходимость в фильтре для temp.

Комментарии:

1. «динамические типы доступны только через getEvents API» Что это значит? Как они могут быть предоставлены через GetEventsAPI? Полезная нагрузка, о которой я упоминал выше, также является полезной нагрузкой getEvents, верно?

2. да, вы правы, я ответил слишком быстро, не глядя на текст вашего запроса. Отредактировано выше. getEvents — просто получение «raw»

3. learn.microsoft.com/en-us/azure/time-series-insights/…

4. Спасибо за ответ. Хотя это работает, потребуется переустановить TSI для существующих производственных сред. Возможно, нам придется перестроить структуру входящих сообщений, чтобы в каждый объект была включена временная метка … Или … можем ли мы сохранить текущую структуру для существующих сред? Знаете ли вы, когда они будут обновлены, чтобы мы больше не могли использовать наш текущий запрос getEvents? Я читал, что API будет обновлен в конце октября, но означает ли это, что версия TSI также будет обновлена до официального выпуска?

5. Привет, мои извинения, у меня были отключены уведомления. Предыдущая версия API будет удалена в конце октября ($event[‘sensor_name’]. Строка или $event.имя_сенсора. Строка, но НЕ $event. [имя_сенсора]. Строка), но это ортогонально правилам приема — два разных поезда. Любая среда, созданная во время предварительного просмотра, может (должна) использовать новый синтаксис API. В какой-то момент правила сглаживания предварительного просмотра будут удалены, но в настоящее время временной шкалы нет. Это подпадает под действие критического изменения Azure, и поэтому у вас будет достаточно времени для подготовки.