Back to Blog

NetSuite Power BI Integration: Picking the Connector, Building the Model, and Who Does the Work

ERPInformation TechnologyStaffing Firm

Last updated: November 12, 2026

Power BI reads NetSuite through SuiteAnalytics Connect, a third-party connector, or a warehouse in the middle, and in my experience the dashboards wired straight to saved searches are the ones that stall on refresh. Building the model is contract work. KORE1 Contract Rate Index 2026-Q4 (October 2026) puts a mid-level BI developer at $82 to $111 an hour, median $95, about $49,600 for three months.

Orange, copper and grey metal pipes running along a concrete floor into a single clear glass cylinder, a picture of three routes feeding one Power BI model

7:40, board meeting morning. The CFO opens the revenue dashboard and the tiles show Friday’s numbers. Not Monday’s. Somebody hits refresh by hand, and the little spinner goes around for a very long time.

Nobody built a bad dashboard. That’s the annoying part. The visuals are fine, the colors match the brand deck, and the model underneath is a saved search somebody wired straight into a dataset a year and a half ago, back when the transaction table was maybe a third the size it is now. It got a little slower every month and nobody said anything, because slow isn’t broken. Until the morning it is.

I’ve watched some version of that morning play out more than once, usually with the same cast. So here’s the build sheet. How the data gets out of NetSuite and into Power BI, what Microsoft really says about refresh slots and gateways (it’s less scary than the forums make it sound), how to shape the model, and who you need to build it and then keep it breathing.

Cards on the table. KORE1’s IT staffing desk places the contract Power BI developers I’m about to price, on contract staffing terms, and my group at Foretopia builds NetSuite data models for a living. We both get paid if you bring in help. Obviously. If somebody on your finance team already lives in DAX and has a quiet quarter, keep the money and go build it.

How Do You Get NetSuite Data Into Power BI?

Three routes get NetSuite data into Power BI. Oracle’s SuiteAnalytics Connect drivers. A third-party connector. Or a warehouse parked in the middle. The same transactions move down all three, and what changes is who maintains the pipe, where the refresh load lands, and what falls over first.

Route one is Oracle’s own door. Oracle’s Help Center says that if your company enables the Connect Service, NetSuite offers ODBC, JDBC, and ADO.NET drivers you can download, install, and use (Oracle NetSuite Help, SuiteAnalytics Connect). It is read-only, which means Power BI can look at your data and can’t touch it, and that is exactly how a finance team wants any outside tool to behave once it’s pointed at the general ledger.

Route two is somebody else’s connector. A vendor already built the pipe, deals with the NetSuite side, and rents it to you. Totally reasonable. Just ask the unglamorous question before you sign anything. When a refresh dies at 6 a.m., who picks up the phone? If the answer is a support queue at a company that is neither Oracle nor Microsoft, budget for that.

Route three drops a warehouse in the middle. NetSuite data lands in a store you control, on a schedule you pick, and Power BI reads the store instead of NetSuite, so your Monday refresh stops leaning on NetSuite at all (the people who run your NetSuite account tend to like this one). The catch is one more system you now own. It needs feeding, watching, and somebody who knows where the bodies are buried. That somebody is a salary or a contract.

Which of the three fits depends on your volume, how much history you need, and who already owns what. That’s a separate argument, and I made it on the native, warehouse or outside BI tool decision, so I’m not re-running it here. This post starts after you’ve picked.

Why Do Power BI Dashboards Built on Saved Searches Stall on Refresh?

Three things stack up, and none of them shows on day one. They add up fast.

Start with the saved search itself. Somebody built it for a human, with filters and a column order that looked right on a screen, and it got drafted into service as a data source because it was already there and the report was due Friday. Now add the fact that transaction tables never shrink. Every sales order, invoice, and journal line you’ve posted since go-live is still in there, and next month brings more. Now add the fact that a full refresh reads the entire pile every single time, which means the refresh that finished before your coffee cooled at launch is finishing after lunch eighteen months later, and because the slide is gradual, nobody sees it bend. Three small things. One big problem.

