clement13.net
Original photo: Lac d’un bleu turquoise au pied d’un massif rocheux de montagne.
Description
Lac d’un bleu turquoise au pied d’un massif rocheux de montagne.
Source
Riddles42 · original page
Licence
CC0 Public domain
Original photo, unretouched. The background is a version of it stylised by the site.

OneLake + SaaS Mobile Apps: Overview

You will be able to define the scope: Power BI reporting whose analytical source is Microsoft Fabric / OneLake, fed by SaaS mobile applications (field SFA/CRM, Dynamics 365…

Guide≈ 10 min readCheckedCheck doneFacts, figures and references were checked against the sources cited in the page.Written with AI assistance; sources are cited at the bottom of the page. An error? Report it via clement13.net.Reading
In brief
  • You will be able to define the scope: Power BI reporting whose analytical source is Microsoft Fabric / OneLake, fed by SaaS mobile applications (field SFA/CRM, Dynamics 365, Salesforce, Power Apps, data collection apps).
  • You will be able to state the promise of this architecture and its trade-offs (capacity, API quotas, latency, drifting schemas).
  • You will be able to say when it's the right choice — and when a simple SQL datamart or Import is enough — with a decision grid and /5 ratings.
  • You will have the map of the 3 other files in the folder: architecture, difficulties and pitfalls, AI.
  • Volatile facts verified in October 2026; they are marked “(as of 2026-10).”
On this page

Level: 🟢→🔴

1. Interpreting the topic#

The topic “OneLake + SaaS mobile apps” is ambiguous; here is the interpretation used for the entire folder, so that all four files discuss the same thing.

  • OneLake refers to the single logical storage layer of Microsoft Fabric: a “OneDrive for data” per tenant, storing tables in open Delta/Parquet format that all Fabric engines (Spark, SQL, KQL, Power BI) read without copying.
  • SaaS mobile apps refers to sales force / CRM / field data collection applications run as SaaS: a mobile app (often offline) records visits, orders, readings, photos, signatures; an editor-managed back end syncs them to a cloud that you do not control (Dynamics 365, Salesforce, a vertical SFA solution, a Power App, a forms tool).
  • Reporting is Power BI (semantic model + reports), potentially multilingual, reading from OneLake rather than from the app itself.

In other words: “How do I turn data from a SaaS mobile app I don't control into reliable, fresh, and governed reporting, using OneLake?”

💡 Expert tip

The question is not “is OneLake good?” but “where is the responsibility boundary?” With SaaS, the vendor owns the schema, sync frequency, and quotas; you own the analytical copy. OneLake is where that copy lives.

For the “managed relational database as source” variant (Azure SQL, SQL Managed Instance, SQL database in Fabric), see the twin folder: SQL Server in SaaS — Overview, and their side-by-side analysis in the comparison.


2. Fundamentals: what OneLake is#

🟢 Novice.

OneLake is the single data lake provided with every Fabric tenant. Four ideas are enough to get started:

  1. A single copy. Data is stored once, in Delta Lake format (Parquet files + a transaction log). The SQL engine, Spark, and Power BI read the same files.
  2. Items. Data is organized into Fabric items, themselves inside workspaces: a lakehouse (Delta tables + files, mainly handled by Spark), a warehouse (transactional T-SQL warehouse), an eventhouse (time series / events).
  3. Shortcuts: a reference to data located elsewhere (another lakehouse, ADLS Gen2, Amazon S3, Dataverse…), accessed as if local, without copying it.
  4. Mirroring: continuous replication, managed by Fabric, from an operational database (Azure SQL, Cosmos DB, Snowflake, PostgreSQL, Oracle… (as of 2026-10)) to Delta tables in OneLake.

Power BI connects in three ways: Import (copy into the model), DirectQuery (queries to the source), and Direct Lake (the VertiPaq engine loads Delta columns directly into memory; refresh = simple metadata “reframing”). Details in the architecture file.

🧪 Example

A Visit table with 40 million rows, updated every 15 minutes. In Import, each refresh reloads or repartitions; in Direct Lake, new Parquet files are written to the lakehouse, and the model switches to the new table version in seconds.


3. Fundamentals: what a field SaaS mobile app is#

🟢 Novice.

A field SFA app has four characteristics that drive all reporting:

Characteristic Consequence for analytics
Offline entry: sales reps log visits without network access, sync happens later Two timestamps (event vs receipt); data that “arrives late”; after-the-fact corrections
SaaS back end: schema, API, and pace decided by the vendor API quotas, fields added/renamed without notice, no direct database access
Human-entered data: duplicates, typos, approximate geolocation, photos Quality must be handled in the pipeline, not in the report
Personal data: contact names, agent GPS location GDPR, minimization, retention periods, role-based security

A weak but decisive signal: perceived freshness depends more on mobile sync (sometimes daily!) than on your pipeline. A “real-time” dashboard fed by tablets that sync in the evening is not real-time.


4. The architecture promise#

🟡 Practitioner.

Combining OneLake and a mobile SaaS app promises:

  • An analytical copy you control: historized, queryable in SQL, Spark, or DAX, independent from app query quotas.
  • A single platform for ingestion, transformation, storage, semantic model, and reporting: fewer links to monitor, with shared governance and security (OneLake security, GA since spring 2026 (as of 2026-10)).
  • Volume at controlled cost: Direct Lake lets you query volumes you would not import, with performance close to Import.
  • Adjustable freshness: from daily batch to near real-time (eventstream, mirroring, webhooks) depending on business value.
  • A foundation for AI: Copilot, data agents, and notebooks read the same governed data (AI file).

What the promise does not cover: data entry quality, metric definitions (see Semantic Model), SaaS schema stability, adoption by sales reps.

⚠️ Pitfall

Symptom: “we have OneLake, so we have a data platform.” Cause: confusion between storage and product. Fix: OneLake does not replace the data contract with the SaaS vendor, modeling, or business acceptance testing (Data Sources and Contracts).


5. SFA and field business use cases#

🟡 Practitioner.

Use case Typical granularity Useful freshness Watch point
Tracking visit coverage and consistency visit daily sync dates vs visit date
In-store audits (prices, facings, out-of-stock, shelf space) audit line daily to weekly volume, photos, changing product master data
Field order capture order line intra-day idempotency, cancellations/deletions
Sales performance vs targets aggregate daily period calendar, historized hierarchy assignment
Geolocation and routes GPS point near real-time sometimes GDPR, precision, data volume
Field alerts (out-of-stock, dispute) event minutes eventstream, thresholds, noise
Control / audit forms (Power Apps) form daily evolving form schema
🧪 Example

Common thread of this folder: a datamart fed by a field SFA app, with multilingual reports. Moving to OneLake: nightly extraction from SFA to datamart is replaced by Delta writes (bronze) then refinement (silver, gold) in a lakehouse; reports read a Direct Lake model on gold. The main gain is not speed: it's the full history of data states (useful for deletions and late corrections).


6. In practice: what a typical project looks like#

🟡 Practitioner.

Offline mobile appSaaS back endFabric ingestionBronze: rawSilver: cleaned, deduplicatedGold: business star schemaSemantic modelPower BI reportssyncREST API / OData /export / webhookDirect Lake
Hover over or tap an element to read its details.

The steps of a reasonable project:

  1. Frame the value: 3 to 5 business questions, not “replicate everything.”
  2. Inventory the source: objects, volumes, available APIs, quotas, deletion mode, timestamps, documented schema or not.
  3. Choose the ingestion mode (see the matrix in the architecture file).
  4. Set up medallion layers and quality rules.
  5. Model as a star schema (Kimball): visit/order/audit facts, customer, product, date, and field user dimensions.
  6. Secure: RLS (sales hierarchy), OneLake security, workspace roles.
  7. Industrialize: Git, deployment pipelines, capacity monitoring (CI/CD for data: foundations, datamarts, pipelines, and reports).
  8. Acceptance test against known business numbers, then release.

7. When it's the right choice, and when it isn't#

🟡 Practitioner.

It's the right choice if…#

  • several sources (SFA, ERP, master data, panel files) must be combined;
  • volume or history exceeds what a comfortable Import can handle, or short refresh times are needed;
  • you want Spark/Python (advanced cleansing, ML) alongside SQL and DAX;
  • the organization is already on Microsoft 365/Entra/Power BI and ready to manage capacity;
  • you plan for multiple reports built on the same foundation (one model, multiple uses);
  • AI (data agents, Copilot) is part of the roadmap.

It's not the right choice if…#

  • a single source with moderate volume feeds 2 reports: direct Import from the SFA connector, or an existing SQL datamart, is simpler and cheaper;
  • the team has no skills in Spark/Delta and no upskilling budget: hidden complexity wins out;
  • required latency is on the order of seconds and depends on a SaaS that only offers batch;
  • the sovereignty or regional constraint does not fit the available Fabric tenant;
  • capacity cannot be sized or monitored (no owner).
✅ Good practice

Start with a two-week POC on one source and one report, measuring capacity consumption (CU) and actual freshness. Direct Lake documentation itself recommends a prototype before adoption (as of 2026-10).

Situation Direction Justification
1 SaaS, 30 MB/day, 5 users Direct Import No lake needed
1 SaaS + ERP + panel, 5 GB/day, 300 users OneLake, medallion, Direct Lake Cross-source combination, volume, governance
Existing SQL datamart, SQL team Keep the datamart; optional mirroring to OneLake Build on what exists, progressive migration (SQL Server in SaaS — Overview)
Field alerting in minutes Eventstream + Eventhouse Latency

8. Expert: structuring trade-offs#

🔴 Expert.

1. Copy or not copy. Shortcuts and mirroring avoid physical copying but not dependency: a shortcut to a SaaS exposing files (e.g., Dataverse via Link to Fabric) gives you the vendor's structure, which changes. The medallion approach reintroduces intentional copying to decouple. Rule: never connect a report to a SaaS's raw structure.

2. Shared or dedicated capacity. Fabric cost is a capacity (CU) cost, not a query cost. Shared capacity across nightly ETL, interactive Spark, Copilot, and reports eventually creates pressure: the “noisy neighbor” is internal (difficulties).

3. Timestamps and truth. In an offline SFA, business truth is the event date, technical truth the receipt date. Facts must carry both; “today” aggregates are calculated on the event date, freshness checks on receipt date.

4. Deletions. Most SaaS APIs do not expose deletions cleanly. Without a strategy (soft delete, deletion stream, periodic reconciliation), the lake accumulates ghosts. This is pitfall #1 in these projects.

5. Lock-in. Delta/Parquet are open, so data is portable; however, the Direct Lake semantic model, dataflows gen2, OneLake security, and pipelines are Fabric-specific. Assess your dependency level in the comparison.

6. Governance level. The more self-service there is, the more contracts, certification, and lineage are needed (governance and self-service).

🤖 AI

At this stage, AI is used to explore (Copilot to describe a schema, generate notebook or DAX skeletons) but does not replace cost trade-off decisions or business rule definition. See AI.


9. Summary ratings#

Expert assessments, contextual (see RATING). Context: BI team of 3 to 6 people, one field SaaS SFA + 2 to 3 complementary sources, 100 to 500 report users, existing Microsoft 365 tenant.

Criterion Rating Justification
Freshness 4/5 From near real time to daily, but capped by mobile sync and the SaaS API
Performance 4/5 Direct Lake close to Import if Delta tables are well optimized
Cost 3/5 Predictable flat-rate capacity, but entry floor and hidden costs
Complexity 2/5 Many components (ingestion, medallion, semantics, capacity)
Governance / security 4/5 OneLake security, lineage, Purview; requires discipline
Scalability 5/5 Designed for large volumes; progressive SKU scaling
Required skills 2/5 Spark/Delta, T-SQL, DAX, capacity administration
Technology maturity 3/5 Rapid evolution, many features still in preview (as of 2026-10)
Lock-in risk 3/5 Open format, but proprietary orchestration and semantics
⚠️ Pitfall

An average rating does not decide anything: a project with low Spark skills may see “complexity” and “skills” outweigh everything else. Weight based on your context.


10. See also#

✻ Written by Claude Sonnet 5.5