我们可以使用一些替代方法来解决这个问题。一种方法是使用UNION ALL语句来组合非分区表和分区表。下面是一个示例代码:
SELECT *
FROM myproject.mydataset.table
WHERE _PARTITIONTIME >= '2021-01-01'
UNION ALL
SELECT *
FROM myproject.mydataset.table_*
WHERE _TABLE_SUFFIX BETWEEN '20210101' AND '20211231'
这个示例代码首先选择了一个基于时间的分区表,然后使用UNION ALL语句将它与一个通配符表组合起来。在通配符表中,我们使用_TABLE_SUFFIX来指定要查询的特定分区。
除此之外,我们还可以考虑使用Legacy SQL来访问非分区表和基于字段的分区表。例如:
#legacySQL SELECT * FROM [myproject:mydataset.table] WHERE partition_date >= '2021-01-01'
在这个例子中,我们可以使用Legacy SQL语法来访问一个基于字段的分区表。在WHERE子句中,我们可以使用partition_date字段来指定要查询的特定分区。
需要注意的是,使用Legacy SQL语法有一些限制和缺点,因此我们建议尽可能使用标准SQL语法来查询数据。