使用这自述文档中概述的方法,可以直接查询单个表,如下所示
library(bigrquery)
library(dplyr)
natality <- tbl(con, "natality")
natality %>%
select(year, month, day, weight_pounds) %>%
head(10) %>%
collect()这允许我们针对natality编写常规的natality代码,bigrquery将该dplyr代码转换为BigQuery查询。
但是,假设natality表是两个(或更多)单独的表,名为natality1,natality2,并且它们可以是rbindd。
我如何使用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()备注
发布于 2019-09-20 05:08:46
我不知道dbplyr具有rbind功能。也许是因为不是每个数据库后端都支持它吗?
在Server中解决此问题的方法是使用一个自定义函数来编写显式UNION ALL查询( Server等效于rbind)。下面是SQL (链接到此方法中的其他功能)的一个示例函数。也许这个例子可以为类似的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等效命令。
https://stackoverflow.com/questions/58021073
复制相似问题