流分析JSON输入查询解析

问题描述 投票:0回答:2

我在摄入JSON虽然EventHub,通过工作流处理它,将其推到一个SQL Azure的DW做POC。

我曾与JSON摄入的工作之前,但我现在面临的困难是,在JSON中使用的命名结构。

下面是示例:

{
    "1-1": [{
            "Details": [{
                    "FirstName": "Super",
                    "LastName": "Man"                   
                }
            ]
        }
    ]
}

根元素有一个连字符( - ),我有艰难的时间,通过这个元素解析访问相关项目。

我曾尝试以下查询,我得到它输出到SQL表的空值:

--#1
SELECT
    ["2-1"].Details.FirstName AS First_Name
    ,["2-1"].Details.LastName AS Last_Name
INTO
    [SA-OUTPUT]
FROM
    [SA-INPUT]

--#2
SELECT
    [2-1].Details.FirstName AS First_Name
    ,[2-1].Details.LastName AS Last_Name
INTO
    [SA-OUTPUT]
FROM
    [SA-INPUT]

--#3
SELECT
    2-1.Details.FirstName AS First_Name
    ,2-1.Details.LastName AS Last_Name
INTO
    [SA-OUTPUT]
FROM
    [SA-INPUT]

--#4
SELECT
    SA-INPUT.["2-1"].Details.FirstName AS First_Name
    ,SA-INPUT.["2-1"].Details.LastName AS Last_Name
INTO
    [SA-OUTPUT]
FROM
    [SA-INPUT]

希望得到正确的方式做到这一点。

提前致谢。

azure azure-stream-analytics
2个回答
1
投票

你的JSON模式是嵌套的,但也有一定的阵列。为了读取数据,您将需要使用GetArrayElement功能。

这里有一个查询,将读取你的样本数据:

WITH Step1 AS(
SELECT GetArrayElement([1-1], 0) as FirstLevel
FROM iothub),
Step2 AS(
SELECT GetArrayElement(FirstLevel.Details,0) SecondLevel
FROM Step1)
SELECT SecondLevel.FirstName, SecondLevel.LastName from Step2

欲了解更多信息,你可以看看我们的页面Work with complex Data Types in JSON and AVRO

让我知道如果你有任何问题。

谢谢,JS(ASA队)


0
投票

它试图和它美丽的工作。如果可以说,我有机会从两个独立的数组元素的数据,我会创建两个单独的CTE。

{
    "1-1": [{
            "Details": [{
                    "FirstName": "Super",
                    "LastName": "Man"                   
                }
            ]
        }
    ]
},
{
    "2-1": [{
            "Address": [{
                    "Street": "Main",
                    "Lane": "Second"                   
                }
            ]
        }
    ]
}   

如何从两个热膨胀系数合并元素融入其中输出查询?我只能在下面一行是指CTE。

© www.soinside.com 2019 - 2024. All rights reserved.