我在 BigQuery 中有一个名为 json_response 的 json 字段。它有这样的形状:
{
"2024-11-24": {
"fatturato": {
"numero": 281,
"totale": 44444.72,
"paesi": {
"ITA": {
"num": 84,
"val": 33333.38
},
"USA": {
"num": 60,
"val": 20222.14
}
}
},
"ordini": {
"totale": 5555.67,
"num": 7,
"paesi": {
"ITA": {
"num": 14,
"val": 55.7
},
"USA": {
"num": 16,
"val": 222.5
}
}
}
},
"2024-11-25": {
"fatturato": {
"numero": 225,
"totale": 33333.72,
"paesi": {
"ITA": {
"num": 25,
"val": 22222.38
},
"USA": {
"num": 60,
"val": 20222.14
}
}
},
"ordini": {
"totale": 5555.67,
"num": 7,
"paesi": {
"ITA": {
"num": 14,
"val": 55.7
},
"USA": {
"num": 16,
"val": 222.5
}
}
}
},
}
我想查询它以获得一个名为 ref_date 的列(键中包含日期,可以有很多),列“paesi”,列“fatturato_numero”,“fatturato_valore”等,忽略总数。在这种情况下,我将有两行,一行代表“2024-11-24”,另一行代表““2024-11-25”。
我尝试使用 JSON_EXTRACT,但它说键必须是常量,而不是动态的。
JSON_KEYS
函数从 JSON 中获取所有键,然后访问它们各自的值:
SELECT
ref_date,
json_column[ref_date].fatturato.paesi as paesi,
json_column[ref_date].fatturato.numero as fatturato_numero
FROM sample, UNNEST(JSON_KEYS(sample.json_column, 1)) as ref_date