Предполагая, что ваши справочные данные выглядят примерно так:
[
{
"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, вы получите тот же формат, что и в вашем примере.