r - 错误:BigQuery 不支持临时表
问题描述
我正在尝试在同一个项目中连接来自两个不同数据集的表。我怎样才能做到这一点?
library(tidyverse)
library(bigrquery)
con1 <-
bConnect(
drv = bigrquery::bigquery(),
project = PROJECT,
dataset = "dataset_1"
)
con2 <-
bConnect(
drv = bigrquery::bigquery(),
project = PROJECT,
dataset = "dataset_2"
)
A <- con1 %>% tbl("A")
B <- con2 %>% tbl("B")
inner_join(A, B,
by = "key",
copy = T) %>%
collect()
然后我得到错误:Error: BigQuery does not support temporary tables
解决方案
问题很可能是您使用不同的连接来连接这两个表。当您尝试这样做时,R 会尝试将数据从一个源复制到另一个源上的临时表中。
请参阅此问题和本文档copy
中的参数(它的包不同,但原理相同)。
解决方案是对所有表只使用一个连接。像这样的东西:
con <-
bConnect(
drv = bigrquery::bigquery(),
project = PROJECT,
dataset = "dataset_1"
)
A <- con %>% tbl("A")
B <- con %>% tbl("B")
inner_join(A, B,
by = "key") %>%
collect()
您可能需要将dataset
连接字符串中的参数留空,或者in_schema
在连接到远程表时将数据集名称与表一起包含在内。如果不了解更多关于数据库结构的信息,就很难确定。
推荐阅读
- vue.js - vuejs中需要从其他域js加载函数
- javascript - 如果在 jquery 中检查第一个复选框,如何获取下一个复选框值?
- javascript - 在特定条件下猜测特定长度字符串的最佳方法
- sql-server - 无法使用属于 AD 组的登录名创建数据库范围凭据
- php - 当用户从表 1 登录时,仅显示表 2 中的数据
- python - 断言语句有什么作用?
- javascript - Amazon Lex 和 BotFramework 集成 TypeError:无法在响应时撤销的代理上执行“获取”
- rust - 在比赛中使用 ref 和与 non-refed 比赛之间有区别吗?
- javascript - AngularJS:在确认对话框上单击确定时的不同回调
- c# - 如何将 IDictionary 绑定到 Repeater 不同的控件?