we have several reports that are over 100K rows. We would like to export them to a data warehouse to combine their data and run large analysis on that data. The reports need to be extracted daily to keep our insights always up-to-date, therefore this process cannot be done manually. I have tried:
- using the analytics API to GET the report data in a JSON format. This approach however is not suitable because:
- results are limited to 2000 rows, and fetching all detail rows would require some a priori knowledge of the report's column.
- results come in this fact-map format which would require a lot of source code on our side to parse
- using the analytics API to GET the reports in an excel format. This approach is not suitable because:
- results are limited to 100K rows, as documented in their unrelated export help guide.
- using the undocumented URL
https://{ORG}.my.salesforce.com/{REPORT_ID}?csv=1&exp=1&enc=UTF-8&isdtp=p1
(also tried withisdtp=p1&export=1&enc=UTF-8&xf=csv
) to GET the results in a CSV format. This approach is not suitable because:- although it works on small reports, it returns only the CSV header for the larger reports.
Am I missing something in the above? Is there any way to export Salesforce report data programmatically?
Update: Apparently there is no way to do this in SF, even though it's a requested feature for over a decade, and competitors have this feature. I've decided to embrace the SF xlsx row limit and ask people in the org not to create reports larger than 100K rows.
LDV/Bulk
column.