如何使用 Azure 流分析查询创建复杂类型
Posted
技术标签:
【中文标题】如何使用 Azure 流分析查询创建复杂类型【英文标题】:How to create complex types with Azure Stream Analytics queries 【发布时间】:2017-03-13 14:00:38 【问题描述】:我尝试将平面 JSON 数据从事件中心转换为 DocumentDB。目标结构应如下所示:
"id" : 1
"field_1" : "value_1",
"details" :
"detail_field_1":"abc",
"detail_field_2":"def"
从源创建:
"id":1,
"field_1" : "value_1",
"detail_field_1":"abc",
"detail_field_2":"def"
我查看了 Azure 流分析的文档,但没有明确说明如何创建正确的查询。
谁能帮帮我?
【问题讨论】:
【参考方案1】:您可以利用 the new javascript UDF feature 将嵌套的 JSON 对象写入输出。
注册一个用户自定义函数,“UDF.getDetails()”如下:
function main(obj)
//get details object from input payload
var details_obj = ;
details_obj.detail_field_1 = obj.detail_field_1;
details_obj.detail_field_2 = obj.detail_field_2;
return JSON.stringify(details_obj);
然后在查询中调用 UDF 以获取嵌套 JSON 对象的字符串。
SELECT
id,
field_1,
UDF.getDetails(input) As details
INTO output
FROM input
【讨论】:
【参考方案2】:使用 JavaScript UDF 功能,您可以返回复杂的 JSON。 示例写函数。
function main(obj)
//get details object from input payload
var details_obj = ;
details_obj.detail_field_1 = obj.detail_field_1;
details_obj.detail_field_2 = obj.detail_field_2;
return details_obj;
您不应该使用 JSON.stringify,因为它会使其成为字符串而不是 JSON 对象。
像这样使用它。
SELECT id, field_1, UDF.getDetails(input) As details
INTO output
FROM input
【讨论】:
以上是关于如何使用 Azure 流分析查询创建复杂类型的主要内容,如果未能解决你的问题,请参考以下文章