Azure流分析 - 查询JSON阵列数组

时间:2017-10-20 09:40:01

标签: arrays azure-stream-analytics

我在编写查询时遇到问题,要从json文件中提取数组中的表: 问题是如何获取数组“数据包”及其数组内容的信息,然后将它们全部放在普通的sql表中。

有一个难题是“CrashNotification”和“CrashMaxModuleAccelerations”,我不知道如何定义和使用它们。

该文件如下所示:

    { "imei": { "imei": "351631044527130F", "imeiNotEncoded":                         
"351631044527130" 
}, 
"dataPackets": [ [ "CrashNotification", { "version": 1, "id": 28 } ], [ 
"CrashMaxModuleAccelerations", { "version": 1, "module": [ -1243, -626, 
14048 ] } ] ]}

我尝试使用Get数组元素方法和其他方法,但我永远无法访问第二级数组,如“dataPackets”的“CrashNotification”元素或“CrashMaxModuleAccelerations”数组的“模块”元素dataPackets”。

我也在这里(Select the first element in a JSON array in Microsoft stream analytics query)看了它并没有用。 我将不胜感激任何帮助:)

2 个答案:

答案 0 :(得分:1)

根据您的架构,这是一个查询示例,它将提取包含以下列的表:emei,crashNotification_version,crashNotification_id

WITH Datapackets AS
(
SELECT imei.imei as imei,
        GetArrayElement(Datapackets, 0) as CrashNotification
FROM input
)
SELECT  
    imei,
    GetRecordPropertyValue (GetArrayElement(CrashNotification, 1), 'version') as crashNotification_version,
    GetRecordPropertyValue (GetArrayElement(CrashNotification, 1), 'id') as crashNotification_id
FROM Datapackets

如果您有任何进一步的问题,请与我们联系。

谢谢,

JS(Azure流分析)

答案 1 :(得分:0)

我们构建了一个名为Stride的HTTP API,用于将流式JSON数据转换为仅使用SQL的实时增量更新表。

您需要做的就是将原始JSON数据写入Stride API的/collect端点,通过/process端点定义连续的SQL查询,然后推或拉数据通过/analyze端点。

这种方法消除了处理任何底层数据基础架构的需要,并为您提供了基于SQL的方法来解决此类流式分析问题。