Как разобрать вложенный JSON без массива в BigQuery?

У меня есть таблица со столбцом, заполненным строковым JSON, поэтому у меня есть JSON с примером как таковой:

{
    "id_1": {
        "age": "10",
        "size": "M",
    },
    "id_2": {
        "age": "20",
        "size": "L",
    },
    ...
}

Я хочу проанализировать его в BigQuery, чтобы получить результат таблицы как таковой:

идентификатор возраст размер id_1 10 М id_2 20 л

Я хочу, чтобы ключ id присутствовал в таблице. Как я могу этого добиться?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
0
81
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ниже показано, как использовать пользовательский UDF для решения вашей проблемы.

CREATE TEMP FUNCTION flatten_json(json STRING)
RETURNS ARRAY<STRUCT<id STRING, age STRING, size STRING>>
LANGUAGE js AS """
  result = [];
  for (const [key, value] of Object.entries(JSON.parse(json))) {
    value["id"] = key; result.push(value);
  }
  return result;
""";

WITH sample_table AS (
  SELECT '''{
    "id_1": {
        "age": "10",
        "size": "M"
    },
    "id_2": {
        "age": "20",
        "size": "L"
    }
  }''' json
)
SELECT flattened.*
  FROM sample_table, UNNEST(flatten_json(json)) flattened;

Результаты запроса

Другие вопросы по теме