建议的JSON结构,以供Glue抓取混合模式事件

时间:2018-09-05 09:29:21

标签: json amazon-redshift aws-glue

我有一些JSON,其中包含具有不同架构的不同事件,如下所示:

{
    "events": [{
        "key": "an_action",
        "properties": {
            "user": "111111111111",
            "datetime": "2018-9-05 10:00:00",
            "value_a": "123",
            "value_b": "123",
            "value_c": "123"
        }
    },
    {
        "key": "another_action",
        "properties": {
            "user": "111111111111",
            "datetime": "2018-9-05 10:00:00",
            "quantity": "1",
            "cash": "£123",
            "something": "else"
        }
    },
    {
        "key": "one_more_action",
        "properties": {
            "user": "111111111111",
            "datetime": "2018-9-05 10:00:00",
            "activated": "true"
        }
    }]
}

当我尝试用Glue解析它时,我最终得到了一个带有单列的表:

  

事件:数组

我尝试使用$ .events [*]的JSON分类器,但这无济于事。

我觉得问题在于我的输入JSON结构无法与Glue搜寻器配合使用。

更改JSON结构似乎是在到达Glue之前要做的正确的事情,但是从Glue文档中尚不清楚,是否存在建议的结构用于在单个JSON块中处理混合模式事件。

在我的JSON中,“键”包含事件的名称,“属性”是属性的列表。

我最终希望在Redshift中为每个事件提供一个表(例如an_action,another_action,one_more_action)。从那里,我可以看一下如何加载到事实/维度星型架构中,但这将在以后提供。

简而言之,我的问题是Glue可以从混合模式JSON创建多个表吗?如果是这样,那么首选的JSON结构是什么呢?

  • 具有不同架构的多个事件
  • 每个事件的多个实例(记录)

谢谢

1 个答案:

答案 0 :(得分:0)

与支持人员联系,并被告知Glue搜寻器在同一文件中不支持多个架构。因此,我修改了原始JSON,以使每个文件具有一个架构,每个文件具有多个记录。