r - 尝试优化 R Shiny App 加载时间的速度——缓慢的 googlesheets4 pull
问题描述
我目前正在开发一个 R Shiny 应用程序,该应用程序利用 googlesheets4 在应用程序启动时从 GoogleSheets 中提取一个大型数据集。将此数据集加载到我的应用程序需要大约 2 分钟,这会拖延我整个应用程序的加载时间。
我的应用程序中唯一的视觉对象是基于这个 GoogleSheets 数据,所以它非常依赖这个特定的数据集。一旦数据集被拉入我的应用程序,它就会被过滤,因此变得更小(85,000 行 ---> 1,000 行)。这个 GoogleSheet 数据每天都会更新,所以我没有机会预先下载一次并将其永久存储为 .csv。
我已经尝试过两种不同的修复方法,但都没有成功……好奇是否有人有任何想法。
- 运行一个单独的应用程序。我的第一个想法是完全创建一个单独的 Shiny 应用程序,其唯一目的是每天拉一次 GoogleSheets df。一旦它拉出它,它将进行必要的数据清理以将其降至约 1,000 行,然后将较小的 df 推送到不同的 GoogleSheet 链接。然后,我的带有视觉效果的原始应用程序将始终引用新的 GoogleSheet(加载时间会少得多)。
我在这里遇到的问题是我不知道如何使用 googlesheets4 编写新的 GoogleSheets 文档。如果有人知道如何做到这一点,将不胜感激。
- 暂时延迟 GoogleSheets 数据的加载,并让视觉首先填充。我的第二个想法是在启动时延迟拉入 GoogleSheets df 的代码,让我的视觉首先填充(使用旧数据),然后让 GoogleSheets 拉动发生。拉取完成后,让视觉对象重新填充更新的数据。
我想不出最好/正确的方法来实现这一点。我试着弄乱 sleep.sys() 和 futures/promises 但无法让事情正常工作。
好奇是否有人对我的两种不同方法有任何想法,或者是否有更好的方法我只是没有考虑......
谢谢!
解决方案
有一个函数write_sheet
可以让你将数据写入谷歌表格。那对你有用吗?
googlesheets4::write_sheet(data = your_data,
ss = spread_sheet_identifier,
sheet = "name_of_sheet_to_write_in")
如果您只想添加一些内容而不删除工作表中的所有内容,则该功能是sheet_append
googlesheets4::sheet_append(data = your_data,
ss = spread_sheet_identifier,
sheet = "name_of_sheet_to_write_in")
不确定您是否可以以保存方式存储凭据,但您不能使用 github 操作吗?或者在您的本地计算机上执行一项 cron 作业?
推荐阅读
- flutter - 从 sql 检索的布尔值作为字符串
- pandas - 创建具有不等长度列表的熊猫数据框
- sql - 如何从通过“路径”列存储的树层次结构中过滤出具有某些继承标志的子树?
- python - 如何修复 TypeError:“NoneType”对象不可迭代
- database-design - 用于在通知源上存储通用过滤器的数据库设计
- javascript - MUI 自动完成自定义选项,不显示所选选项
- javascript - 本地静音视频时,Agora 远程视图发生变化
- go - 无法写入 cookie
- laravel - 带有plesk的Laravel + Vue App不加载所有资产
- python - 使用 python 更改数据集维度以绘制一个线时间序列数年