BigQuery中创建Schema无关备份及JSON转表的SQL实现问题
编辑:感谢@NickW告知BigQuery原生快照功能,此问题已无意义。建议优先使用框架原生功能而非重复造轮子,我对该解决方案很满意。
问题:BigQuery Schema无关备份的SQL恢复方案
我需要创建与Schema无关的备份——原始数据的Schema变更不会破坏备份。我原本的思路是把数据转成JSON格式存储,再用BigQuery SQL查询,备份代码如下:
WITH aggregated_table as ( -- Aggregate all data into one JSON file SELECT id ,TO_JSON(row_struct) AS data -- Extract each row as a STRUCT FROM mytable row_struct) -- Backups use time as primary key SELECT CURRENT_TIMESTAMP() as backup_time, id, data from aggregated_table
但恢复备份的过程太繁琐,我找不到自动识别Schema或列名的方法。我的表有300+列,不想像下面这样逐个指定列:
SELECT backup_time, data.id as id, TIMESTAMP(data.some_time_value) as some_time_value, data.some_string_value as some_string_value, --...300 more columns ... FROM my_backup WHERE backup_time = xxx
查了BigQuery的JSON文档也没找到适配的功能。有没有解决方案?或者这种JSON备份的方式本身就是反模式,有更好的替代方案?
我希望能用BigQuery SQL实现类似JSON扁平化的恢复功能,虽然知道Python Pandas可以从JSON填充表,但还是想只用SQL解决。
内容的提问来源于stack exchange,提问作者WonderfulWonder
相关产品推荐
相关产品推荐

