首页 文章

无法使用R dplyr在旧版SQL查询中引用SQL视图

提问于
浏览
1

我正在尝试使用dplyr访问/操作Google Bigquerry中的表格视图 . 但是,当我尝试使用dplyr函数(select,filter等)聚合表时,它给出了这个错误:“错误:无法在旧SQL查询中引用SQL视图 . ”下面的代码说明了我正在尝试做什么 .

#source the table
pd = src_bigquery(project, dataset) %>%
 tbl(table)

#get a aggregated view of the table that is filtered on a specific date
pdSelect = pd %>%
 select(id, date) %>%
 filter(date =="2017-03-15") %>%
 collect()

有没有办法在使用dplyr时不使用旧版SQL?例如,在Google Bigquery Web UI中,它显示“默认情况下,BigQuery使用旧版SQL运行查询 . 取消选中此选项以使用BigQuery更新的SQL方言运行查询,并提高标准合规性 . ”当我在该环境中工作时,我通常只是取消选择它以便停止使用旧版SQL .

谢谢你的帮助!

2 回答

  • 2

    编辑:应该可以通过将 #standardSQL shebang放在查询的顶部来使用标准SQL .

    原始响应:看起来source for the BigQuery connector with dplyr中没有选项可以使用标准SQL, #standardSQL shebang不起作用 . 有一个issue submitted in relation to useLegacySql你可以投票或评论,或者你可以考虑submitting a pull request .

  • 0

    除了传递shebang之外,您还可以将 use_legacy_sql 标志设置为 bigrquerydplyr 连接器 . 如果您正在访问使用标准SQL构建的视图,这将非常有用 .

    bigrquery

    将use_legacy_sql标志传递给 query_exec

    bigrquery::query_exec("SELECT * FROM `datasetName.standardSQLView`", 
                          project ='bQProjectName',
                          use_legacy_sql = FALSE)
    

    dplyr

    将use_legacy_sql标志传递给 dbConnect

    bQCon = DBI::dbConnect(bigrquery::dbi_driver(),
                           project = 'bQProjectName',
                           dataset = 'datasetName',
                           use_legacy_sql = FALSE)
    dplyr::tbl(bQCon, 'standardSQLView')
    

相关问题