列存在时,流分析上的列名称无效

时间:2019-04-26 12:04:47

标签: azure-stream-analytics

给出该数据集:

[
    {
        "dataChannelId": 8516,
        "measures": [
       {
            "dateTime": "2019-01-01T12:00:00",
       },
       {
            "dateTime": "2019-01-02T12:00:00",
       }
}]

此查询:

WITH 
temp AS
(
    SELECT 
        dataChannelId,
        arrayElement.ArrayValue as element
        FROM GriegInputStream 
        CROSS APPLY GetArrayElements([mesurasdfes]) AS arrayElement  
)
SELECT
    temp.dataChannelId as sensorId, temp.element.dateTime, temp.element.value,temp.element.unit,temp.element.maxValue, temp.element.minValue
INTO
    Sensoroutput
FROM
    temp

我得到了无效的列名,在dataChannelId上不存在,但是措施似乎可以正常工作。如何在不抱怨流分析的情况下获取此价值?

1 个答案:

答案 0 :(得分:1)

您的示例json数据缺少方括号]

示例数据:

[
    {
        "dataChannelId": 8516,
        "measures": [
           {
                "dateTime": "2019-01-01T12:00:00",
           },
           {
                "dateTime": "2019-01-02T12:00:00",
           }
       ]
    }
]

查询sql:

WITH 
temp AS
(
    SELECT 
        jsoninput.dataChannelId,
        arrayElement.ArrayValue as element
        FROM jsoninput 
        CROSS APPLY GetArrayElements(jsoninput.measures) AS arrayElement  
)
SELECT
    temp.dataChannelId as sensorId, temp.element.dateTime
INTO
    Sensoroutput
FROM
    temp

输出:

enter image description here