Microsoft is blunt about the ceiling. On shared capacity, “Data refreshes must complete in less than two hours.” Premium raises the maximum to five hours (Microsoft Learn, Data refresh in Power BI, updated October 2026). Cross the line and the refresh fails. Power BI emails the failure notice to the semantic model owner by default. One person. Possibly on vacation. Not great.

Oracle’s Connect chapter has its own warning label. The service “should be used with static data or data that doesn’t change often,” and Oracle adds that “using real-time data access applications with the Connect Service can slow the retrieval of results and cause connection interruptions.” Put that next to a dashboard the whole company assumes is live. See the collision? I do.

A board meeting is a bad place to learn any of this. It sucks.

The fix is boring, which is exactly why it keeps getting skipped. Land the data in a table shaped for the model, not for a person scrolling a list. Load only what changed. Put one person’s name on the refresh. The next two sections handle the first two, and the build sheet further down handles the third.

What Do Refresh Slots, Capacity, and the Gateway Actually Require?

Start with slots. Microsoft’s refresh page says you can configure up to eight daily time slots if your semantic model is on shared capacity, or 48 time slots on Power BI Premium. The count follows capacity. It doesn’t follow whatever a license is called in a sales deck, so if somebody tells you your plan “includes X refreshes,” ask which capacity the model sits on.

Eight a day covers most of the finance dashboards I’ve looked at, because finance closes the books monthly and most of what a controller checks at noon is the same as what they checked at nine. Where eight falls short is a team that believes the dashboard is live. Settle what “fresh” means before the build, print it on the dashboard, and the 2 p.m. “why is this number wrong” call mostly stops happening.

Then the gateway. Here is Microsoft’s wording: “If your semantic model uses a data source that Power BI can’t access over a direct network connection, you must configure a gateway connection for this semantic model before you can enable a refresh schedule or perform an on-demand data refresh.”

Read that again, slowly, because people turn it into a rule and it’s a condition. Here’s the test. Can the Power BI service reach your source over a direct network connection? Or is the data sitting behind something it can’t see? If it can’t reach it, you need a gateway connection set up before any schedule, or any on-demand refresh, will work. Notice what the test is about, which is where the data lives and not what the route happens to be called, because the label on a route tells you nothing about the network underneath it. So I’m not going to hand you a blanket “ODBC means gateway” line. The page doesn’t say it, where your driver or warehouse actually runs decides the answer, and I haven’t seen your network.

Two things I can’t give you. One, which license somebody needs to view or share a report built on NetSuite data. Microsoft’s refresh page doesn’t say, and license terms move around, so check learn.microsoft.com before you promise a single person access. Two, a hard size cap. What the page does say is to consider incremental refresh for semantic models larger than 1 GB or ones that take several hours to refresh. A nudge, not a limit. It still tells you where Microsoft’s own advice starts.

How Should the NetSuite Data Model Be Built?

Star schema. Oldest idea in BI. Boring in the best way. One fact table of transaction lines in the middle. Around it, the things you slice by: items, customers, subsidiaries, and accounting periods, plus a transaction header for the document-level fields. Build the date table on your accounting periods, because finance doesn’t think in calendar months at close. Shape everything in Power Query before it reaches the model, and keep DAX for measures.

Next, incremental refresh on a transaction date. In Microsoft’s words, in models with an incremental refresh policy “only a subset of the table partitions are refreshed,” so you stop re-reading the whole pile every time. One catch, and it’s a good one. People edit old transactions. Back-dated entries land in earlier periods, and a window that only reloads recent data can miss them. Set the window with finance in the room. Otherwise the model drifts from the ledger and nobody can say why.

Count rows before you pick a grain. Here’s a case. We scoped a NetSuite integration for a mid-market pharma manufacturer, and the key design call came down to arithmetic. Built per unit, it would have burned roughly 1.35 million API calls a year against a licensed allowance of 130,000. Ten times over. Built per document, it used well under a quarter of the allowance. Same business, same data, and nobody had to argue about taste. A Power BI refresh is the same kind of math with a different meter: rows loaded, times refreshes a day, against a two-hour wall on shared capacity.

