2017-10-20 26 views
0

我有写一个查询提取表了从JSON文件阵列的一个问题: 的问题是如何让数组的信息“数据包”,其数组的内容,然后将它们全部放在一个普通的sql表中。Azure的数据流分析,查询JSON阵列

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

文件看起来是这样的:


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

我试图用获取数组元素的方法等的方法,但我从来没有能够进入第二级阵列,如“CrashNotification”的元素“dataPackets”的数组或“dataPackets”的数组“CrashMaxModuleAccelerations”的“模块”元素。

我看也在这里(Select the first element in a JSON array in Microsoft stream analytics query),它不工作。 我希望得到任何帮助:)

回答

0

根据您的架构,这里是查询的一个例子,将提取表具有以下的列:峨眉,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的数据流分析)

+0

非常感谢,它正在工作。 –

+0

亲爱的JS天青,请你对这个问题看,您的意见将非常感激:) https://stackoverflow.com/questions/47141061/azure-stream-analytics-error-with-customized-timestamp-by -while-applying-win –

+0

@AhmedEssam:对不起,我最初错过了你的消息。我看到我们的团队成员之一已经回答了这个问题。希望你现在畅通无阻。 –

0

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

所有你需要做的是原始JSON数据写入到跨越API的/collect端点,通过/process端点定义连续的SQL查询,然后推或通过/analyze端点提取数据。

这种方法无需处理任何基础数据基础设施,为您提供了一个基于SQL的办法处理这一类型的流分析的问题。