SalesforceR: включить PKChunking для группового запроса SalesForce в R - PullRequest
0 голосов
/ 22 января 2020

Я пытаюсь запросить большую таблицу (30M записей) из Salesforce в R, используя пакет SalesforceR, и надеюсь сделать это, не разбиваясь на множество запросов.

Следующий запрос (имена изменены для безопасности / readability) завершается успешно, если я ограничиваю записи:

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 минут, что соответствует документации 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))

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

Ссылка 1: https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/asynch_api_bulk_query_processing.htm

Ссылка 2: https://cran.r-project.org/web/packages/salesforcer/salesforcer.pdf#Rfn .sf.Rul.control

...