rforcecom.checkbatchstatus() 的进度条
Progress bar for rforcecom.checkbatchstatus()
我要求编写文本或图形进度跟踪器,而 rforcecom 的批量更新功能最多可加载 10,000 个批次。
要设置和完成批量更新,必须创建一些对象——这是不可避免的。我 真的 不喜欢必须重新 运行 代码才能检查 rforcecom.checkBatchStatus() 的状态。这需要自动化,而进度条可以直观地显示实际进度,因为不首选检查全局环境,它将是静态 "status" 更新,直到再次 运行。
代码的设置方式如下:
require(Rforcecom)
## Login to Salesforce using your username and password token
## Once ready to update records, use the following:
job<- rforcecom.createBulkJob(session, operation = 'update',
object = 'custom_object__c')
info<- rforcecom.createBulkBatch(session, jobId = job$id, data = entry,
batchSize = 10000)
### Re-run this line if status(in global environment) is "In Progress" for
### updated status
status<- lapply(info, FUN = function(x) {
rforcecom.checkBatchStatus(session, jobId = x$jobId, batchId = x$id)})
###Once complete, check details
details<- lapply(status, FUN = function(x){
rforcecom.getBatchDetails(session, jobId = x$jobId, batchId = x$id)})
close<- rforcecom.closeBulkJob(session, jobId = job$id)
要自动重新运行状态代码,请使用重复循环:
repeat {
statements...
if (condition) {
break
}
}
然后,要获得进度更新的视觉效果,请使用基础 R 中的 txtProgressBar()。对于这个特定功能,我使用两个简单的配套函数制作了自己的进度条函数。作为关于 progressValue() 的注释,rforcecom.checkBatchStatus() 输出为 1 和子列表的列表。用于检查已处理记录数的子列表名称是 "numberRecordsProcessed".
progressBar<- function(x, start = 0, finish){
# x is your object that is performing a function over a varying time length
# finish is your number of rows of data your function is processing
pb <- txtProgressBar(min = start, max = finish, style = 3)
for (i in 1:finish){
i<- progressValue(x)
setTxtProgressBar(pb, i)
if (progressValue(x)/finish == 1) {
close(pb)
}
}
}
finish<- function(x){
return(as.numeric(nrow(x)))
}
progressValue<- function(x){
x=x[[1]][["numberRecordsProcessed"]]
return(as.numeric(x))
}
现在,把它们放在一起!只要您知道自己的条件:"Completed" 或 "Failed",就可以训练重复循环结束。重复 "status",这将更新处理的记录数,这样做将更新您的进度条。当处理的记录数等于数据中的行数时,进度条将退出,重复循环也将退出。
repeat {
status<- lapply(info, FUN = function(x){
rforcecom.checkBatchStatus(session, jobId = x$jobId, batchId = x$id)})
progressBar(status, finish = finish(entry))
if (status[[1]][["state"]]=="Completed") {
break
}
if (status[[1]][["state"]]=="Failed") {
break
}
}
我要求编写文本或图形进度跟踪器,而 rforcecom 的批量更新功能最多可加载 10,000 个批次。
要设置和完成批量更新,必须创建一些对象——这是不可避免的。我 真的 不喜欢必须重新 运行 代码才能检查 rforcecom.checkBatchStatus() 的状态。这需要自动化,而进度条可以直观地显示实际进度,因为不首选检查全局环境,它将是静态 "status" 更新,直到再次 运行。
代码的设置方式如下:
require(Rforcecom)
## Login to Salesforce using your username and password token
## Once ready to update records, use the following:
job<- rforcecom.createBulkJob(session, operation = 'update',
object = 'custom_object__c')
info<- rforcecom.createBulkBatch(session, jobId = job$id, data = entry,
batchSize = 10000)
### Re-run this line if status(in global environment) is "In Progress" for
### updated status
status<- lapply(info, FUN = function(x) {
rforcecom.checkBatchStatus(session, jobId = x$jobId, batchId = x$id)})
###Once complete, check details
details<- lapply(status, FUN = function(x){
rforcecom.getBatchDetails(session, jobId = x$jobId, batchId = x$id)})
close<- rforcecom.closeBulkJob(session, jobId = job$id)
要自动重新运行状态代码,请使用重复循环:
repeat {
statements...
if (condition) {
break
}
}
然后,要获得进度更新的视觉效果,请使用基础 R 中的 txtProgressBar()。对于这个特定功能,我使用两个简单的配套函数制作了自己的进度条函数。作为关于 progressValue() 的注释,rforcecom.checkBatchStatus() 输出为 1 和子列表的列表。用于检查已处理记录数的子列表名称是 "numberRecordsProcessed".
progressBar<- function(x, start = 0, finish){
# x is your object that is performing a function over a varying time length
# finish is your number of rows of data your function is processing
pb <- txtProgressBar(min = start, max = finish, style = 3)
for (i in 1:finish){
i<- progressValue(x)
setTxtProgressBar(pb, i)
if (progressValue(x)/finish == 1) {
close(pb)
}
}
}
finish<- function(x){
return(as.numeric(nrow(x)))
}
progressValue<- function(x){
x=x[[1]][["numberRecordsProcessed"]]
return(as.numeric(x))
}
现在,把它们放在一起!只要您知道自己的条件:"Completed" 或 "Failed",就可以训练重复循环结束。重复 "status",这将更新处理的记录数,这样做将更新您的进度条。当处理的记录数等于数据中的行数时,进度条将退出,重复循环也将退出。
repeat {
status<- lapply(info, FUN = function(x){
rforcecom.checkBatchStatus(session, jobId = x$jobId, batchId = x$id)})
progressBar(status, finish = finish(entry))
if (status[[1]][["state"]]=="Completed") {
break
}
if (status[[1]][["state"]]=="Failed") {
break
}
}