【发布时间】:2023-04-08 09:38:01
【问题描述】:
我正在尝试使用 SalesforceR 包从 Salesforce 到 R 查询一个大表(30M 记录),并希望这样做不会拆分成许多查询。
如果我限制记录,则以下查询(为安全/可读性更改名称)成功:
OrderItemsSF <- sf_query_bulk("SELECT Id,Order,Product,Quantity FROM OrderItems LIMIT 1000000",object_name = "OrderItems", api_type = "Bulk 1.0", verbose = TRUE, max_attempts = 1000)
只要花费超过 10 分钟,此查询就会失败(“错误:列名 'result' 不得重复”),这符合 SF 的文档,即批量查询在 10 分钟后重试(参见底部的链接 1)。我相信答案是让 PKChunking 能够自动将我的查询分成更小的批次,但是我很难找到一个有效的语法。
我尝试了以下方法:
OrderItemsSF <- sf_query_bulk("SELECT Id,Order,Product,Quantity FROM OrderItems LIMIT 1000000",object_name = "OrderItems", api_type = "Bulk 1.0", verbose = TRUE, max_attempts = 1000, control = sf_control(PKChunkingHeader = list(`Sforce-Enable-PKChunking`= TRUE)))
这会导致错误“catch_errors(httr_response) 中的错误: ClientInputError:Sforce-Enable-PkChunking 没有有效值。使用 FALSE 也会导致同样的错误,根据文档(见底部链接 2),FALSE 是该参数的默认值,所以这没有意义!
其他语法尝试,例如下面的尝试,在 10 分钟内成功查询并在 10 分钟内失败,这表明 R 忽略此文本而不是实际 PKChunking:
OrderItemsSF <- sf_query_bulk("SELECT Id,Order,Product,Quantity FROM OrderItems LIMIT 1000000",object_name = "OrderItems", api_type = "Bulk 1.0", verbose = TRUE, max_attempts = 1000, control = list(`Sforce-Enable-PKChunking`= TRUE))
我对看似简单的语法问题感到茫然,并且在 SalesforceR 查询中找不到任何在线 PKChunking 的具体示例,尽管文档说可以做到这一点。非常感谢这里的一些指导。
链接2:https://cran.r-project.org/web/packages/salesforcer/salesforcer.pdf#Rfn.sf.Rul.control
【问题讨论】:
标签: r salesforce chunking