+34649324221 · Today 09:00–14:00 · 15:30–20:00

The Salesforce Reports 2,000-Row Limit in Power BI: Why It Happens and How to Get Past It

· By the from Analytics teamChat on WhatsApp

The short answer

If Power BI never brings more than 2,000 rows from a Salesforce report, nothing is broken. You are using the Salesforce Reports connector, and Salesforce's reports API hands over at most the first 2,000 rows. The rest never reaches Power BI, and no error tells you so.

The lasting fix is to read the data under the report with the Salesforce Objects connector, which has no such limit, and rebuild the logic in Power Query and DAX. For how to connect the two in the first place, see our Salesforce Power BI connector overview.

Where the Salesforce report API 2,000-row limit comes from

The limit is Salesforce's, not Power BI's. The connector runs on the Reports and Dashboards REST API, and its developer guide (version 68.0, Winter '27, last updated 9 October 2026) says it plainly: «The API returns up to the first 2,000 report rows. You can narrow results using filters.»

Microsoft's Salesforce Reports connector page confirms it: rows in Salesforce Reports are limited by Salesforce to 2,000, and the workaround is the Salesforce Objects connector, which doesn't have that limit. So:

  • No setting lifts it. Changing the ApiVersion, the refresh schedule or your Power BI licence changes nothing.
  • It applies per report. Every report you load is cut at its own row 2,000.
  • It is silent. The refresh succeeds and the numbers simply come out low.

The same guide lists other report limits: the API only processes reports with up to 100 fields selected as columns, and an org can request up to 500 synchronous report runs per hour.

How to tell the connector has cut your report

  1. 1
    Count the rows
    Use Table.RowCount in Power Query or a row count on a card. Exactly 2,000 is the giveaway: real data rarely lands on a round number.
  2. 2
    Compare a closed period
    Compare the total amount and number of deals for a finished quarter with the same report in Salesforce. Closed periods don't move, so any gap is missing rows.
  3. 3
    Keep the check
    Leave a measure in the model that flags 2,000. A report that fits today can pass the limit next quarter.

Power BI Salesforce Objects vs Reports: what changes

Row limit
Reports stops at row 2,000 of each report. Objects reads whole tables, such as Opportunity or Account, without that limit.
Where the logic lives
With Reports, filters and groupings stay in Salesforce. With Objects, you rebuild them in Power Query and DAX.
Effort
Reports is quicker on day one. Objects takes modelling work up front: relationships, filters and measures.
Reuse
A report brings one fixed table. With Objects, the same tables and measures serve every page and join other sources.
Changes
If someone edits the report in Salesforce, the Power BI query can break. A model on Objects only changes when you change it.

Fix 1: rebuild the report with the Salesforce Objects connector

This is Microsoft's own recommendation. The work is translating what the report does into a model.

Objects and fields to load

The report type tells you which objects to load. Take only the columns the report uses, which also avoids the «too many fields» error. For an opportunity pipeline report:

  • Opportunity: Id, Name, AccountId, OwnerId, Amount, CloseDate, StageName, Probability, ForecastCategoryName, IsClosed, IsWon, RecordTypeId, LeadSource, CreatedDate.
  • OpportunityLineItem: OpportunityId, Product2Id, Quantity, UnitPrice, TotalPrice. Only if the report shows products.
  • Product2: Id, Name, Family.
  • Account: Id, Name, Industry, BillingCountry, OwnerId.
  • User: Id, Name, UserRoleId, IsActive. Add UserRole if the report groups by role or team.

Relationships

Opportunity to Account on AccountId and to User on OwnerId; OpportunityLineItem to Opportunity on OpportunityId and to Product2 on Product2Id. Add a date table related to CloseDate, with your fiscal year if it doesn't start in January.

Filters become Power Query steps or slicers

Fixed filters, such as record type or excluding test accounts, go in Power Query so those rows never load. Filters people change, such as close date, stage or owner, become slicers.

Groupings and summaries become DAX measures

The report's subtotals become measures, defined once and reused on every page:

  • Open pipeline = CALCULATE ( SUM ( Opportunity[Amount] ), Opportunity[IsClosed] = FALSE () )
  • Won amount = CALCULATE ( SUM ( Opportunity[Amount] ), Opportunity[IsWon] = TRUE () )
  • Win rate = DIVIDE ( CALCULATE ( COUNTROWS ( Opportunity ), Opportunity[IsWon] = TRUE () ), CALCULATE ( COUNTROWS ( Opportunity ), Opportunity[IsClosed] = TRUE () ) )

The grouping (by owner, stage or month) is just the column you put on the visual.

Check before anyone uses it

Compare totals with the original report for two or three closed periods. Gaps usually come from a missed filter, currency or visibility: the connector gets what its signed-in Salesforce user may see, which may differ from the report owner. Use an integration user that sees what the model needs, and control access with row-level security in Power BI.

Fix 2: split the report with filters and append the pieces

If you can't rebuild yet, cut the data into pieces under 2,000 rows each. Save several copies of the report in Salesforce, each filtered to one slice (by quarter, region or record type), load each with the Salesforce Reports connector and append them in Power Query.

What to watch:

  • Slices grow. When one passes 2,000 rows it gets cut without an error. Keep a row count per slice.
  • Relative dates move. Filters such as «this quarter» shift on their own, and slices can overlap or leave gaps. Use fixed ranges for closed periods.
  • Upkeep multiplies. A column change has to be made in every copy, or the append breaks.
  • Report runs count. Each refresh runs every slice, against the org's hourly limit.

It is a stopgap: with growing data you end up at Fix 1 or Fix 3.

Fix 3: land Salesforce in a data warehouse before Power BI

When Salesforce has to sit next to GA4, ad platforms or the ERP, copy its objects into a warehouse on a schedule and point Power BI there. No row limit, history you control, and opportunities defined once.

The modelling from Fix 1 doesn't disappear: it moves into the warehouse, where every tool reuses it. New to the term? Read what a data warehouse is.

Fix 4: Data 360 zero copy, only if you already have it

Salesforce Data 360 (formerly Data Cloud) has zero copy, a data federation feature that lets Data 360 and warehouses such as Snowflake, Databricks, Redshift and BigQuery use each other's data without copying it. If you already pay for Data 360, sharing its data into the warehouse Power BI reads can save a separate load.

If you don't, buying it just to get past a Power BI row limit rarely adds up.

Which fix to choose

Salesforce only, a few reports
Fix 1, with a row-count check.
You need numbers this week
Fix 2 to get by, and plan Fix 1.
Salesforce plus GA4, ads or ERP
Fix 3: Fabric, BigQuery or Snowflake, with Power BI on top.
Data 360 already in the contract
Fix 4, after checking what your licence includes.
A small report the team trusts
Keep Salesforce Reports and watch the row count.

Other Salesforce Reports connector limitations

Both Salesforce connectors need the API Enabled permission, don't work with trial accounts or Lightning URLs, need IP-locked sessions turned off and only import, with no DirectQuery. Details and API call allowances are in our Salesforce Power BI connector guide.

Salesforce report 2,000-row limit: frequently asked questions

Can I raise the 2,000-row limit in Salesforce or Power BI?

No. It is a limit of Salesforce's Reports and Dashboards REST API, and no setting in Salesforce or Power BI changes it.

Does the Salesforce Objects connector have a row limit?

Not the 2,000-row one. Microsoft's documentation says the Objects connector doesn't have it. Other Salesforce limits still apply, such as daily API calls and concurrent queries.

Why does my report have more than 2,000 rows in Salesforce but not in Power BI?

Because Power BI reads it through the API, which returns only the first 2,000 rows. The data in Salesforce is complete.

Do I need a data warehouse to get all my Salesforce data into Power BI?

No. The Salesforce Objects connector is enough for many teams. A warehouse pays off when Salesforce meets other sources or you need history.

Salesforce Power BI connectorPower BI consultingWhat is Microsoft FabricPower BI sales dashboard examples

Stuck at 2,000 rows? Let's look at your reports

In a 30-minute call we look at the Salesforce reports you load into Power BI and tell you which fix makes sense for them. If we can't help, we'll tell you that too.

Book the 30-minute call
Reviews

What our clients say

★★★★★
«from Analytics consultants have been a great asset to us at H&M. They initially joined us to support our migration to GCP and have since helped various business teams not only migrate their reports, but also restructure their entire BI architecture, while being a front-runner in exploring how AI can be utilized within analytics.»
Bianca A.H&M
★★★★★
«Truly impressed with from analytics data visualization skills! Their professionalism and attention to detail not only met but exceeded my expectations. Working with them was a breeze, thanks to their proactive communication and politeness. Highly recommend!»
Facundo P.Puramedicina
★★★★★
«Thanks to from Analytics, we now have custom dashboards to monitor performance across all team divisions, from marketing and customer success to finance and business development. The customer success dashboard has been a complete game-changer, and our leadership team can now make informed decisions directly from clear visual data. We are forever grateful for from Analytics dashboards!»
Chryso S.Stronde