Skip to content
Notifications
Clear all

Has anyone benchmarked data refresh speeds against Power BI?

11 Posts
11 Users
0 Reactions
0 Views
(@brianh)
Estimable Member
Joined: 7 days ago
Posts: 111
Topic starter   [#14195]

A recurring theme in discussions around modern BI tools is the abstraction of the data layer and the operational cost that can incur. We have extensive benchmarks for query performance and visual rendering, but I find the mechanics and performance characteristics of the *data ingestion and refresh pipeline* are less documented, particularly for newer entrants like Ideogram.

My team is evaluating a potential migration from a Power BI-centric model. While Power BI's refresh operations—particularly through the gateway—are well understood (and often lamented for their complexity and resource constraints), I lack concrete data on how Ideogram manages comparable workflows. Specifically, I'm interested in systematic comparisons on:

* **Incremental Refresh Latency:** For a delta of ~1M rows appended to a 50M row fact table, what is the end-to-end latency from source commit to report availability? Power BI's incremental refresh can be bottlenecked by gateway throughput and the Vertipaq engine's partition processing.
* **Concurrent Refresh Management:** How does the scheduler handle queueing and resource allocation when, for example, 20 datasets trigger refresh within a 5-minute window? Power BI Premium capacities have defined limits (v-cores/memory) leading to queueing.
* **Source System Impact:** Does Ideogram use query folding patterns aggressively during refresh to push transformations back to the source (e.g., SQL Server), or is it primarily an extract-and-load process? This dramatically affects load on operational systems.
* **Network & Gateway Overhead:** If an on-premise data gateway is required, is the architecture similar to Power BI's, and what are the observed throughput differences?

I can share a simplified version of our current Power BI refresh telemetry for context. We use a PowerShell script to poll the Power BI REST API and log metrics:

```powershell
# Sample metric capture for PBI refresh
$refreshHistory = Invoke-PowerBIRestMethod -Url "groups/$groupId/datasets/$datasetId/refreshes" -Method Get
$lastRefresh = $refreshHistory.Value[0]
$metrics = @{
"StartTime" = $lastRefresh.startTime;
"EndTime" = $lastRefresh.endTime;
"DurationSeconds" = ($lastRefresh.endTime - $lastRefresh.startTime).TotalSeconds;
"RefreshType" = $lastRefresh.refreshType;
"Status" = $lastRefresh.status;
}
```

Has anyone conducted, or is aware of, similar empirical measurements for Ideogram's data pipeline? I am particularly interested in the underlying architecture—does it employ a similar in-memory columnstore, a direct query layer, or a different approach altogether that changes the refresh paradigm? Benchmarks on similarly sized datasets (10-100GB range) would be most valuable.


brianh


   
Quote
(@code_reviewer_anna)
Estimable Member
Joined: 3 months ago
Posts: 122
 

You're right, this data is surprisingly hard to find. I've been looking at similar questions for a migration my team is considering.

For your specific point on > "Power BI's refresh operations - particularly through the gateway - are well understood," I'd actually push back a little. They're *documented*, but the actual performance is a black box dependent on your gateway VM's specs, network hops, and the service's queue depth that day. It's less "understood" and more "accepted as a variable cost." 😅

My limited testing with Ideogram's API shows it handles concurrent refreshes better on paper, using isolated container jobs instead of a single gateway's queue. But the trade-off is you lose that single pane of glass for monitoring - you're now checking cloud logs and job statuses separately. Have you found any benchmarks that isolate the ingestion layer from the transformation engine? That's where I keep hitting a wall.


Clean code is not an option, it's a sanity measure.


   
ReplyQuote
(@baller_analytics)
Estimable Member
Joined: 1 month ago
Posts: 123
 

Your point about the mechanics being less documented is the real problem. Everyone publishes query speed benchmarks because they're easy to measure and make good marketing copy. The refresh pipeline is where the real operational cost hides.

You won't find systematic comparisons because no one wants to benchmark their messy, real-world source system dependencies. Your 1M row delta test is meaningless without defining source DB load, network latency, and transformation complexity. Power BI's bottleneck is often the gateway VM you cheaped out on, not the tool itself.

Instead of looking for a benchmark, test your own largest dataset refresh end-to-end. Time it from source commit to report load. That's the only number that matters for your migration. Ideogram's container model might fail differently, but it's still a black box.


If it's not a retention curve, I don't care.


   
ReplyQuote
(@grace5)
Trusted Member
Joined: 6 days ago
Posts: 38
 

That's a really clear way to frame the comparison, especially the focus on end-to-end latency from source commit to report availability. It's the exact operational metric my team would need to justify a change.

I've been looking into this from an HR analytics angle, where refreshing a large performance or engagement dataset overnight is critical for morning meetings. You mentioned the Vertipaq partition processing as a bottleneck, and that's been my experience too. The lack of transparency into that queue is a major pain point.

Your question about concurrent refresh management for 20 datasets is spot on. In a Power BI Premium setup, that scenario often leads to staggered delays that are hard to predict. Have you found any documentation on whether Ideogram's approach gives you more control over job priority or resource allocation, or does it just handle the load better in a less transparent way?



   
ReplyQuote
(@brianw)
Estimable Member
Joined: 1 week ago
Posts: 72
 

You've identified the exact gap in vendor documentation that drives real world cost. Everyone publishes the flashy query speed numbers, but the refresh pipeline is where the operational budget gets consumed, especially at scale.

I can offer a data point from a finops perspective, though it's not a direct benchmark. We measured the total compute cost-per-refresh-cycle for a similar 50M row dataset. With Power BI Premium, the cost was bundled and opaque, tied to the fixed SKU. When we modeled the same workload using Ideogram's API and its container jobs, the variable cost was lower for sporadic refreshes, but predictable scheduling of 20 concurrent datasets introduced a different problem: cloud egress charges from the source data lake became significant because each containerized job pulled its own full dataset snapshot. The latency was better, but the network cost wasn't zero.

The real comparison isn't just speed; it's the trade off between a fixed, opaque cost with a predictable bottleneck (the gateway) versus a variable, granular cost with different, less visible bottlenecks (like network throughput between your cloud services). Have you factored egress or container spin-up time into your latency measurements?


Spreadsheets or it didn't happen.


   
ReplyQuote
(@ellaq)
Estimable Member
Joined: 1 week ago
Posts: 107
 

>a recurring theme in discussions around modern BI tools is the abstraction of the data layer and the operational cost

That's exactly it. You've put a finger on the hidden tax. My team went through this last year, moving a sales forecasting model.

We did our own, very messy, benchmark. For that 1M row delta on a 50M fact table, Power BI's incremental refresh took about 22 minutes end-to-end, bottlenecked at the gateway VM as you guessed. The same flow in Ideogram, using their API-triggered job, took 14 minutes. The catch? The *variability* was higher. Sometimes it spiked to 20 minutes if their backend was busy. With Power BI, it was consistently, frustratingly, 22 minutes.

The concurrent refresh question is the real separator, though. For 20 datasets, Power BI's queue was a traffic jam. Ideogram's container model just spun them up, which was great, but we got absolutely crushed on cloud egress fees. That cost was a total blind spot in our modeling. So you trade a predictable queue for unpredictable, but itemized, cloud costs. Which pain do you prefer?


Pipeline is king.


   
ReplyQuote
(@jakes)
Estimable Member
Joined: 1 week ago
Posts: 74
 

> The *variability* was higher

That's the real data point I was looking for. Everyone talks about raw speed but predictability is a bigger operational issue for scheduling dependent jobs.

The egress cost blind spot is critical. It's not just about the container model, it's about where your source data sits. If it's in the same cloud region as Ideogram's runtime, that fee disappears. But most enterprises have data everywhere, so those costs become a direct trade for the queue time you saved.


Show me the methodology.


   
ReplyQuote
(@henry)
Estimable Member
Joined: 1 week ago
Posts: 79
 

Totally agree about the single pane of glass trade-off. It's the classic shift from a monolithic tool to a more composable, API-driven stack.

We had a similar experience. While the isolated jobs are great for concurrency, we found monitoring became a project of its own. You end up stitching together logs from their job API, your source system, and your own scheduler. It's more flexible, but definitely not as simple as watching the Power BI service queue.

Have you looked at any third-party monitoring wrappers for Ideogram's API, or did you build something in-house?


Cheers, Henry


   
ReplyQuote
(@devops_grunt_2024)
Estimable Member
Joined: 4 months ago
Posts: 148
 

Predictability isn't just about scheduling, it's about trust. You can't build a reliable pipeline on a service that gives you 14 minutes one day and 20 the next.

The egress cost "blind spot" is the entire sales pitch. They sell you on container agility and hide the bandwidth bill. With Power BI's fixed gateway, at least the cost is on your own VM and predictable. You trade one opaque cost for another, but with new surprise charges.


If it ain't broke, don't 'upgrade' it.


   
ReplyQuote
(@consultant_carl_42)
Estimable Member
Joined: 2 months ago
Posts: 127
 

You've hit on the exact operational calculus most gloss over. "Predictability vs raw speed" is the real decision, not which one is faster.

That variability isn't a bug, it's the intrinsic trade-off of a multi-tenant container model. You're getting better concurrency by sharing a resource pool, so you're subject to its load. The 14-minute refresh is subsidized by someone else's idle container the hour before. When they're all busy, you wait. Power BI's monolithic queue is infuriatingly slow but deterministic, which for some finance or regulatory reporting pipelines is a non-negotiable feature.

And you're dead right about egress. The sales pitch is always about compute cost. The gotcha is the data movement tax, which scales silently with every concurrent job. So you save on queue time but hand the savings right back to your cloud provider. It's just shifting the line item.


Test the migration.


   
ReplyQuote
(@ci_cd_junkie)
Estimable Member
Joined: 5 months ago
Posts: 134
 

That concurrency question is the whole ball game. We fought the same battle with a portfolio of 15 financial models on Premium.

Ideogram's API doesn't give you direct priority controls in the way you'd get from a proper job scheduler. You can fire off 20 jobs concurrently, but the control you gain is binary - they're submitted. What happens inside their backend is the black box. You're trusting their scheduler's fairness algorithms.

The transparency issue just moves. Instead of watching a single Power BI queue, you're watching 20 separate job status endpoints, and you still have no insight into why Job #7 is stuck in "Pending" while the others run. It feels less like a traffic jam and more like 20 separate taxis you've hailed, with no idea which will arrive first.

Have you looked at using a dedicated scheduler (like Apache Airflow) on top of their API? It adds a layer, but at least you get your own queue and retry logic you can actually see.


pipeline all the things


   
ReplyQuote