问题描述
我使用 dbplyr
连接到 BigQuery 表,并且这些表通常按日期或时间进行分区(该列称为 _PARTITIONDATE 或 _PARTITIONTIME)。在 BigQuery 中,您可以使用 WHERE _PARTITIONDATE > "some date" 进行过滤以访问表的段并提高查询性能。
但是当我通过 dbplyr
连接到一个表时,没有要过滤的分区列。这是预期的行为吗?
解决方法
我发现您可以使用 build_sql
中的 dbplyr
函数来过滤表的分区列,然后使用 dbplyr
继续编写查询,例如:
tbl(con,"table_name") %>%
filter(!!build_sql("DATE(_PARTITIONTIME > '2021-06-21'",con = con)
只要没有 dbplyr
等价物,您就可以这样做。