【问题标题】:Amazon Redshift gets only 1 row from JSON with COPY commandAmazon Redshift 使用 COPY 命令仅从 JSON 中获取 1 行
【发布时间】:2020-08-04 13:54:01
【问题描述】:

我正在尝试将具有以下结构的 GA 数据复制到 Redshift 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 路径以从文件中加载所有数据?

谢谢!

【问题讨论】:

  • 向我们展示您的 SQL 尝试。
  • 从 's3://mbit-warehouse/TransferGANonBounceSessionsDataFromGaToS3/f33d58b1960c20d5bf84fc2ee4ae031a-2020-08-04T10:24:776' iam_role 'arn:aws:iam::role 复制 dev.google_analytics.ga_country_test /XXXXX' JSON 's3://mbit-warehouse/TransferGANonBounceSessionsDataFromGaToS3/testfirst_copy.json' DATEFORMAT 'YYYYMMDD'

标签: sql json amazon-web-services copy amazon-redshift


【解决方案1】:

由于您指定的索引[0](第一项),Redshift 只能看到第一行。您目前不能直接摄取像这样嵌套的 JSON。

要访问此文件中的所有嵌套数组,您需要将其定义为外部表,然后使用嵌套数据查询语法。

从这里开始:"Tutorial: Querying nested data with Amazon Redshift Spectrum"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-01
    • 2017-07-31
    • 2016-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多