首页 > 解决方案 > 编写一个包含日期范围的循环

问题描述

我有一个每天自动运行的 R 脚本。问题是,最终输出中出现了一个小错误,导致我需要再次运行过去两个月。看到文件的巨大大小如何阻止我一次拉动,我需要设计一个每天都执行此操作的脚本。这是我今天运行脚本时的样子:

    user_query = paste("SELECT
          i.value_1,
          c.value_2     
          FROM logs.imp i
          LEFT JOIN
          logs.click c
          ON i.id = c.id
          WHERE i.event_date = DATE('2018-08-23')
          AND i.advertiser_id IN (", paste(id_query$user_id, collapse = ", "), ")
          GROUP BY 1,2
          ;", sep = '')

results_query <- dbGetQuery(con,  user_query)

currentDate <- Sys.Date()

txtUserQuery <- paste("/home/jsmith/user_query_", currentDate,".txt",sep="")

write.table(user_query, file = txtUserQuery, sep = "|")

outputDir <- "/Users/jsmith"
outputFileName <- paste("user_query_", currentDate,".txt",sep="")
outputFile <- paste(outputDir, outputFileName, sep = "/")

handle <- getCurlHandle()
ftpUpload(what = outputFile, to = paste("ftp://ftp@ftp.xxx.com/Up/user_query_", currentDate,".csv",sep=""), userpwd = "xxxx:xxxxx", curl = handle)

请注意作为WHERE i.event_date = DATE('2018-08-23')运行的 SQL 查询的一部分的行。我需要做的是设计一个循环来运行该脚本,但每个日期都返回到2018-07-01. 因此,这意味着不仅上述线路受到影响,而且涉及该currentDate <- Sys.Date()部件的任何实例都受到影响。

因此,如果您有WHERE i.event_date = DATE('2018-08-23'),那么CurrentDate变量应该是2018-08-23,允许txtUserQuery看起来像"/users/jsmith/user_query_2018-08-23.txt"所以在2018-07-01CurrentDate 将被存储为并且2018-07-01它将是"/users/jsmith/user_query_2018-07-01.txt"(以及在每个日期的初始等)。PASTEuser_query

标签: rrstudio

解决方案


推荐阅读