错误:BigQuery 不支持临时表
Posted
技术标签:
【中文标题】错误:BigQuery 不支持临时表【英文标题】:Error: BigQuery does not support temporary tables 【发布时间】:2020-09-11 01:27:15 【问题描述】:我正在尝试连接来自同一项目中两个不同数据集的表。我该怎么做?
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
【问题讨论】:
【参考方案1】:问题很可能是您使用不同的连接来连接两个表。当您尝试这样做时,R 会尝试将数据从一个源复制到另一个源的临时表中。
见this question和this documentation中的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
将数据集名称与表一起包含在内。如果不了解更多有关数据库结构的信息,就很难确定。
【讨论】:
谢谢。将dataset
留空并在工作表中指定它们。喜欢tbl("dataset_1.A")
和tbl("dataset_2.B")
以上是关于错误:BigQuery 不支持临时表的主要内容,如果未能解决你的问题,请参考以下文章
使用 Java 从 BigQuery 到 BigQuery 表的表复制中的 JSON 解析错误