将R列中的最后N天覆盖为雪花
例如,我使用的是tidyquant数据集将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
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
)