Дата автоматического обновления в R (всегда запрашивайте вчера)

#r #dplyr #r-markdown #tidyverse

Вопрос:

Обычно я читаю эти данные из локальной системы, в то время как я вручную изменяю дату, например, сегодняшняя дата-2 ноября, которая похожа на этот формат по ссылке ниже (2021_11_02), поэтому я создаю отчет за день до 1 ноября 2021 года (2021_11_01).

Я вручную обновляю эту дату, прежде чем смогу создать отчет

теперь я хочу запланировать автоматизацию, которая будет запускать отчет сама по себе

как мне написать код в r, который автоматически обновит дату на день -1, которая указана вчера в отчете или в любом другом месте, требуемом в сценарии?

есть ли способ, которым r может автоматически обновлять дату на минус 1 (всегда используйте дату вчера)

или

как проинструктировать R автоматически использовать день за вычетом одной даты в любом сценарии, в котором есть дата

пожалуйста, ознакомьтесь с образцом ссылки с локального компьютера

 DWReport_2021_11_01 lt;-read_csv("C:/Users/Guest 1/Downloads/DWReport_2021-11-01.csv") DWReport_2021_11_01_1_ lt;-read_csv("C:/Users/Guest 1/Downloads/DWReport_2021-11-01 (1).csv") match_reportlt;-rbind(DWReport_2021_11_01,DWReport_2021_11_01_1_)  

кроме того, я хочу, чтобы что-то всегда меняло дату как день минус один, который за день до этого, когда я запрашиваю базу данных, см. Пример сценария ниже

 tbl(connect, "accotdebits")%gt;%  filter(dates gt; "1633046400" amp; dates lt; "1633910399" amp;  tranx_status == "Successfull")%gt;%  collect()  

два вопроса один для чтения за день минус один с моего локального компьютера два для автоматического обновления даты до дня минус один вчера всякий раз, когда он запрашивает базу данных

Ответ №1:

Вы можете использовать Sys.Date (), чтобы узнать сегодняшнюю дату. Вы можете вычесть день просто мы с минус 1.

 yesterday lt;- Sys.Date() - 1 yesterday_formatted lt;- format( yesterday, "%Y_%m_%d")  

Затем вы можете использовать эти значения в своем коде

 temp lt;- read_csv( paste0("C:/users/guest/downloads/DWReport_", yesterday,".csv")  assign(paste0("DWReport_", yesterday_formatted), temp)  

Ваш последний вопрос.. где вы запрашиваете базу данных… Необычно не передавать дату в базу данных? Что это за ароматизатор SQL? Это просто временная метка Unix?

Если вы преобразуете дату в POSIXct, а затем в числовое значение, вы можете получить метку времени. Возможно, вам потребуется добавить HH мм вручную…

 yesterday_numeric lt;- as.numeric( as.POSIXct( format (yesterday, "%Y-%m-%d 00:00:00"))) tbl(connect, "accotdebits")%gt;%  filter(dates gt; yesterday_numeric amp; dates lt; (yesterday_numeric (24*60*60)) amp;  tranx_status == "Successfull")%gt;%  collect()