首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在BigQuery中查询/绑定同一模式的多个表的dplyr / bigrquery方式?

在BigQuery中查询/绑定同一模式的多个表的dplyr / bigrquery方式?
EN

Stack Overflow用户
提问于 2019-09-20 02:38:12
回答 1查看 266关注 0票数 0

使用自述文档中概述的方法,可以直接查询单个表,如下所示

代码语言:javascript
复制
library(bigrquery)
library(dplyr)

natality <- tbl(con, "natality")

natality %>%
  select(year, month, day, weight_pounds) %>% 
  head(10) %>%
  collect()

这允许我们针对natality编写常规的natality代码,bigrquery将该dplyr代码转换为BigQuery查询。

但是,假设natality表是两个(或更多)单独的表,名为natality1natality2,并且它们可以是rbindd。

我如何使用BigQuery来完成这个任务呢?也就是说,如何将这些独立的表作为一个表来查询呢?

我试过的

我认为bind_rows可能有用,但它不起作用。

代码语言:javascript
复制
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()

备注

EN

回答 1

Stack Overflow用户

发布于 2019-09-20 05:08:46

我不知道dbplyr具有rbind功能。也许是因为不是每个数据库后端都支持它吗?

在Server中解决此问题的方法是使用一个自定义函数来编写显式UNION ALL查询( Server等效于rbind)。下面是SQL (链接到此方法中的其他功能)的一个示例函数。也许这个例子可以为类似的bigquery方法提供灵感?

代码语言:javascript
复制
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等效命令。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58021073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档