使用this自述文档中概述的方法,可以直接查询单个表,就像这样
library(bigrquery)
library(dplyr)
natality <- tbl(con, "natality")
natality %>%
select(year, month, day, weight_pounds) %>%
head(10) %>%
collect()
这使我们可以针对dplyr
编写常规的natality
代码,bigrquery
将该dplyr
代码转换为BigQuery查询。
但是假设natality
表是2个(或更多)单独的表,分别名为natality1
,natality2
,并且可以将它们rbind
组合在一起。
如何使用BigQuery做到这一点?也就是说,如何查询这些单独的表,就像它们都作为一个表一样?
我认为bind_rows
可能有效,但无效。
library(bigrquery)
library(dplyr)
natality1 <- tbl(con, "natality1")
natality2 <- tbl(con, "natality2")
natality1 %>% bind_rows(., natality2) %>%
select(year, month, day, weight_pounds) %>%
head(10) %>%
collect()
答案 0 :(得分:1)
我不知道dbplyr
具有rbind
功能。也许是因为并非每个数据库后端都支持它?
我在SQL Server中解决此问题的方法是使用一个自定义函数,该函数编写一个显式的UNION ALL
查询(SQL Server等效于rbind
)。以下是SQL(link to other functions from this approach)的示例函数。也许这个例子可以启发等效的bigquery
方法?
union_all = function(table_a,table_b){
# extract the connection
db_connection = table_a$src$con
sql_query = build_sql(con = db_connection,
sql_render(table_a), # the SQL code that defines table A
"\nUNION ALL\n", # insert union all command between them
sql_render(table_b) # the SQL code that defines table B
)
return(tbl(db_connection, sql(sql_query)))
}
这个想法是union_all()
返回一个查询所定义的远程表对象,其中包含等效的rbind
命令。