我需要使用R编写来自R环境所连接的数据库的查询。查询的结构如下:
ALTER TABLE cph.table_id ADD PARTITION (event_date = 'YYYY-MM-DD')
LOCATION 's3://external-dwh-company-com/id-to-idl/YYYYMMDD'
例如,今天的添加内容如下:
ALTER TABLE cph.table_id ADD PARTITION (event_date = '2018-08-02')
LOCATION 's3://external-dwh-company-com/id-to-idl/20180802'
问题是,我需要对回溯至03/01/2018的每个数据进行此操作。
因此步骤如下:
initial_query <- paste(#however the above query would be formatted with the dates)
results_query <- dbGetQuery(conn, initial_query)
但是,对我来说,最大的障碍是1.)为第一部分弄清楚paste
的格式,并2.)创建一个循环,使我可以执行上述步骤直到当前日期。 / p>
答案 0 :(得分:0)
请考虑使用lapply
和seq
遍历自目标开始日期以来的天数范围,并用sprintf
和相应的日期格式连接字符串:
# GET DIFFERENCE BETWEEN TODAY AND DESIRED BEGIN DATE
date_diff <- Sys.Date() - as.Date("2018-03-01")
date_diff[[1]]
# 155
sql <- "ALTER TABLE cph.table_id ADD PARTITION (event_date = '%s')
LOCATION 's3://external-dwh-company-com/id-to-idl/%s'"
# RUN QUERY SEQUENTIALLY ADDING TO BEGIN DATE
output <- lapply(seq(1, date_diff[[1]]), function(i)
dbGetQuery(conn, sprintf(sql, strftime(as.Date("2018-03-01") + i, "%Y-%m-%d"),
strftime(as.Date("2018-03-01") + i, "%Y%m%d"))))