Azure 流分析如何展平 json 数组

Posted

技术标签:

【中文标题】Azure 流分析如何展平 json 数组【英文标题】:Azure stream analytics how to flatten json array 【发布时间】:2020-10-27 05:27:38 【问题描述】:

我有一个任务需要展平一些 json 数组 假设我的示例 json 是并且我想展平两个数组 temperature_Readings 和空气污染读数,即我的结果必须有 5 行并且 air_pollution(array value) 的列应该为空

我该怎么做?

示例 JSON

    
        "sensor_readings": 
            "readings":
            "temperature_readings": [
                
                    "date": "02-02-2020",
                    "hour": "12",
                    "second": "00",
                    "temperature": "22.12C"
                ,
                
                    "date": "02-02-2020",
                    "hour": "13",
                    "second": "00",
                    "temperature": "22.2C"
                ,
                
                    "date": "02-02-2020",
                    "hour": "14",
                    "second": "00",
                    "temperature": "12.12C"
                ,
                
                    "date": "02-02-2020",
                    "hour": "15",
                    "second": "00",
                    "temperature": "22.12C"
                ,
                
                    "date": "02-02-2020",
                    "hour": "16",
                    "second": "00",
                    "temperature": "22.12C"
                
            ]
        
    ,
        "air_pollution_readings": 
            [
                
                    "date": "02-02-2020",
                    "hour": "12",
                    "second": "00",
                    "element":"o3",
                    "particulate": "2.2"
                ,
                
                    "date": "02-02-2020",
                    "hour": "13",
                    "second": "00",
                    "element":"o3",
                    "particulate": "2.1"
                
            ]
        
        ,
        "siteid": "a1234566",
        "deviceid": "2343434"
    

谢谢 问候 普里亚

【问题讨论】:

【参考方案1】:

这里有一个关于如何“解包”你的读数数组的想法。

with sensorReadings as (Select sensor_readings.readings.temperature_readings from input),
inputValues as (Select message.ArrayValue as Data from sensorReadings CROSS APPLY GetArrayElements(sensorReadings.temperature_readings) as message)


SELECT *
INTO output
FROM inputValues

【讨论】:

感谢我能够使用 GetArrayElements 解压缩数组,但我真正的问题是展平两个数组并将它们连接起来,这样我就有 5 个温度值和 2 个空气污染数组跨度> 好的,你如何将 5 行温度映射到 air pol 的 2 项。 ?基于哪些标准,或类似的标准?

以上是关于Azure 流分析如何展平 json 数组的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Azure 流分析中的“类字典”结构转换为带有 javascript UDF 的多维数组?

在 Azure 流分析中的属性内提取数组

在 Azure 流分析中访问数组元素

在 Azure 流分析查询中同时使用数组和记录类型

Azure 流分析中的转码数组

如何在 Azure 数据工厂中正确展平分号数组?