0

我有一组类似于“按日期分区? ”的分片数据,但有些日子没有数据,因此没有日子。一个理想的解决方案是让所有表格(日期)都是可选的。那可能吗?

详细说明:如果您执行 select from 后跟序列 [main.2013-08-01], [main.2013-08-02], ... 每个表都必须存在。如果这些表中的任何一个不存在,bigquery 在尝试执行查询时会返回 500 错误。通过使用术语“可选”,我希望有一种语法允许任何特定的表不存在,但查询仍然对其他表执行总和。我希望的一个例子:也许查询说 SELECT * from ?[main.2013-08-01], ?[main.2013-08-02], ... 但是 [main.2013-08-02 ] 不存在。但是,因为它有“?” 表之前的指示符被认为是可选的并且查询仍然成功执行,并且我得到了结果,尽管仅来自 [main.2013-08-01] 和任何其他实际存在的表。

我目前正在解决这个问题,首先对数据集的表列表进行请求,然后与我实际想要查询的分片进行比较并合并表(例如,我想在 8 月的所有日子里,bigquery 告诉我 7/27不存在,所以我的 FROM 块将包含所有数据分片的列表(除了 7/27),但是这种方法很复杂,并且涉及两个 bigquery 往返,因此看起来并不理想。

4

1 回答 1

0

作为一种解决方法,您是否尝试过使用空表?

假设 main.2013-08-01 存在,而 main.2013-08-02 不存在。你可以:

SELECT * FROM [main.2013-08-01] WHERE any_column = 'non existing value'

该查询将返回 0 个结果,您可以选择 main.2013-08-02 作为目标表。这将创建一个空表,其列与 main.2013-08-01 相同。那你就可以不顾空虚地加入了!

于 2013-08-28T17:06:48.217 回答