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

Posted

技术标签:

【中文标题】在 Azure 流分析中的属性内提取数组【英文标题】:Extracting Array inside a Property in Azure Stream Analytics 【发布时间】:2018-04-14 19:57:16 【问题描述】:

到目前为止,我没有运气通过流分析作业从 JSON 字符串中提取某些宽格式的值。

JSON 格式如下:

"devicename":"demo","msgtime":"2018-04-13T11:00:00.0000000Z",
"payload":["Sensor":"one","Value":1.817,"Unit":"W", 
"Sensor":"two","Value":0.481,"Unit":"W", 
"Sensor":"three","Value":0.153,"Unit":"W"]

我正在尝试以以下格式获取它:

name    one     two     three

demo    1.817   0.481   0.153

…       …       …       …

我尝试使用“Cross APPLY GetPropertyValues(input)”获取值,但无法以宽格式获取。

【问题讨论】:

【参考方案1】:

有一篇博客文章描述了您的场景的查询模式: Using Azure Stream Analytics javascript UDF to lookup values in JSON array.

【讨论】:

这现在是一个死链接,您能否在此处将该博客文章的相关部分添加到您的实际答案中?【参考方案2】:

试试下面的代码

  SELECT
            localInput.devicename,
            udf.getValue('one', localInput.payload) as One,
            udf.getValue('two', localInput.payload) as Two,
            udf.getValue('three', localInput.payload) as Three
        FROM localInput;

  function main(identifier, arr) 
    var result = null;

    if (Object.prototype.toString.call(arr) == "[object Array]") 
        for (i = 0; i < arr.length; i++) 
            if (arr[i].type == identifier) 
                result = arr[i].value;
            
        
    
    return result;
  

【讨论】:

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

如何在 Azure 流分析中展平嵌套的 json 数据

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

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

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

Azure 流分析转换数组值

Azure 流分析如何展平 json 数组