我有一个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
中的依此类推,依此类推,每个日期都是这样。