如何解决将嵌套 JSON 导入 Amazon Redshift 时出现的“无效 JSONPath 格式”错误?

问题描述 投票:0回答:1

我尝试将嵌套 JSON 列表插入 Amazon Redshift,但遇到错误:

Invalid JSONPath format: Member is not an object.
这可能是由于错误地使用 JSONPaths 来访问嵌套对象。

这是我正在使用的 JSON:

{
    "UserId": 78910,
    "UserName": "johndoe123",
    "AccountDetails": {
        "AccountType": "Premium",
        "CreatedDate": "2023-01-15T08:30:00"
    },
    "RecentActivities": [
        {
            "Activity": "Logged In",
            "Timestamp": "2023-10-10T14:20:00+00:00"
        },
        {
            "Activity": "Updated Profile",
            "Timestamp": "2023-10-11T11:45:00+00:00"
        },
        {
            "Activity": "Purchased Item",
            "ItemId": 45678,
            "Timestamp": "2023-10-12T09:00:00+00:00"
        }
    ],
    "Preferences": {
        "Language": "en-US",
        "NotificationsEnabled": true
    }
}

我使用的 JSONPaths 是:

{
    "jsonpaths": [
        "$.UserId",
        "$.UserName",
        "$.AccountDetails.AccountType",
        "$.AccountDetails.CreatedDate",
        "$.RecentActivities[*].Activity",
        "$.RecentActivities[*].Timestamp"
    ]
}

我的目标是实现下表输出:

| UserId | UserName   | AccountType | CreatedDate         | Activity         | Timestamp               |
|--------|------------|-------------|---------------------|------------------|-------------------------|
| 78910  | johndoe123 | Premium     | 2023-01-15T08:30:00 | Logged In        | 2023-10-10T14:20:00+00:00 |
| 78910  | johndoe123 | Premium     | 2023-01-15T08:30:00 | Updated Profile  | 2023-10-11T11:45:00+00:00 |
| 78910  | johndoe123 | Premium     | 2023-01-15T08:30:00 | Purchased Item   | 2023-10-12T09:00:00+00:00 |
amazon-web-services amazon-redshift
1个回答
0
投票

不能对数组索引使用通配符。 Copy 是行映射的行,因此您可以将第 0 个条目放入表中,我希望您希望将数组展开为许多行。 为此,您需要导入数组,然后利用临时表取消嵌套。

有多种方法可以做到这一点,但我希望最简单的方法是将数组作为 SUPER 导入,然后取消数组的嵌套。 请参阅:https://docs.aws.amazon.com/redshift/latest/dg/query-super.html

© www.soinside.com 2019 - 2024. All rights reserved.