Azure 流分析中的转码数组

Posted

技术标签:

【中文标题】Azure 流分析中的转码数组【英文标题】:Transcoding arrays in Azure Stream Analytics 【发布时间】: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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

嗨,我不知道 Azure 中的用户定义函数。我认为这应该有效。非常感谢。

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

url中传递中文参数时的转码与解码

php实现转码的方式(支持数组类型转码)

Azure Functions + Azure Batch实现MP3音频转码方案

base64的转码与解码

使用node中的iconv-lite实现对“gbk”格式的转码

js base64的转码与解码