流分析:对事件和参考执行 JOIN。 JSON 格式的数据

Posted

技术标签:

【中文标题】流分析:对事件和参考执行 JOIN。 JSON 格式的数据【英文标题】:Stream Analytics: performing a JOIN on events and ref. data in JSON 【发布时间】:2016-06-15 08:58:09 【问题描述】:

我想在 Azure 流分析中对传入的 JSON 事件和 JSON 引用数据执行 JOIN 查询。

JSON 事件如下所示:

"devicename":"12345","value":25

JSON 参考数据(简化)如下所示:


"Id": "configuration",
"Sites": [
    "Id": "b83939b5-6502-4140-b807-205162ac4939",
    "Name": "site1",
    "Location": 
        "Latitude": 5.000,
        "Longitude": 5.000
    ,
    "Lines": [
        "Id": "e707a451-948a-498e-80de-d61bc448a5ef",
        "Name": "line1",
        "Sections": [
            "Id": "d17d762c-4291-4912-9dcf-72113c9f0b4b",
            "Name": "section1",
            "Sensors": [
                "Id": "S1_PL1_LS1_M1_device_001",
                "Name": "sensor1",
                "ExpectedAVG": 55,
                "ExpectedMIN": 35,
                "ExpectedMAX": 75,
                "TypeOfSensor": "Humidity"
            , 
                "Id": "S1_PL1_LS1_M1_device_002",
                "Name": "sensor2",
                "ExpectedAVG": 105,
                "ExpectedMIN": 90,
                "ExpectedMAX": 118,
                "TypeOfSensor": "Temperature"
            ]
        ]
    ]
]

现在我想对传入的设备数据和参考数据执行 JOIN。

SELECT
    i.devicename as pk,
    i.value as rk,
    system.timestamp as time,
    r.Sites.Lines.Sections.Sensors.Temperature as Temperature,
    r.Sites.Lines.Sections.Sensors.Humidity as Humidity
INTO
    output
FROM 
    IoTHubStream i
INNER JOIN 
    Reference r ON r.Sites.Lines.Sections.Sensors.Id = i.devicename

现在该怎么做呢?问题是参考数据可以改变,我想动态处理。 我正在考虑使用 WHERE 语句,但我不知道这会是什么样子,非常欢迎一些建议/帮助。

提前致谢!

【问题讨论】:

【参考方案1】:

您可以使用本页 https://msdn.microsoft.com/en-us/library/azure/mt298451.aspx 中描述的 GetArrayElements 访问数组元素

如果您的数据更改导致无法使用 GetArrayElements,请分享有关其更改方式的详细信息。

【讨论】:

以上是关于流分析:对事件和参考执行 JOIN。 JSON 格式的数据的主要内容,如果未能解决你的问题,请参考以下文章

FLink的窗口机制与流处理Join的方案

如何捕获来自事件中心的错误 json 记录到 azure 流分析

流分析通过事件中心从 Python 反序列化 JSON

Application Insights 和 Azure 流分析查询自定义 JSON 属性

流分析输入上的参考数据连接不提供输出

使用火花流解析事件中心消息上的 JSON