【问题标题】:Discrepancy between "query_exec" and "bq_table_download" using bigrquery使用 bigrquery 的“query_exec”和“bq_table_download”之间的差异
【发布时间】:2021-03-09 12:45:43
【问题描述】:

到目前为止,我使用 bigrquery 的 query_exec 从 BigQuery 下载时间序列数据。

sql <- "SELECT  Date, val1, val2
        FROM `mydata` 
        WHERE DATE(_PARTITIONTIME) BETWEEN '2020-05-01' AND '2020-06-01'"

project <- "myproj"

df <- query_exec(sql, project = project, max_pages = Inf, use_legacy_sql = FALSE) %>% as_tibble()

自上次更新以来,会出现一条警告,指出 query_exec 已弃用,而应使用 bq_table_downloadbq_project_query 结合使用。

tb <- bq_project_query(project, sql)
df <- bq_table_download(tb, page_size = 100000)

调整我的代码后,数据框的大小(超过 400 万行)与使用 query_exec 的请求相同。但是,从 ~80000 行开始,现在只出现格式为 1970-01-01 的日期,其余列要么为空,要么包含零。使用 query_exec 的旧方法仍然有效,并导致格式正确的数据帧。

有什么想法可能是这里的问题吗?

【问题讨论】:

    标签: sql r dplyr google-bigquery bigrquery


    【解决方案1】:

    这很可能与您设置为 100000 的 page_size 参数有关。如果将其增加到更大的数字,则结果将不再正确解析,并且会出现一些 NA 或错误解析的错误。因此,我假设您的日期为 1970-01-01。

    尝试将 page_size 设置为更接近默认值 10000 的值,它应该可以工作。我还没有找到完美的值,但是 20000 对我来说很好。

    【讨论】:

    • 是的,我还使用了 page_size 参数来找到一个可以正常工作的值(在我的例子中是 5000)。但是,根据我请求的数据集,问题仍然不时出现。顺便说一句,GitHub 上也有关于该主题的持续讨论 (github.com/r-dbi/bigrquery/issues/412)。
    • 感谢您链接到讨论。我会遵循并希望有一个解决方案:)
    猜你喜欢
    • 1970-01-01
    • 2018-02-03
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 2020-09-16
    • 1970-01-01
    • 2022-10-16
    • 2010-10-19
    相关资源
    最近更新 更多