Это единственный вопрос, который я смог найти по этому топи c. Я работаю в основном над тем же: я использую модуль Modbus из Azure Marketplace в приложении IoT Edge, и я хотел проанализировать входящие данные Modbus из IoT Hub, чтобы я мог просмотреть их в таблице, где каждое значение ссылается на связанные с ним HwId и Timestamp.
Думаю, я нашел кое-что, что может сработать для вас. Вам нужно указать каждое из вложенных значений JSON в виде массивов с помощью GetArrayElements:
SELECT
ncontent.ArrayValue.HwId as HwId,
ndata.ArrayValue.SourceTimestamp as [Timestamp],
nvalues.ArrayValue.DisplayName as DisplayName,
nvalues.ArrayValue.Address as Address,
nvalues.ArrayValue.Value as Value
INTO
<output>
FROM
<input> i
CROSS APPLY GetArrayElements(i.Content) as ncontent
CROSS APPLY GetArrayElements(ncontent.ArrayValue.Data) as ndata
CROSS APPLY GetArrayElements(ndata.ArrayValue.[Values]) as nvalues
Вот результат, который я получил в результатах теста:
HwId Timestamp DisplayName Address Value
"HwId1" "2020-06-26 19:16:31" "HREG0002" "40002" "32019"
"HwId2" "2020-06-26 19:16:31" "HREG0005" "40005" "17506"
"HwId3" "2020-06-26 19:16:31" "HREG0008" "40008" "33352"