The last piece isn’t technical at all. Finance says revenue is what got invoiced. Operations says it’s what shipped. Sales says it’s what was booked. Three numbers, one label, and a dashboard that quietly picks a winner without telling anyone. Somebody has to own each measure, write the definition down in DAX and in plain English, and have the authority to say no when a VP asks for a fourth version. My usual line about NetSuite is that it isn’t the complicated part. The meeting where finance and ops agree on revenue is.

The Power BI Build Sheet for NetSuite Data

Six steps. Who decides each one. Which contract seat does the work. Seat prices are medians from the KORE1 Contract Rate Index 2026-Q4.

StepWhat it decidesWho owns itContract seat
ConnectorWhich of the three routes carries the data, and who answers when it failsIT lead, with the NetSuite admin approving accessBI developer, mid-level, median $95 an hour
Refresh slots and capacityHow often data lands (eight daily slots on shared capacity, 48 on Premium) and whether a refresh can finish inside the limitIT lead owns the capacity. Finance defines “fresh”Same BI developer
Data modelGrain, star schema, incremental window, measure definitionsOne named owner in finance or opsBI developer. Senior (median $122) for several subsidiaries or years of history
GatewayWhether Power BI reaches the source directly. If not, who runs and patches the gatewayIT or infrastructureBI developer configures it. IT operates it
LicenseWho can view and share the report. No tier named here, verify on Microsoft’s siteIT lead or procurementNone. This is a purchasing call
UpkeepNew measures, broken refreshes, changes at period endThe measure owner, plus a named backupPart-time BI analyst, median $95 (Southern California observed median $115, n=11)

Price the Power BI build. Send the bill rate quote page the role (BI developer or data analyst), the NetSuite modules and subsidiaries in scope, hours per week, start date, and how long you expect it to run. We’ll price it against these cells.

Who Does the Work: A Contract BI Developer for the Model, Then a Part-Time Seat to Keep It Alive?

Two seats, different shapes. The first builds. The second keeps what was built from rotting.

Scope the build on time and materials, around something you can inspect. A defined model with named tables, a stated grain, written measure definitions, a refresh schedule, and a handover document that says who owns what. Can’t list those? Then you’re not ready to start the clock. KORE1 bills the hours worked, so the plan is something you check against actuals every week, which beats finding out in month four that the estimate and the invoice stopped speaking to each other back in month one.

After handover comes the dull part, and it’s where most Power BI projects quietly die. Someone asks for a new measure. A refresh breaks the week the chart of accounts changes. A subsidiary gets added in March and nobody tells the model. None of it is big. All of it needs a person who knows the model, which is why a few hours a week of a part-time analyst beats a second full build. KORE1’s part-time BI analyst coverage exists for exactly that gap.

Devin Hornick, a partner at KORE1, describes why companies reach for contractors in the first place: “you can get them quick… flexible… to scale up, to scale down as needed.” Both seats follow that logic. The build ends. The upkeep seat shrinks, or stops, when nothing is changing.

SeatIndex cellBill rate, median (range)Every 100 hours3 months, full time
BI developer or data analyst, mid-levelModeled, United States national$95 ($82 to $111)$9,500$49,600
BI developer or data analyst, seniorModeled, United States national$122 ($107 to $132)$12,200$63,600
Data analyst or BI developer, all levelsKORE1 observed, 11 placements, primarily Southern California$115 ($69 to $116)$11,500$59,800

Source: KORE1 Contract Rate Index 2026-Q4, effective October 16, 2026. The two national cells are modeled from the BLS Occupational Employment and Wages release for May 2025, published May 15, 2026, plus a 24% employer burden and the bill bands KORE1 observes. The third cell is observed, W2 placements started 2023 to 2026. “Every 100 hours” is the median times 100, which is arithmetic and not an estimate of your project. The 3-month column assumes 40 hours a week. A part-time upkeep seat at 10 hours a week at the mid-level median runs about $950 a week. The methodology page explains modeled versus observed cells, and the data analyst and BI developer bill rates post has the full set.

