Azure 流分析转换数组值
Azure Stream Analytics convert array values
非常具体的问题,如果我的流分析组件中有以下输入:
//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
}]
所以,我不需要单位值,为了保存space,我想使用'name'作为键,'value'作为键键值数组的值。
这是我当前的查询:
SELECT
input.outputs as outputs
INTO "to-mongodb"
FROM "from-iothub" input
但这当然会创建单独的 JSON 数组,其结构与我输入的结构相同。
有人知道怎么做吗?
在最坏的情况下,仅过滤掉 'unit' 也已经很有帮助了。
提前致谢
您可以在 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
测试输出:
希望对你有帮助。
非常具体的问题,如果我的流分析组件中有以下输入:
//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
}]
所以,我不需要单位值,为了保存space,我想使用'name'作为键,'value'作为键键值数组的值。 这是我当前的查询:
SELECT
input.outputs as outputs
INTO "to-mongodb"
FROM "from-iothub" input
但这当然会创建单独的 JSON 数组,其结构与我输入的结构相同。
有人知道怎么做吗?
在最坏的情况下,仅过滤掉 'unit' 也已经很有帮助了。
提前致谢
您可以在 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
测试输出:
希望对你有帮助。