2

我需要将简单的 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
}
}

}

4

1 回答 1

0

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

[
    {
        "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 存储,您将获得与示例中相同的格式。 在此处输入图像描述

于 2020-02-02T16:16:33.703 回答