【问题标题】:How to create complex types with Azure Stream Analytics queries如何使用 Azure 流分析查询创建复杂类型
【发布时间】: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 流分析的文档,但没有明确说明如何创建正确的查询。

谁能帮帮我?

【问题讨论】:

    标签: azure azure-stream-analytics


    【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2018-11-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-08
        • 1970-01-01
        • 1970-01-01
        • 2019-06-11
        相关资源
        最近更新 更多