सेसम डॉक्स सूचियों को समतल करने का एक तरीका दिखाते हैं, लेकिन कोई इस तरह की गहरी संरचना को कैसे समतल करेगा? दस्तावेज़ीकरण निर्दिष्ट करता है कि यह पुनरावर्ती रूप से समतल नहीं हो सकता है।

"logdata": {
  "metrics": {
    "entities": {
      "entities_per_second": "~f463.18217846895715"
    }
  }
}
0
Ole-Morten Dale 9 नवम्बर 2018, 15:30

1 उत्तर

सबसे बढ़िया उत्तर

आप डीटीएल ट्रांसफ़ॉर्म के साथ पुनरावर्ती फ़्लैटनिंग कर सकते हैं, नीचे उदाहरण देखें:

{
  "_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."]
          ]
        ]
      ]
    }
  }
}

यह निम्नलिखित आउटपुट करना चाहिए:

{
  "flattened": {
    "logdata_metrics_entities_entities_per_second": "~f463.18217846895715"
  },
  "value": {
    "logdata": {
      "metrics": {
        "entities": {
          "entities_per_second": "~f463.18217846895715"
        }
      }
    }
  }
}
0
Ole-Morten Dale 9 नवम्बर 2018, 12:30