Я установил несколько датчиков, с помощью которых я получал данные (JSON) через концентратор событий в задание Stream Analytics и далее в озеро данных 2-го поколения. Мне просто нужны некоторые значения из данных, и я хочу добавить некоторые значения, например, Floor, Room, поскольку эти данные не включены в данные, которые я получаю от датчиков. Так как датчиков не так много, я подумал, что могу добавить их вручную в потоковую аналитику. Например. Случай, когда серийное число равно "1234567", добавьте этаж "2". Здесь я столкнулся с некоторыми проблемами, потому что данные хранятся в массивах, как показано ниже.
Моя цель - разделить элементы (точки данных) в массиве на отдельные события, но все же сохранить значения с датчика как SerialNo, DateTime, а также добавить значения как пол, комната и т. Д. Я не знаю, возможно ли это выполнить?
Это пример данных, которые я получаю в Stream Analytics. В этом примере это всего две точки данных, но были случаи, когда их было до девяти. Причина в том, что датчики измеряют много разных вещей (например, температуру, влажность) и создают свои собственные агрегаты в среднем за 1 час 24 часа.
[
{
"dsType": "MIBUS",
"timeStamp": 1583304733314,
"dateTime": "2020-03-04T06:52:13.0000000Z",
"serialNo": "1234567",
"manufacturer": "Trank",
"battLvl": 0,
"bridgeId": "03000000",
"dpCnt": 2,
"datapoint": [
{
"type": "FLOAT",
"name": "Temperature",
"size": 32,
"dataType": "BCD_DIGIT",
"res": 0.1,
"resUnit": "Degrees",
"valueType": "CSV",
"unit": "C",
"value": 12.5,
"scale": 1,
"min": "-20",
"max": "55",
"low": " ",
"high": " "
},
{
"type": "NUMBER",
"name": "Humidity",
"size": 8,
"dataType": "UINT8",
"unit": "%",
"res": 1,
"resUnit": "%",
"valueType": "CSV",
"value": 46,
"scale": 1,
"min": " ",
"max": " ",
"low": " ",
"high": " "
}
],
"uniqueId": "TR1234567",
"EventProcessedUtcTime": "2020-03-04T07:50:07.7614906Z",
"PartitionId": 0,
"EventEnqueuedUtcTime": "2020-03-04T06:52:13.3990000Z"
},
Таким образом, результат, который я хочу получить из показанных данных, выглядит примерно так:
SerialNo DateTime name value valueType Floor Room
1234567 2020-03-04T06:52:13.0000000Z Temperature 12,5 CSV 2 Bedroom
1234567 2020-03-04T06:52:13.0000000Z Humidity 46 CSV 2 Bedroom
Я безуспешно пробовал использовать функции GetArrayElement, CROSS APPLY, GetRecordProperties и т. Д. Наверное, потому, что я неправильно их применил.
Я открыт для каждого предложения, чтобы сделать это правильно :)
Заранее спасибо!