编写一个包含日期范围的循环

时间:2018-08-23 19:46:24

标签: r rstudio

我有一个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"依此类推{{1} } CurrentDate将存储为2018-07-01,它将存储为2018-07-01(以及"/users/jsmith/user_query_2018-07-01.txt"的初始PASTE中的依此类推,依此类推,每个日期都是这样。

0 个答案:

没有答案