【问题标题】:Azure Stream Analytics convert array valuesAzure 流分析转换数组值
【发布时间】:2018-06-18 14:47:36
【问题描述】:

非常具体的问题,如果我的流式分析组件中有以下输入:

 //some input
 "outputs": [
  {
    "name": "output1",
    "unit": "unit1",
    "value": "95813"
  },
  {
    "name": "output2",
    "unit": "unit2",
    "value": "303883"
  }, // and more array values

如何获得如下所示的 JSON 结果:

"outputs":[ {
   "output1":95813,
   "output2":303883
   //etc
 }]

所以,我不需要单位值,为了节省空间,我想使用'name'作为键,'value'作为键值数组的值。 这是我当前的查询:

SELECT
input.outputs as outputs
INTO "to-mongodb"
FROM "from-iothub" input

但这当然会创建单独的 JSON 数组,其结构与我的输入相同。

有人知道如何做到这一点吗?

在最坏的情况下,仅过滤掉“单元”也已经很有帮助了。

提前致谢

【问题讨论】:

    标签: azure azure-stream-analytics


    【解决方案1】:

    您可以在 Azure 流分析中使用 user-defined functions。请参考我为您测试的示例函数。

    UDF:

    function main(arg) {
        var array = arg.outputs;
        var returnJson = {};
        var outputArray = [];
        var map = {};
        for(var i=0;i<array.length;i++){        
            var key=array[i].name;        
            map[key] = array[i].value;      
        }
        outputArray.push(map);
        returnJson = {"outputs" : outputArray};
        return returnJson;  
    }
    

    查询:

    WITH 
    c AS
    (
        SELECT 
        udf.processArray(jsoninput) as result
        from jsoninput
    )
    SELECT
        c.result
    INTO
        jaycosmostest
    FROM
        c
    

    测试输出:

    希望对你有帮助。

    【讨论】:

    • 非常感谢杰伊!这就像一个魅力!我不知道您可以使用自定义的 Javascript 片段。我得到了我想要的格式,你是一个救生员!再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    相关资源
    最近更新 更多