Fine print, because I’d rather say it than have you find it. The index has no Power BI-only or NetSuite-only cell, so these are the nearest data analyst and BI developer cells. The observed cell rests on 11 placements and sits mostly in Southern California, which is why it reads higher than the national medians. A data point. Not a floor.

Project or headcount? KORE1’s data analyst and BI contracts run a median 135 days across 19 assignments, in a dataset that is 79% California. Roughly four and a half months. A model build that needs one contractor for two years isn’t a build. It’s a hiring decision you haven’t admitted to yet. And if the contractor turns out to be someone you’d keep, KORE1 contractors can convert to your payroll at no fee after 1,040 hours.

Half-built wooden footbridge over a dry creek bed with deck planks missing mid-span, standing in for a stalled Power BI build

What Breaks If the Power BI Build Stalls Halfway?

Devin Hornick’s content email at KORE1 puts a question to every technology project. “What technology initiatives are already funded that you can’t push into 2027?” A half-finished Power BI build is exactly that. The budget is approved, a sponsor has a name, and the executive team has already been told the numbers are coming.

He asks a second one, and it’s the better one. “What breaks if the company doesn’t spend the money or finish the project?” Here’s my list for a stalled Power BI build.

First thing to go: the exec team drifts back to exported spreadsheets. Somebody runs the saved search, pastes it into Excel, and adds a few columns from memory. Give it a month and that spreadsheet is the real report.

Then two versions of revenue are in circulation. The half-built model says one number, the spreadsheet says another, and in the meeting they get compared out loud. Trust in both takes a hit.

And the close deck gets rebuilt by hand. Every month. From scratch. By whoever has the patience, who is usually your best finance analyst, which is a rotten use of your best finance analyst.

None of that is dramatic. That’s the problem. A stalled build never fails on a date, it bleeds into the next quarter and then the one after, and the contractor you didn’t bring in turns out to be cheaper than any of those months.

Questions Finance and IT Ask Before the Build Starts

Do we have to turn on SuiteAnalytics Connect first?

Only if Connect is the route you pick. Oracle says that if your company enables the Connect Service, NetSuite offers ODBC, JDBC, and ADO.NET drivers for it. A third-party connector or a warehouse feed comes with its own setup, so ask each vendor what it needs from NetSuite.

Wait, does a warehouse have to come before any of this?

No. A warehouse is one of three routes, not a prerequisite. The choice between native reporting, a warehouse, and an outside BI tool is covered in the native, warehouse or outside BI tool decision, and this build starts after that call is made.

What does a contract BI developer cost for a build like this?

$82 to $111 an hour for a mid-level BI developer, median $95, about $49,600 for three months at 40 hours a week. Senior bills $107 to $132, median $122, about $63,600 (KORE1 Contract Rate Index 2026-Q4, modeled from BLS OEWS May 2025).

Can we keep the contractor once the model is live?

KORE1 contractors can convert to your payroll at no fee after 1,040 hours, which is about six months full time. If you don’t want to convert, a part-time upkeep seat covers new measures and broken refreshes without a second full build.

Is wanting Power BI an admission that NetSuite reporting failed?

Not by itself. The FAQ on NetSuite financial reporting answers it.

Before Anyone Opens Power BI Desktop

Write three sentences on one page. What “fresh” means for this dashboard. Which revenue number it shows, and who signed off on the definition. Whose name is on the refresh when it fails. Can’t write all three? The connector isn’t your problem yet.

Then hit me up on LinkedIn if the sorting-out is the part that stalls. If you already know the shape of the build, price the Power BI build and we’ll quote it against these cells. Prefer a person first? The contact page reaches a recruiter.

Data as of November 2026. The Microsoft Learn and Oracle Help Center pages were read on November 11, 2026. The KORE1 Contract Rate Index refreshes quarterly, and this page is refreshed with it.