【问题标题】:Transcoding arrays in Azure Stream AnalyticsAzure 流分析中的转码数组
【发布时间】:2017-04-21 14:48:47
【问题描述】:

假设我有以下 JSON 数据结构进入流分析(由 IoT 设备生成):

{
    "user":"bob",
    "messages":[
    {
        "mac":"AA:BB:CC:DD:EE:FF",
        "data":[
            {
                "messagetype1":{
                    "param1":83,
                    "param2":82
                },
                "messagetype2":{
                    "param3":83,
                    "param4":82
                }
            }
        ]
    }]
}

您可以在上面看到数据数组包含命名对象。我需要存储对象名称以及其他参数。是否有内置函数可以访问数组元素的对象名称? messagetype1 和 messagetype2 只是示例。

例如我想存储:

{ "user":"bob", "mac":"AA:BB:CC:DD:EE:FF", "type":"messagetype1", "param1":83}
{ "user":"bob", "mac":"AA:BB:CC:DD:EE:FF", "type":"messagetype1", "param2":82}
{ "user":"bob", "mac":"AA:BB:CC:DD:EE:FF", "type":"messagetype2", "param3":83}
{ "user":"bob", "mac":"AA:BB:CC:DD:EE:FF", "type":"messagetype2", "param4":82}

【问题讨论】:

    标签: json azure azure-stream-analytics


    【解决方案1】:

    处理这个问题的最好方法可能是使用JavaScript UDFs

    虽然通常可以通过CROSS APPLY 绑定ArrayRecord 函数的某种组合,但在您的情况下,复杂性在于解开不同的messagetype* 记录。您将需要知道所有可能的 param* 名称的集合才能制作正确的查询。或者,您可以使用GetRecordProperties,但您最终将使用{... "field_name":"param1", "field_value":83} 结构而不是所需的{ ... "param1":83} 结构。

    【讨论】:

    • 嗨,我不知道 Azure 中的用户定义函数。我认为这应该有效。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-31
    相关资源
    最近更新 更多