首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bigrquery和dbplyr生成的BigQuery的优化?

bigrquery和dbplyr生成的BigQuery的优化?
EN

Stack Overflow用户
提问于 2019-11-11 02:19:05
回答 1查看 138关注 0票数 0

dplyr函数通常具有难以置信的性能,在经过开源R社区的优化之后,许多函数甚至在幕后运行c++以使它们更快。

通过bigrquerydbplyr生成的bigrquery代码是否得到任何优化,或者它是否只是在它可以(未优化)的情况下生成该sql?(请注意,bigrquerydbplyr,比如dplyr,也都是tidyverse包,都是由dplyr作者Hadley Wickham编写的)

背景

我感兴趣的是如何优化生成的BigQuery代码,因为我试图确定是否值得进一步优化手工编写的用bigrquerydbplyr编写的批处理过程,重写了一些BigQuery代码(而不是使用这些包)。如果我不太可能看到很大的性能改进,我将不会花时间去做。

示例查询

以下是来自自述文件

代码语言:javascript
复制
library(dplyr)

natality <- tbl(con, "natality")

natality %>%
  select(year, month, day, weight_pounds) %>% 
  head(10) %>%
  collect()
EN

回答 1

Stack Overflow用户

发布于 2019-11-11 20:14:34

这可能取决于您要优化的是什么。运行时间或定价。

根据我的经验,我关注的是运行时间:

  • 使用默认生成的查询不涉及性能(运行时)问题,尽管我还没有对此进行广泛的测试。
  • dbplyr确实包括一些基本的查询优化来自1.0.0版
  • 在人类将读取代码的地方需要人工编写的代码,在只有机器才会读取代码的情况下,机器编写的代码很好。
  • 我注意到,在特别复杂的操作(多个连接或滞后/引导)期间,将中间表保存到磁盘时速度最快,从向中间表添加索引(运行时降至四分之一或更少)的速度进一步加快。
  • 还通过手动批处理记录减少了运行时间。例如,对所有偶数ID数字进行筛选,运行和保存分析,使用所有奇数ID号重复,并将结果附加到一起。但这可能是因为我使用了一个旧版本的SQL。

但是,我使用的是dbplyr与server,而不是bigquery。所以你必须判断它对你的上下文有多好的概括。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58794798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档