【问题标题】:azure stream analytics custom json output天蓝色流分析自定义 json 输出
【发布时间】:2020-01-31 13:08:14
【问题描述】:

我需要将简单的 json 遥测数据包转换为自定义 json 输出。你能帮我实现这个目标吗?

输入流分析

{"Id":80,"deviceId":"10004","temperature":21.94489404790873,"humidity":63.377043919318496}

流分析的输出应该如下

{
 "SiteId":[
 80
],
"Name":"xxxx", -->hard coded value /reading from reference input
"Address":"xxxxx",-->hard coded value /reading from reference input
"telemetry":{
 "temperature":21.94489404790873,
 "humidity":63.377043919318496
}
}

}

【问题讨论】:

    标签: azure-stream-analytics stream-analytics


    【解决方案1】:

    假设您的参考数据如下所示:

    [
        {
            "id" : 80,
            "name" : "xxxx",
            "address" : "xxxx"
        },
    
        {
            "id" : 90,
            "name" : "yyyy",
            "address" : "yyyy"
        }
    ]
    

    您可以尝试以下查询:

    with telemetry as (select i.id, i.temperature, i.humidity, R.address, R.name from input i inner join RefData R on R.Id = i.Id )
    
    select udf.sitefunc(Id), name, address,  udf.telemetryfunc(temperature, humidity) as telemetry
    into output
    from telemetry
    

    您必须添加两个用户定义函数 (UDF) 才能使其正常工作,它们是:

    网站功能:

    function UDFSample(arg1) {
        'use strict';
        var sites = [
            arg1
        ];
        return sites;
    }
    

    和遥测功能:

    function UDFSample(arg1, arg2) {
        'use strict';
        var telemetry = {
            temperature : arg1,
            humidity : arg2
        };
        return telemetry;
    }
    

    本质上,这两个函数可帮助您将值转换为所需的 JSON 格式输出。

    本地测试输出如下所示 - 但如果您的输出是带有 JSON 序列化的 Blob 存储,您将获得与示例中相同的格式。

    【讨论】:

    • 感谢您提供详细的输入,我将尝试这些。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多