Forum Discussion
Splitting tables between directquery and import mode
- 11 months ago
Hi Hussein_charif,
Thank you for reaching out to the Microsoft fabric community forum and sharing the details. Also, thanks to Shahid12523, Gabry, Nabha-Ahmed, amitchandak, for those inputs on this thread.
You are right. what you are describing is called a hybrid/composite model in Power BI, where part of the fact table is cached in Import mode for speed, and the rest is kept in Direct Query, so you don’t have to load all the historical data.
The easiest and most efficient way to achieve this is by using Incremental Refresh with Hybrid Mode. You can tell Power BI to keep (for example) the last 6 months of data in Import mode, and anything older will stay in Direct Query. That way, when users look at recent data, it loads instantly from memory, but if they need history, Power BI queries the source on demand.Here is how you can set it up: In Desktop, define an incremental refresh policy (Modelling → Incremental Refresh). Choose how much data to keep in Import and how far back you want to enable Direct Query. Enable Hybrid Mode. Publish the dataset, Power BI automatically manages the split partitions for you. This setup is much cleaner than manually splitting tables, and it scales well.
Refer these links:
1. https://learn.microsoft.com/en-in/power-bi/connect-data/incremental-refresh-overview
2. https://learn.microsoft.com/en-us/power-bi/connect-data/incremental-refresh-configureHope this clears it up. Let us know if you have any doubts regarding this. We will be happy to help.
Thank you for using the Microsoft Fabric Community Forum. - 11 months ago
A hybrid or composite model in Power BI is designed to balance performance and scale by splitting a large fact table between Import and DirectQuery storage modes. The idea is that recent, frequently accessed “hot” data is loaded into Import mode for fast, in-memory querying, while older, rarely accessed “cold” historical data remains in DirectQuery, so it doesn’t bloat the dataset. When users run reports, Power BI automatically determines whether to pull data from Import or DirectQuery partitions, combining results seamlessly so the experience feels like a single table. In Premium or Fabric capacities, this can be achieved easily with Incremental Refresh and the “Get the latest data in real time with DirectQuery” option, which automatically manages Import vs. DirectQuery partitions. Without Premium, developers can simulate this by manually creating one table in Import (filtered to recent years) and another in DirectQuery (for history), then combining them into a logical model. The key to efficiency is keeping the Import partition small enough for quick refreshes, ensuring the DirectQuery source is optimized with indexes, and designing reports to minimize queries against large historical partitions.
Idea: Keep recent data in Import (fast, in-memory) and old data in DirectQuery (lighter, on-demand).
How:
If you have Premium/Fabric → use Incremental Refresh with Hybrid mode (Power BI automatically partitions the table).
Without Premium → manually split into two tables (Import for recent, DirectQuery for historical) and UNION them.
Result: Users see one seamless fact table. Queries on recent data are fast; old data is only queried when needed.
so i split the fact table to 2 seperate tables, one that is direct query and getting only old data (example <=2023) and the other is import and getting new data (>2023), and then i append both tables in power query?