Azure Stream Analytics中的UDF在JSON中输出别名

时间:2018-02-06 06:29:11

标签: azure-stream-analytics

斯里普在SAJ:

SELECT 

udf.createJsonMessage(param1, param2)

INTO Output
FROM  EventHubLocal  eventHub

删除了其他不需要的东西。

UDF:

function CreateJsonMessageForOutput(param1, param2) {
    var obj = new Object();
    obj.Prop1 = param1;
    obj.Prop2 = param2;

    return JSON.stringify(obj);
}

此处不需要删除代码。

输出JSON包含函数别名:

{
"createjsonmessage": "{\"Prop1\":\"param1\",\"Prop2\":\"param2\"}"
}

我该怎么做以这种格式:

{
    \"Prop1\":\"param1\",
    \"Prop2\":\"param2\"
}

2 个答案:

答案 0 :(得分:0)

一种可能的方法是从对象中提取不同的元素。 请参阅以下示例:

WITH step1 AS(
            SELECT udf.createJsonMessage(param1, param2)
            FROM EventHubLocal eventHub
)
SELECT createJsonMessage.Prop1, createJsonMessage.Prop2
INTO Output
FROM step1

这只需要对UDF函数进行一些小改动:

function CreateJsonMessageForOutput(param1, param2) {
  var obj = new Object();
  obj.Prop1 = param1;
  obj.Prop2 = param2;

  return obj;
}

谢谢, JS

答案 1 :(得分:0)

要获取JSON对象的值,我们还可以使用GetRecordPropertyValue方法。其中属性名称为字符串表达式。

此UDF函数将返回JSON对象

function CreateJsonMessageForOutput(param1, param2) {
  var obj = new Object();
  obj.Prop1 = param1;
  obj.Prop2 = param2;
  return obj;
}

查询

WITH step1 AS(SELECT udf.createJsonMessage(param1, param2)
            FROM EventHubLocal eventHub)
SELECT GetRecordPropertyValue(createJsonMessage,'Prop1') as Prop1, GetRecordPropertyValue(createJsonMessage,'Prop2') as Prop2
INTO Output
FROM step1