首页 > 解决方案 > 在 BigQuery 中使用 _TABLE_SUFFIX 时无法识别名称“列”

问题描述

我有以下 BigQuery 数据集:

一组名称为keywords_ab, keywords_ac, ...,的表keywords_zz

另一组名称为keywords_different_schema_ab, keywords_different_schema_ac,...

这两组表具有不同的架构。我想对第一组表运行查询,其中包含一个名为的列,而该列term不包含在其中keywords_different_schema_*

我通常使用语法运行这类查询,FROM 'keywords_*'但这Unrecognized name 'term'当然给了我一个,因为该term列不是所有keywords_different_schema_*表的一部分。

我也尝试在我的查询中输入类似LENGTH(_TABLE_SUFFIX) = 2但似乎无法正常工作的内容。有没有办法让通配符适用于这种情况?或者我真的应该UNION手动选择我感兴趣的所有关键字吗?

标签: google-bigquery

解决方案


事实证明,有一种方法可以解决这个问题,而无需重命名表(尽管这是一种相当老套的方法)。

显然,BigQuery 正在查看您创建的最后一个与通配符匹配的表。

我所做的是创建一个名为的新表,并为它们提供所有属性keywords_dummy的 UNION 。keywordskeywords_different_schema

那时,我的查询SELECT term FROM 'keywords_*' WHERE LENGTH(_table_suffix)=2有效,因为 BigQuery 正在检查keywords_dummy包含该term列的表。


推荐阅读