首页 > 解决方案 > 在应用函数中应用?

问题描述

我有一个数据框,其中包含 2019 年每个月的开始和结束。

我需要获取 API,编写一个名称mydf加月份的 CSV 文件(例如mydf-01.csv,、mydf-02.csv等)。

我需要获取数据,写入 CSV,清理内存以避免错误消息“内存不足”,然后继续下个月。

现在我有这个,但给了我错误:内存不足,因为所有 2019 年的预期数据约为 3GB。

我正在考虑制作一个for循环。但也许我可以使用另一个应用家庭功能?

月份:my_dates data.frame

这是它的外观:

from        to
2019-01-01  2019-01-31
2019-02-01  2019-02-28
2019-03-01  2019-03-31
...

生成 12 个月的代码:

som <- function(x) as.Date(cut(as.Date(x), "month")) # start of month
eom <- function(x) som(som(x) + 32) - 1 # end of month

month_ranges <- function(from, to) {
  s <- seq(som(from), as.Date(to), "month")
  data.frame(from = pmax(as.Date(from), s), to = pmin(as.Date(to), eom(s)))
}

my_dates <- month_ranges(som("2019-01-01"), eom("2019-12-31"))

获取数据的代码:

目前它获取所有月份,将它们保存在内存中,最后将它们重新绑定在一起。但是,当月份范围过大时,这种方法会出错,因为数据超过 2GB。所以我希望每个月都将数据保存到 > CSV 并继续到下个月。

library(googleAuthR)
library(googleAnalyticsR)

my_fetch <- function(ga_id, d1, d2) {
  google_analytics(ga_id,
                   date_range = c(d1, d2),
                   metrics = c("totalEvents"),
                   dimensions = c("ga:date", "ga:eventCategory", "ga:eventAction", "ga:eventLabel"),
                   anti_sample = TRUE,
                   anti_sample_batches = 1,
                   rows_per_call = 400)
}


my_fetches_fetches <- mapply(my_fetch, myviewID, my_dates$from, my_dates$to, SIMPLIFY = FALSE)


total <- do.call(rbind, my_fetches_fetches)

更新 1:

也许可以通过产生错误的“循环”,比如 API 超时继续到下个月?

标签: rapplygoogle-analytics-api

解决方案


推荐阅读