azure Потоковая аналитика Custom json Вывод - PullRequest
1 голос
/ 31 января 2020

Мне нужно преобразовать простой 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
}
}

}

1 Ответ

0 голосов
/ 02 февраля 2020

Предполагая, что ваши справочные данные выглядят примерно так:

[
    {
        "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), которые у вас есть добавить, чтобы заставить это работать, являются:

sitefun c:

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

и telemetryfun c:

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

По существу, эти два Функции помогут вам преобразовать значения в желаемый JSON форматированный вывод.

Вывод локального теста выглядит следующим образом - но если вы выводите хранилище BLOB-объектов с сериализацией JSON, вы получите тот же формат, что и в вашем примере. enter image description here

...