BigQuery concat вложенный массив json

#google-bigquery

# #google-bigquery

Вопрос:

У меня есть данные, которые выглядят как

 {
    "Attributes": [
        {
            "values": [
                {
                    "value": "20003"
                },
                {
                    "value": "30075"
                },
                {
                    "value": "40060"
                }
            ],
            "name": "price"
        }
    ],
    "attr2" : "val"
}
 

Результат, который я хочу, — это объединить все значения во вложенном массиве json

 price, "20003, 30075, 40060"
 

Я попробовал несколько запросов, но не смог получить правильный вывод.

Ответ №1:

Вы можете использовать JSON_EXTRACT_ARRAY и ARRAY_TO_STRING:

 WITH test_json AS (
  SELECT
    '''{
        "Attributes": [
            {
                "values": [
                    {
                        "value": "20003"
                    },
                    {
                        "value": "30075"
                    },
                    {
                        "value": "40060"
                    }
                ],
                "name": "price"
            }
        ],
        "attr2" : "val"
    }''' AS json_string
),
values_concatenated AS (
  SELECT ARRAY_TO_STRING(
    ARRAY(
      SELECT JSON_VALUE(json_values, '$.value')
      FROM UNNEST((SELECT JSON_EXTRACT_ARRAY(json_string, '$.Attributes[0].values') AS json_values FROM test_json)) as json_values
    ),
    ', '
  ) as values
)
SELECT
  (select json_value(json_string, '$.Attributes[0].name') from test_json),
  (select values from values_concatenated)
 

введите описание изображения здесь