microsoft / microsoft/rayfin

Support existing Lakehouse/Warehouse as a data source for the GraphQL data API (no DAX, no copy)

Open
#19 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement planned triaged
Dominant language
No language data
Stars
610
Forks
62
Avg merge
1d 23h
Merged PRs (30d)
3

Description

Problem statement

I have started experimenting with building a Fabric App, and need to read existing data from our Lakehouse/Warehouse. Today the only built-in path appears to be connecting a semantic model and querying it with DAX (and the docs frame data integration as "starting with Semantic Models."). Are there plans to add other first-party ways to bring existing OneLake/Warehouse/Lakehouse data into a Fabric App without copying it into the app's built-in database (e.g. a native connector to the SQL analytics endpoint or API for GraphQL)?

Proposed solution

Allow declaring an existing Lakehouse/Warehouse SQL analytics endpoint as a
data source in rayfin.yml, so the data service generates its GraphQL (DAB)
API over those existing tables instead of only the app-owned schema,
queryable via RayfinClient with the app's existing Fabric SSO. No copying
into the built-in DB, no semantic model/DAX.

Also expose stored procedures (and views) on the source as GraphQL
operations, so server-side SQL (aggregations etc.) is callable by name with
arguments.

In short: the Supabase (Lovable) model applied to existing Fabric data, auto-generated
API over an existing SQL database (PostgREST equivalent) plus stored procedures
as the RPC equivalent (supabase.rpc()), with the app's auth + RLS.

Alternatives considered
  • Semantic model + DAX (the current built-in path) — prefer SQL; DAX also
    has weaker tooling and far less training data, so AI-assisted/agentic
    development performs worse.
  • Standalone "API for GraphQL" item alongside the app — works, but it's a
    separate item with no built-in integration: the embedded app only gets a
    Rayfin OpaqueSession, not an Entra token for the separate endpoint, so
    cross-item auth has to be solved by hand.
  • Copy/sync existing data into the app's built-in DB (ETL) — duplicates
    governed Gold data, needs a sync pipeline, and goes stale.
  • Custom function querying the Lakehouse SQL endpoint — works, but it's
    bespoke per-app code to build and maintain.
Additional context

I built a fully fledged analytics tool in lovable using their native supabase integration and would like to do something similar in fabric apps. I dont like having to rely on DAX since I feel much more comfortable with SQL, plus the fact that agentic development with DAX is harder due to limited training data which means poorer performance from AI agents.

I think this would be a huge value add to fabric apps as a concept, especially for greenfield projects (like mine) where business logic is baked into RPCs and edge functions rather than semantic models.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Begin with the proposed rayfin.yml data-source declaration and the RayfinClient path, then review how the SQL analytics endpoint could support the GraphQL (DAB) API. Done means existing Lakehouse/Warehouse tables, views, and stored procedures are exposed without copying data, while Fabric SSO and app authentication with RLS remain intact.

Written by the indexing model from the issue text.

Assessment

Tech stack
graphql, sql
Domain
api, authentication, backend-api-design, database
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.