【问题标题】:How to parse data in a variety of data formats/structures?如何解析各种数据格式/结构的数据?
【发布时间】:2021-06-17 23:01:56
【问题描述】:

我对数据工程领域非常陌生,但这里是:

我有用户上传各种格式的数据,我想将其转换为单一标准格式。例如:

源格式 #1

{
  "firstName": "Bob",
  "lastName": "Smith",
  "birthdate": "1990-01-01",
  "favoriteFood": "pizza",
  "favoriteDrink": "beer"
}

源格式 #2

{
  "name": {
    "first": "Bob",
    "last": "Smith"
  }
  "birthdate": {
    "year": "1990",
    "month": "01",
    "day": "01"
  }
  "favorites": {
    "food": "pizza",
    "drink": "beer"
  }
}

目标格式:

{
  "name": {
    "first": "Bob",
    "last": "Smith"
  }
  "birthdate": "1990-01-01",
  "favorites": {
    "food": "pizza",
    "drink": "beer"
  }
}

等等。可能有数十种或数百种不同的源格式我想要转换成某种目标格式。

我的第一个想法是构建一种“格式目录”,我会根据它测试每种格式,并在匹配时将转换/映射应用于目标格式。在我看来,这听起来像是一个很常见的问题,它可能已经以某种方式得到了解决,但我什至不确定谷歌是为了什么。

到目前为止,我遇到的唯一一种 听起来是正确的事情是 AWS Glue(它谈到“自动模式发现”),但即使这样似乎也更针对提取数据各种数据库的集合,并将它们 ETL 到单个数据库中,而不是读取原始数据(从发送到 API 端点的数据或从磁盘上的平面文件)。

我感兴趣的功能,按需求顺序排列:

  1. 如果源数据与已知(或自动发现)格式匹配,请将其转换为目标格式。
  2. 定义必填和可选字段。示例:如果favorites 不存在,仍提取其他“已知”字段
  3. 能够识别不同类型的格式(例如 JSON 与 XML)。

编辑:以防万一,我现有的大部分代码都是用 Python 编写的,但这是一个足够大的用例,我可以用另一种语言构建一个单独的服务来处理。

【问题讨论】:

  • 您在问题中提供了几种源格式。这些的目标格式是什么样的,是否有“映射”来做到这一点?原始数据源也总是 JSON 格式,还是可以分隔等?
  • @vmachan 为完整性添加了目标格式。对于此用例,源始终为 JSON 格式。

标签: validation parsing etl data-modeling data-ingestion


【解决方案1】:

我可能遗漏了一些东西,但这是我所知道的\发现的。

我认为您不会找到完全符合您要求的现成产品,但我认为您可以足够接近。

由于这是一个项目而不是一个快速的问题,我怀疑你会得到一个完整的代码答案。

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2018-12-03
    相关资源
    最近更新 更多