Как вставить json из API в базу данных snowflake с помощью Python?

#python #python-3.x #api #linkedin-api #snowflake-cloud-data-platform

#python #python-3.x #API #linkedin-api #snowflake-cloud-data-platform

Вопрос:

Я получаю данные из Linkedin AD API с использованием python.
Я получаю данные в виде строки json.
Как я могу вставить этот json в таблицу Snowfalke со столбцом variant?
Вместо variant поля внутри «элементов» также могут быть вставлены как обычные.
Я новичок как в json, так и в python, поэтому хотел бы получить некоторую помощь по этому вопросу.
Вот пример строки json, которую я получаю.

 {
    "elements": [
        {
            "dateRange": {
                "start": {
                    "month": 3,
                    "year": 2019,
                    "day": 3
                },
                "end": {
                    "month": 3,
                    "year": 2019,
                    "day": 3
                }
            },
            "clicks": 11,
            "impressions": 2453,
            "pivotValues": [
                "urn:li:sponsoredCampaign:1234567"
            ]
        },
        {
            "dateRange": {
                "start": {
                    "month": 3,
                    "year": 2019,
                    "day": 4
                },
                "end": {
                    "month": 3,
                    "year": 2019,
                    "day": 4
                }
            },
            "clicks": 4,
            "impressions": 816,
            "pivotValues": [
                "urn:li:sponsoredCampaign:1234567"
            ]
        },
        {
            "dateRange": {
                "start": {
                    "month": 3,
                    "year": 2019,
                    "day": 7
                },
                "end": {
                    "month": 3,
                    "year": 2019,
                    "day": 7
                }
            },
            "clicks": 1,
            "impressions": 629,
            "pivotValues": [
                "urn:li:sponsoredCampaign:1234565"
            ]
        },
        {
            "dateRange": {
                "start": {
                    "month": 3,
                    "year": 2019,
                    "day": 21
                },
                "end": {
                    "month": 3,
                    "year": 2019,
                    "day": 21
                }
            },
            "clicks": 3,
            "impressions": 154,
            "pivotValues": [
                "urn:li:sponsoredCampaign:1323516"
            ]
        }
    ],
    "paging": {
        "count": 10,
        "start": 0,
        "links": []
    }
}
  

Комментарии:

1. Вероятно, вам следует быть более конкретным. Является ли весь JSON строкой? Это маловероятно. Предоставьте образец строки или JSON и будьте более конкретны в том, что вы хотите — двусмысленность приведет только к игнорированию вашего вопроса.

2. Спасибо за предложение. Я обновил вопрос.

Ответ №1:

Здесь может быть полезна документация.

В частности:

 INSERT INTO myTable (myColumn) 
SELECT ('{"key3": "value3", "key4": "value4"}'::VARIANT);
  

Просто вставьте свою строку JSON в соответствующее место.

Ответ №2:

Вот пример на python того, как вставлять данные JSON:

https://github.com/snowflakedb/snowflake-connector-python/blob/master/test/test_cursor.py#L456

Я полагаю, вам не хватает parse_json функции из вашей вставки.