Overview
Power BI offers two primary connectivity modes to consume data: DirectQuery and Import. When SharePoint lists are the source, each mode behaves differently and carries trade-offs for performance, freshness and governance. This article explains how DirectQuery and Import work with SharePoint, why neither is ideal when connecting directly to lists at scale, common decision mistakes, and a pragmatic architectural alternative using a SQL repository such as SQList.
Key terms
Define terms on first use to avoid ambiguity:
- SharePoint list: a structured collection in SharePoint used to capture items or records with columns and metadata.
- DirectQuery: a Power BI connectivity mode where queries are issued live to the source system at report runtime; data is not stored in the Power BI dataset.
- Import: a mode where Power BI loads a snapshot of data into the dataset model and uses scheduled refresh to update it.
How each mode works with SharePoint
Import mode retrieves SharePoint list rows via the connector and stores them in the Power BI dataset. Queries in reports and visuals operate against the in-memory model, offering fast interactions and local aggregations. Refreshes (full or incremental) run on a schedule and read the list data to update the cached dataset.
DirectQuery leaves the data in SharePoint. When a user interacts with a visual, Power BI translates the visual’s query into requests to the SharePoint connector (over OData or the REST API). Each interaction can trigger multiple requests to the SharePoint service, and there is no in-memory copy inside the dataset.
Why neither mode is ideal when connecting directly to SharePoint
SharePoint lists are designed for collaboration, not analytical workloads. Several practical limitations make both Import and DirectQuery suboptimal when used directly over large or complex lists:
- Latency and throttling: SharePoint Online enforces throttling to protect the service. DirectQuery produces many small queries which increase the risk of throttling and timeouts. Import can also hit throttling during refresh windows if many large lists are read concurrently.
- API and filtering constraints: The SharePoint REST/OData endpoints have limits on filtering, supported query constructs and page sizes. Complex joins, server‑side aggregations or set‑based operations are not available, making powerful analytical transformations inefficient.
- Scale and reliability: SharePoint lists show degraded reliability beyond moderate size or when lists approach thresholds described in Microsoft guidance. This can make scheduled refreshes fail or deliver inconsistent results.
- Governance and auditing: Using SharePoint as the reporting backend mixes operational content with analytics access patterns. It complicates permissioning, change control and retention for reporting datasets.
For further reading on these practical limits and why SharePoint often breaks as a reporting database, see the article on The Hidden Cost of Using SharePoint as a Reporting Database and common workarounds that frequently fail in production in Common SharePoint Reporting Workarounds — and Why They Break.
Performance and governance implications
Performance characteristics differ markedly between the two modes:
- Import performance: Interactive performance is excellent because visuals hit the in-memory model. The downside is refresh time and the window during which data is stale. Large datasets require careful incremental refresh design and capable refresh infrastructure.
- DirectQuery performance: Fresh data at the point of query, but user experience depends on SharePoint response times and network latency. Reports can become slow or flaky during periods of throttling or when the underlying list is large.
Governance consequences include increased operational complexity when SharePoint is both the transaction and reporting store. Backups, schema changes, permission changes, and retention policies on SharePoint can unexpectedly affect reporting. The article Why SharePoint Lists Struggle Beyond 50,000 Items provides useful context on scale considerations to factor into planning.
Typical decision mistakes
Teams often make predictable mistakes when choosing between DirectQuery and Import for SharePoint data:
- Choosing DirectQuery for perceived real‑time needs: Many assume DirectQuery equals real‑time and choose it without testing. In practice, SharePoint’s throttling and limited query capabilities make the user experience poor under load.
- Import without incremental strategy: Import works until the dataset grows; running full refreshes over large lists causes long refresh times and contention with other maintenance tasks.
- Using Power BI to transform complex datasets from lists: Trying to replicate relational joins or heavy transformations client‑side leads to brittle reports and excessive refresh compute.
A pragmatic alternative: a reporting repository
For reliable and responsive Power BI reporting from SharePoint list data, a purpose‑built reporting repository is often the best option. This separates operational collaboration (SharePoint) from analytical workloads (a SQL Server database) and offers:
- Optimised queries, indices and set‑based operations for aggregations and joins.
- Predictable refresh behaviour and the ability to support incremental or near‑real‑time replication.
- Centralised governance, auditing and schema control for reporting use cases.
AxioWorks’ SQList is an example of a replication approach that moves SharePoint list data into SQL Server, preserving metadata and enabling reliable analytics. For a practical architecture that combines list capture with performant Power BI delivery, see From SharePoint Lists to Real‑Time Insights: A Practical Architecture for Power BI. If metadata fidelity is important for reporting, also review Unlocking SharePoint Metadata for Reliable Reporting with SQList for guidance on preserving content types and managed metadata.
Practical example
Consider a service desk list with 300,000 items across sites. DirectQuery would compete with user interactions and likely be throttled; Import without incremental refresh would require long nightly refreshes. A pragmatic pattern:
- Replicate the lists into SQL Server using a controlled sync tool.
- Model and aggregate in SQL with indices and views to produce analytical tables.
- Use Import mode in Power BI against the SQL views for fast interaction and scheduled incremental refresh to keep data current.
This pattern combines the performance of Import with the governance and query capabilities of a database, while avoiding the unpredictable behaviour of hitting SharePoint directly from interactive reports.
When this approach is appropriate and who it is intended for
This architecture is suitable when:
- SharePoint lists are the system of record for structured business data that must be analysed.
- Data volumes or query complexity exceed what is practical for direct reporting over SharePoint.
- Organisations need reliable refresh windows, predictable performance for business users, and centralised governance for reporting data.
It is intended for reporting teams, BI architects and platform owners who must deliver responsive dashboards from SharePoint data without compromising the operational SharePoint environment. For teams that prefer to keep everything in Microsoft 365, the architectural trade‑offs should be assessed carefully; the architecture described in From SharePoint Lists to Real‑Time Insights: A Practical Architecture for Power BI outlines common patterns and constraints.
Conclusion
DirectQuery and Import each have valid use cases, but neither is a panacea when SharePoint lists are the source. DirectQuery risks throttling and slow UX; Import risks long refresh windows and stale data unless paired with a robust incremental strategy. Moving list data into a SQL reporting repository provides the best balance of performance, freshness and governance for enterprise reporting. For pragmatic options that preserve SharePoint metadata while delivering reliable Power BI experiences, consider a SQL replication pattern such as SQList.
#sharepoint #powerbi #dataarchitecture #sqlserver #reporting #sqllist

