将R列中的最后N天覆盖为雪花

将R列中的最后N天覆盖为雪花,r,snowflake-cloud-data-platform,dbi,sparkr,R,Snowflake Cloud Data Platform,Dbi,Sparkr,例如,我使用的是tidyquant数据集 install.packages('tidyquant') library(tidyquant) library(data.table) options("getSymbols.warning4.0"=FALSE) options("getSymbols.yahoo.warning"=FALSE) # Downloading Apple price using quantmod first.date <- S

例如,我使用的是tidyquant数据集

install.packages('tidyquant')
library(tidyquant)
library(data.table)
options("getSymbols.warning4.0"=FALSE)
options("getSymbols.yahoo.warning"=FALSE)
# Downloading Apple price using quantmod
first.date <- Sys.Date() - 30
last.date <- Sys.Date()

getSymbols("AAPL", from = first.date,
           to = last.date,warnings = FALSE,
           auto.assign = TRUE)
AAPL<-data.frame(AAPL)
AAPL<- setDT(AAPL, keep.rownames = TRUE)[]
colnames(AAPL)[1] <- "DATE"
AAPL$RUNDATE<-AAPL$DATE
head(AAPL)

         DATE AAPL.Open AAPL.High AAPL.Low AAPL.Close AAPL.Volume AAPL.Adjusted      RUNDATE
1: 2021-03-19    119.90    121.43   119.68     119.99   185023200        119.99   2021-03-19
2: 2021-03-22    120.33    123.87   120.26     123.39   111912300        123.39   2021-03-22
3: 2021-03-23    123.33    124.24   122.14     122.54    95467100        122.54   2021-03-23
4: 2021-03-24    122.82    122.90   120.07     120.09    88530500        120.09   2021-03-24
5: 2021-03-25    119.54    121.66   119.00     120.59    98844700        120.59   2021-03-25
6: 2021-03-26    120.35    121.48   118.92     121.21    93958900        121.21   2021-03-26
还是这个

我的想法是在最后30天的数据中每天运行这个数据提取,而不是在整个时间段,并附加到现有的数据集中


以前有没有人做过类似的事情,如果您需要我的帮助,请告诉我,如果您需要更清楚地了解我要完成的任务,请运行代码以获取新数据并存储在名为AAPL的变量中,然后


AAPL$RUNDATE追加和覆盖意味着什么?我的解释是,这些行动是相互排斥的。我认为您希望在30天内添加新数据并删除数据,对吗?您是否有理由不能保留所有旧数据,而只处理查询中最后30天的部分?您好@r2evans您是对的,这些数据是相互排斥的。但是,当我覆盖时,我只想覆盖最后30天的数据并保留历史记录。这就是为什么我建议同时进行追加和覆盖。我现在看看你下面的答案。谢谢你的帮助,谢谢!我将在即将到来的一周内对此进行检查和测试。这很有帮助,谢谢。我的做法有点不同,但这是回答我问题的一个良好开端。我改为:使用select distinct DATE从旧表中删除,将MAXRUN_DATE作为MRD从新表组中删除1,2作为MAX_RUN_DATE,其中MAX_RUN_DATE.DATE=A.DATE和MAX_RUN_DATE.MRD>=A.RUN_DATE
sparkr.sdf <- SparkR::createDataFrame(AAPL)

SparkR::write.df(
  df = sparkr.sdf,
  source = "snowflake",
  mode = "overwrite",
  sfUrl = "<snowflake-url>",
  sfUser = user,
  sfPassword = password,
  sfDatabase = "<snowflake-database>",
  sfSchema = "<snowflake-schema>",
  sfWarehouse = "<snowflake-cluster>",
  dbtable = "AAPL_table"
)
DBI::dbSendQuery(snowflake.conn,"use schema schemaname") # strange this is required

dbWriteTable(snowflake.conn, 'tablename', df, append = T, overwrite = F, verbose = T) 
# Write table
sparklyr.sdf <- copy_to(sc, iris, overwrite = TRUE)

sparklyr.sdf %>%
  spark_write_source(
   sc = sc,
   mode = "overwrite",
   source = "snowflake", 
   options = sf_options
  )