SPSync vs Power Query in Excel or Power BI, direct

Power Query on a live SharePoint list is quick for a small report. Past the view threshold, or with a shared audience, a database copy serves better.

Choose SPSync when a list has passed the view threshold or several reports need the same data; choose Power Query direct for a small list and a report one person maintains.

Documentation reviewed

Where Power Query fits

Where it breaks

Feature by feature

FeatureSPSyncPower Query in Excel or Power BI, direct
SharePoint Online supportCore productYes, via the SharePoint Online list connector
On-prem SharePoint supportOn the roadmapYes, via an on-premises data gateway
DestinationsRelational, warehouse, lake and search/vector destinations: 20 destination engines (30+ named targets such as Azure SQL, MariaDB and Supabase), including SQL Server, Postgres, BigQuery, Databricks, ClickHouse, Parquet, Iceberg, pgvector and Azure AI Search; see /destinations/Excel workbooks and Power BI datasets only
Lookup normalisationLookups become joinable key columns in a database you runResolved at query time, not stored as a relational key
Multi-value columnsChild tablesHandled with M query transformations, per report
DeletesSoft delete by default, hard delete with the command-line toolNot tracked; a deleted item just disappears on next refresh
Delta syncEvery few minutes by default, plus a reconcile, weekly by defaultFull read on every refresh, live from SharePoint
Schema evolutionNew columns appear automatically; on SQL Server, PostgreSQL, MySQL, ClickHouse, Oracle, SQLite and DuckDB retyped columns get a _v2 columnQueries typically need updating for new or changed columns
Hosted optionSPSync in your AzurePower BI Service refresh, still reading SharePoint live each time
Desktop appmacOS and WindowsBuilt into Excel and Power BI Desktop; availability differs by platform, see Microsoft's documentation
CLI / CIBuilt-in CLINone
Per-site least-privilege permissionsDelegated sign-in or app-only with Sites.Selected, bring-your-own-appCredentials are set per data source in Excel, Power BI Desktop or the Power BI service
Pricing modelLicensed per installation and per target family, on annual terms, with Standard Support included; no public price list, quoted after a callIncluded with Excel or Power BI licensing you already have

For a quick pull into Excel, a small list, or a report someone needs today and will not maintain for long, connecting Power Query straight to SharePoint is the fastest option. It is already inside Excel and Power BI, and most analysts know how to shape the result with M queries. If the list is small and the report is disposable, that is often the right level of effort.

As the list grows

Problems arrive as the list, or the ambition, grows. SharePoint’s list view threshold applies at 5,000 items, and Power Query’s own SharePoint connectors run into it too. Every refresh reads live from SharePoint, so it is slow and puts repeated load on the source each time someone opens the report. The newer connector allows at most 12 join operations per query, and lookups resolve at query time with no stored relationship. Because a refresh produces a workbook or a dataset, there is no shared queryable copy and no record of what was deleted.

One copy for every report

SPSync replicates the lists into a database on a schedule, so every report reads the same current copy and SharePoint is no longer queried live. Paging around the 5,000-item threshold and Graph throttling are handled from the start, so a large list that stalls Power Query replicates normally. Lookups become key columns you can join on and multi-value columns become child tables, so a join across lists is a plain SQL join with no limit on how many you write.

The point to move is usually when a second report or a second person needs the same data that one workbook holds today. If that workbook is a list someone exports by hand every week, exporting a SharePoint list to Excel automatically compares Microsoft’s own routes, each with its published limit, with a workbook that refreshes from the database copy.

Repointing the reports

  1. List the SharePoint sources each Power Query report reads.
  2. Sign in to SharePoint in SPSync and select the lists those reports use.
  3. Choose a destination database (Power BI can use DirectQuery against it) and set the sync schedule.
  4. Change each report’s data source from the live SharePoint connector to the new database tables.
  5. Retire the direct SharePoint queries once the reports are validated against the new source.

SPSync as a Power Query alternative for SharePoint lists

With SPSync in place, Power Query still shapes the data, reading database tables in place of the live list. Refreshes stop paging through SharePoint, joins across lists become plain SQL joins, and every report reads the same current copy.

Other alternatives

Frequently asked questions

Why does my Power Query refresh fail on a large SharePoint list?

Every refresh reads the list live, so a big list means many pages of requests, and a filter on an unindexed column runs into SharePoint's 5,000-item list view threshold. SPSync pages through the list once and then reads only the changes, and Power Query reads the database copy.

Can Power BI use DirectQuery against the SPSync copy?

Yes. Once the list is in SQL Server, Azure SQL or PostgreSQL, Power BI can import from it or query it with DirectQuery, and the report no longer touches SharePoint at refresh time.

What happens to items deleted in SharePoint?

The row stays and its sp_deleted_at column is set, so a report can show deleted items or filter them out. To remove the row instead, set deletes: hard on that replication in the command-line tool's YAML config. Runs from the desktop app and from SPSync in your Azure always keep the row.

Desktop, Azure or command line

All three editions run the same engine, write the same tables and use the same licence key, so the choice comes down to who looks after the sync.

Desktop app

For macOS and Windows. Sign in with Microsoft, tick the lists, choose a database and sync from your own machine on the schedule you set. Delegated sign-in needs no admin unless your tenant requires admin consent for apps.

In your Azure

SPSync in your Azure, a managed application for your own subscription, is deployed with you on a call while the Marketplace listing is prepared. Once deployed it is always on, so the sync keeps running with every laptop closed.

Command line

Every replication is a YAML file you can review and commit. Run it from a server, a container or a CI pipeline, and re-run it safely any time.

Book a call

Book a call to talk through your use case, see further walkthroughs or demos, and set up a trial in your own environment.