Есть ли способ создать JSON в BigQuery со значениями столбцов в качестве ключей?
У меня есть 3 столбца в таблице:
user_id (string) | category (string) | info (struct)
user_1, cat_A, info_1A
user_1, cat_B, info_1B
user_1, cat_C, info_1C
user_2, cat_A, info_2A
user_3, cat_Z, info_3Z
user_3, cat_B, info_3B
To abbreviate the values of the "info" column,
let's say that it is a struct of i.e. {'f': 2, 'c': 3, ...}
Я хотел бы получить этот вывод, где keys столбца «features» являются фактическими значениями столбца «category»:
user_id (string) | features (struct/JSON)
user_1, {cat_A: info_1A, cat_B: info_1B, cat_C: info_1C, ...}
user_2, {cat_A: info_2A}
user_3, {cat_Z: info_3Z, cat_B: info_3B}
Но вместо этого я в настоящее время только для достижения этого формата (я сделал вывод JSON -форматированный для большей ясности), где ключи - это предварительно определенное имя, которое вы даете при создании STRUCT с помощью, например, STRUCT(...) AS *key*
:
[
{
"user_id": "user_1",
"features": [
{
"category": "cat_A",
"features": {
"f": 2,
"c": 3,
}
},
{
"category": "cat_B",
"features": {
"x": 7,
"z": 10,
}
},
...
}
...
]
Используя запрос ниже:
SELECT
user_id,
ARRAY_AGG(
STRUCT(
category,
STRUCT(f, c, x, z) AS features -- the different features for each category
)
)
FROM ...
GROUP BY user_id