首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >利用DTL对Sesam中的深层实体结构进行平坦化

利用DTL对Sesam中的深层实体结构进行平坦化
EN

Stack Overflow用户
提问于 2018-11-09 12:30:23
回答 1查看 78关注 0票数 0

Sesam文档展示了一种扁平列表的方法,但是如何才能使更深层次的结构变得像这样呢?文档指定它不能递归地扁平。

代码语言:javascript
复制
"logdata": {
  "metrics": {
    "entities": {
      "entities_per_second": "~f463.18217846895715"
    }
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-09 12:30:23

您可以使用进行递归平坦,请参见下面的示例:

代码语言:javascript
复制
{
  "_id": "recursive-flattening",
  "type": "pipe",
  "source": {
    "type": "embedded",
    "entities": [{
      "_id": "foo",
      "value": {
        "logdata": {
          "metrics": {
            "entities": {
              "entities_per_second": "~f463.18217846895715"
            }
          }
        }
      }
    }]
  },
  "transform": {
    "type": "dtl",
    "rules": {
      "default": [
        ["copy", "*"],
        ["add", "flattened",
          ["apply", "flatten-dict", "_S.value"]
        ]
      ],
      "do-flatten": [
        ["if",
          ["is-dict", "_S.value"],
          ["merge",
            ["apply", "do-flatten",
              ["key-values",
                ["map-dict",
                  ["concat", "_S.key", "_", "_."], "_.", "_S.value"]
              ]
            ]
          ],
          ["add", "_S.key", "_S.value"]
        ]
      ],
      "flatten-dict": [
        ["merge",
          ["apply", "do-flatten",
            ["key-values", "_S."]
          ]
        ]
      ]
    }
  }
}

这将产生以下结果:

代码语言:javascript
复制
{
  "flattened": {
    "logdata_metrics_entities_entities_per_second": "~f463.18217846895715"
  },
  "value": {
    "logdata": {
      "metrics": {
        "entities": {
          "entities_per_second": "~f463.18217846895715"
        }
      }
    }
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53225760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档