Да, ему нужно имя массива.CROSS APPLY GetArrayElements()
используется для вложенного массива.
Пример:
[{
"source": "xda",
"data":
[{
"masterTag": "UNIFY1",
"speed": 180
},
{
"masterTag": "UNIFY2",
"speed": 180
}],
"EventEnqueuedUtcTime": "2018-07-20T19:28:18.5230000Z",
},
{
"source": "xda",
"data": [{
"masterTag": "UNIFY3",
"speed": 214
},
{
"masterTag": "UNIFY4",
"speed": 180
}],
"EventEnqueuedUtcTime": "2018-07-20T19:28:20.5550000Z",
}
]
Вы можете использовать ниже sql для преобразования его в строки:
SELECT
jsoninput.source,
arrayElement.ArrayValue.masterTag
INTO
output
FROM jsoninput
CROSS APPLY GetArrayElements(jsoninput.data) AS arrayElement
Однако теперь предоставленные вами входные данные являются чистым массивом.Если вы хотите преобразовать этот массив в строки, просто используйте sql:
select jsoninput.* from jsoninput