amazonredshift使用copy命令仅从json获取1行

cs7cruho  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(221)

我正试图复制到带有ga数据的红移json文件中,其结构如下:

{
  "reports": [
    {
      "columnHeader": {
        "dimensions": [
          "ga:date",
          "ga:country"
        ],
        "metricHeader": {
          "metricHeaderEntries": [
            {
              "name": "ga:users",
              "type": "INTEGER"
            },
            {
              "name": "ga:newUsers",
              "type": "INTEGER"
            },
            {
              "name": "ga:sessionduration",
              "type": "TIME"
            }
          ]
        }
      },
      "data": {
        "rows": [
          {
            "dimensions": [
              "20200731",
              "(not set)"
            ],
            "metrics": [
              {
                "values": [
                  "7",
                  "6",
                  "5.0"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "20200731",
              "Albania"
            ],
            "metrics": [
              {
                "values": [
                  "2",
                  "1",
                  "0.0"
                ]
              }
            ]
          },
          {
            "dimensions": [
              "20200731",
              "Algeria"
            ],
            "metrics": [
              {
                "values": [
                  "1",
                  "1",
                  "224.0"
                ]
              }
            ]
          },

如果使用以下json路径,它只加载数组中的第一个对象:

{
    "jsonpaths": [
       "$['reports'][0]['data']['rows'][0]['dimensions'][0]",
       "$['reports'][0]['data']['rows'][0]['dimensions'][1]",
       "$['reports'][0]['data']['rows'][0]['metrics'][0]['values'][0]" ,
       "$['reports'][0]['data']['rows'][0]['metrics'][0]['values'][1]" ,
       "$['reports'][0]['data']['rows'][0]['metrics'][0]['values'][2]" 
    ]
}

我试图将['rows'][0]更改为['rows'][*]和['rows'],但没有任何帮助。我应该如何更改json路径来加载文件中的所有数据?
谢谢!

7cwmlq89

7cwmlq891#

由于指定的索引,redshift只能看到第一行 [0] (第一项)。您当前不能直接接收像这样嵌套的json。
要访问此文件中的所有嵌套数组,需要将其定义为外部表,然后使用嵌套数据查询语法。
从这里开始:“教程:使用amazon红移光谱查询嵌套数据”

相关问题