Я настроил задание в потоковой аналитике, которое принимает сообщения из IotHub и загружает значения в таблицу SQL.
Все работало нормально, когда для каждого сообщения использовался только один набор значений, однако я хотел отправитьнесколько наборов значений в одном сообщении с использованием массива.
Ниже приведен пример сообщения Json, которое достигает задания:
[{
"valores": {
"0": {
"voltage": 230.8,
"current": 0.18,
"power": 32.093,
"frequency": 50,
"energy": 0.71,
"dvcid": 1,
"gway": "SPC-G02",
"time": "2018-12-27T16:02:20.1690000Z"
},
"1": {
"voltage": 230.7,
"current": 0.144,
"power": 23.759,
"frequency": 50.1,
"energy": 0.71,
"dvcid": 1,
"gway": "SPC-G02",
"time": "2018-12-27T16:02:25.1690000Z"
},
"2": {
"voltage": 230.7,
"current": 0.143,
"power": 23.369,
"frequency": 50,
"energy": 0.71,
"dvcid": 1,
"gway": "SPC-G02",
"time": "2018-12-27T16:02:30.1740000Z"
},
"3": {
"voltage": 230.4,
"current": 0.163,
"power": 28.075,
"frequency": 50,
"energy": 0.71,
"dvcid": 1,
"gway": "SPC-G02",
"time": "2018-12-27T16:02:35.1730000Z"
},
"4": {
"voltage": 230.5,
"current": 0.167,
"power": 29.207,
"frequency": 50,
"energy": 0.71,
"dvcid": 1,
"gway": "SPC-G02",
"time": "2018-12-27T16:02:40.1810000Z"
},
},
"EventProcessedUtcTime": "2018-12-27T16:03:00.9574234Z",
"PartitionId": 3,
"EventEnqueuedUtcTime": "2018-12-27T16:02:58.0290000Z",
"IoTHub": {
"MessageId": null,
"CorrelationId": null,
"ConnectionDeviceId": "RaspberryPi-Teste1",
"ConnectionDeviceGenerationId": "636807313519039605",
"EnqueuedTime": "2018-12-27T16:02:58.0260000Z",
"StreamId": null
}
}
]
Этот вывод был получен из утилиты данных примерав задании.
Я попытался настроить тестовый запрос, который собирает только один столбец для БД (dvcid), однако при тестировании запроса я получаю сообщение «Произошла непредвиденная ошибка».
SELECT
StageElement.arrayvalue.dvcid as dvcid
INTO [Guardardb]
FROM [Pc-Sdm230] AS evento
CROSS APPLY GetArrayElements(evento.valores) AS StageElement
Задание не выполняется, когда я пытаюсь его запустить.
Когда я тестирую следующий запрос, все работает нормально, и я вижу все значения Valores в одном столбце:
SELECT
*
INTO [Guardardb]
FROM [Pc-Sdm230] AS evento
Я не могу понять, что я делаю неправильно.