在BigQuery中,通配符表查询不允许选择某些字段。这是因为通配符表查询会匹配所有符合条件的表,并且这些表可能具有不同的字段结构。为了解决这个问题,可以使用以下方法:
假设我们有一个名为mydataset
的数据集,其中包含以table_
开头的表,每个表都有不同的字段结构。
SELECT column_name
FROM `myproject.mydataset.INFORMATION_SCHEMA.COLUMNS`
WHERE table_name LIKE 'table_%'
这将返回满足条件的所有表的字段名称。
DECLARE sql_query STRING;
DECLARE column_names ARRAY;
SET column_names = (
SELECT ARRAY_AGG(column_name)
FROM `myproject.mydataset.INFORMATION_SCHEMA.COLUMNS`
WHERE table_name LIKE 'table_%'
);
SET sql_query = (
SELECT CONCAT('SELECT ', ARRAY_TO_STRING(column_names, ', '))
);
EXECUTE IMMEDIATE sql_query;
这将动态构建一个SELECT语句,选择所有表的字段,并执行查询。
请注意,这种方法需要在BigQuery中启用使用SQL脚本的功能。
这些方法可以帮助您处理通配符表查询不允许选择某些字段的问题,并动态构建查询语句来选择所有表的字段。