У меня есть таблица со столбцом, заполненным строковым JSON, поэтому у меня есть JSON с примером как таковой:
{
"id_1": {
"age": "10",
"size": "M",
},
"id_2": {
"age": "20",
"size": "L",
},
...
}
Я хочу проанализировать его в BigQuery, чтобы получить результат таблицы как таковой:
Я хочу, чтобы ключ id
присутствовал в таблице. Как я могу этого добиться?
Ниже показано, как использовать пользовательский 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;
Результаты запроса