【问题标题】:Cannot reference a SQL view in a Legacy SQL query using R dplyr无法使用 R dplyr 在旧版 SQL 查询中引用 SQL 视图
【发布时间】:2017-03-23 19:52:23
【问题描述】:

我正在尝试使用 dplyr 访问/操作 Google BigQuery 中的表格视图。但是,当我尝试使用 dplyr 函数(选择、过滤器等)聚合表时,出现此错误:

错误:无法在旧版 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。

感谢您的帮助!

【问题讨论】:

    标签: r dplyr google-bigquery


    【解决方案1】:

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

    原始回复: source for the BigQuery connector with dplyr 中似乎没有使用标准 SQL 的选项,并且 #standardSQL shebang 不起作用。有一个issue submitted in relation to useLegacySql,你可以投票或评论,或者你可以考虑submitting a pull request。

    【讨论】:

    • 看起来有人创建了这个code 可能会解决问题。这是代码devtools::install_github("backlin/bigrquery", ref='feature/useLegacySqlOption') 应该可以做到这一点。但是,它尚未添加到 bigrquery 的最新 CRAN 版本中。我也不确定它是否适用于 dplyr。
    • 如果您确实找到了可行的方法,请发布答案,以便其他用户也能找到解决方案:)
    • 这有 since been fixed 和 #standardSQL should now be working。
    【解决方案2】:

    除了传入shebangs,您还可以将use_legacy_sql 标志设置为bigrquery 和dplyr 连接器。如果您正在访问使用标准 SQL 构建的视图,这会很有用。

    大查询

    将 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') 
    

    【讨论】:

      猜你喜欢
      • 2019-06-19
      • 2021-12-12
      • 1970-01-01
      • 2017-05-19
      • 1970-01-01
      • 2015-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多