如何查询数据集内所有表并为每条记录添加所属表标识
解决方案
完全可以实现,你可以使用BigQuery内置的_TABLE_SUFFIX伪列来标识记录所属的源表,具体用法如下:
基础用法:获取通配符匹配的表名后缀
直接在查询字段中添加该伪列即可,示例代码:
SELECT *, _TABLE_SUFFIX AS source_table FROM `project.DATASET.*`
新增的source_table列的值就是通配符*匹配到的表名部分,比如匹配到project.DATASET.log_202405,该列取值就为log_202405。
进阶用法:获取完整表路径
如果需要返回包含项目、数据集的完整表名,可手动拼接路径:
SELECT *, CONCAT('project.DATASET.', _TABLE_SUFFIX) AS full_source_table FROM `project.DATASET.*`
注意事项
_TABLE_SUFFIX仅在使用通配符*批量查询多个表时可用,单表查询时无法调用该伪列- 若你在查询中添加了
_TABLE_SUFFIX相关的过滤条件,该列的取值也会对应匹配过滤后的结果
内容的提问来源于stack exchange,提问作者Nicolas Rondon
相关产品推荐
相关产品推荐

