我在bigquery中有一个表,其结构如下:
| id|描述|
| - -----|- -----|
| 布贾普|{“瓦尔”:{“60fc-4955-8d9b”:{“key”:“top”},“4f96-4c9e-88f0”:{“key”:“left”}}}}|
| 富克洛尔|{“瓦尔”:{“c783-9342-h73s”:{“key”:“up”},“83hs-eudu-s839”:{“key”:“上面”},“37s9-dh3u-39sr”:{“key”:“right”}}}}|
| nretx|瓦尔|
desc列包含多个通配符键作为val键的值。
我想将数据解压缩到下表中
| id|代码|键|
| - -----|- -----|- -----|
| 布贾普|60fc-4955-8d9b|顶部|
| 布贾普|4f96-4c9e-88f0|左|
| 富克洛尔|c783-9342-h73s|向上|
| 富克洛尔|83hs-eudu-s839|以上|
| 富克洛尔|37s9-dh3u-39sr|右|
| nretx|||
任何建议
2条答案
按热度按时间h43kikqp1#
类似于@SelVazi的答案,但您也可以使用UDF,并且需要
LEFT JOIN
展平数组以获得预期结果。mw3dktmi2#
这可以通过使用
json_extract_keys
从json中提取键(代码)来完成,然后我们可以使用REGEXP_EXTRACT
访问嵌套的元素如果在您的位置找不到函数
json_extract_keys
,则可以创建一个等效的UDF:结果: