Blog Post

IQ Community Blog
7 MIN READ

Unifying Data into Intelligence: A Hands‑On Walk Through Microsoft Fabric IQ

knaveen's avatar
knaveen
Icon for Microsoft Employee rankMicrosoft Employee
8 months ago

It’s easy to feel like you’re drowning in data these days. Whether you’re running a small shop or a global enterprise, data lakes, warehouses, streaming feeds, and business reports quickly become a tangled mess. I’ve spent the better part of my career wrestling with that mess, trying to coax insight from disparate systems while feeling like I was always missing the bigger picture. Fabric IQ shifts us from “data platforms” to intelligence platforms. That’s a bold claim. Over the last few days I’ve been playing with the preview, and this post is a candid account of what I learned, complete with warts, minor victories, and a working sample you can try yourself.

From data chaos to semantic intelligence

At its core, Microsoft Fabric IQ is a semantic intelligence layer that sits on top of your existing Fabric estate. Instead of being yet another database, it organizes the data you already store in OneLake (lakehouses, eventhouses, and Power BI semantic models) according to the language of your business. Fabric IQ introduces a governed knowledge graph, an ontology that defines business entities (customers, products, orders…) and the relationships between them. Once you define an ontology, Fabric IQ exposes those entities to analytics, AI agents, and applications with consistent semantics. The benefits go beyond tidy naming; ontologies provide:

  • Consistency across tools: a single definition of "customer" or "product" drives how Power BI, notebooks, and agents interpret data.

  • Faster onboarding: new dashboards or AI experiences don’t need to rediscover business meaning because concepts are declared once.

  • Governance and trust: clear semantics reduce duplication and semantic drift; constraints improve data quality.

  • Cross‑domain reasoning: graph links let you traverse relationships (for example, order → shipment → temperature sensor → breach) to explain outcomes.

  • AI readiness: ontologies provide structured grounding for copilots and agents, allowing them to respond using your enterprise language.

In other words, Fabric IQ is the missing semantic layer that humans and AI have long needed to truly understand business context. That’s the big idea; now let’s get our hands dirty.

 

Setting up Fabric IQ (preview)

This walkthrough uses the Lakeshore Retail sample from Microsoft’s tutorial. You’ll need a Microsoft Fabric workspace backed by capacity and a tenant where the Fabric IQ preview features are enabled. An administrator must enable several tenant settings — Ontology item, Graph (preview), Data agent item types, and certain Azure OpenAI permissions. Without these flags turned on, you’ll hit frustrating “access required” messages, so check with your Fabric admin up front.

Download the sample data:

Fabric supplies a GitHub repository with CSV files for the Lakeshore scenario. Grab the files DimStore.csv, DimProducts.csv, FactSales.csv, Freezer.csv and FreezerTelemetry.csv. The first four contain dimensional and fact tables for ice‑cream sales; the last holds time‑series telemetry for freezers.

Create a lakehouse and upload tables:

In your Fabric workspace, create a lakehouse named OntologyDataLH. Then upload the four static CSV files into the lakehouse and load each into a new delta table. Leave FreezerTelemetry.csv aside for now as it belongs to an eventhouse. The resulting lakehouse should list tables like dimstore, dimproducts, factsales and freezer.

 

Aside: Loading data via the web UI is straightforward, but I couldn’t resist doing it programmatically. In a Fabric notebook, you can use PySpark to load CSVs into delta tables like this:

 

from pyspark.sql import SparkSession

spark = SparkSession.builder.getOrCreate()

# path to your CSVs in the correct Files location for lakehouse
files = {
    'DimStore': 'Files/DimStore.csv',
    'DimProducts': 'Files/DimProducts.csv',
    'FactSales': 'Files/FactSales.csv',
    'Freezer': 'Files/Freezer.csv'
}

for table_name, path in files.items():
    df = spark.read.option('header', 'true').csv(path)
    # Overwrite existing tables with the same name
    (df
     .write
     .mode('overwrite')
     .format('delta')
     .saveAsTable(table_name))

 Loading CSV files to Lakehouse using Notebook

This snippet uploads each CSV into a Delta table so you can query it via SQL or load it into Power BI. It isn’t strictly required for the tutorial, but as a data engineer I find this control comforting.

Build a semantic model

From the lakehouse ribbon, select New semantic model and pick a direct‑lake semantic model named RetailSalesModel. Choose the tables dimproducts, dimstore and factsales (skip freezer for now). Once the model is created, go into editing mode and define relationships:

 

From TableTo TableCardinalityCross‑filterActive?
factsales.StoreIddimstore.StoreIdMany-To-One (*:1)SingleYes
factsales.ProductIddimproducts.ProductIdMany-To-One (*:1)SingleYes

 

These relationships mirror how sales records tie back to stores and products. Save and publish the semantic model and it will become the backbone of our ontology.

 

Semantic Model

 

These relationships mirror how sales records tie back to stores and products. Save and publish the semantic model — it will become the backbone of our ontology.

Set up an eventhouse for streaming data:

Create an eventhouse named TelemetryDataEH. Inside the eventhouse, a default KQL database appears. Open it and create a table FreezerTelemetry using the FreezerTelemetry.csv file. Eventhouse uses KQL (Kusto Query Language) to ingest and query streaming data, which is a different beast than the lakehouse but integrates nicely with Fabric IQ.

At this point you’ve assembled the ingredients: static tables, a semantic model, and a stream of telemetry data. Now comes the fun part, which is weaving them into an ontology.

Load KQL Table with FreezerTelemetry.csv

 

Creating your first ontology

An ontology is Fabric IQ’s way of formalizing business meaning. You can generate an ontology from an existing semantic model or build one directly from lakehouse tables. The Lakeshore tutorial starts with the former.

As we are generating Ontology from Semantic Model, make sure to have an admin enable these in the Fabric Admin portal → Tenant settings

  1. Enable Ontology item (preview) (this is the big one — without it, creation fails)

  2. User can create Graph (preview) (often required for the ontology experience to open/use properly).

Generate the ontology

  1. Open the RetailSalesModel semantic model and select Generate Ontology. Provide a name such as RetailSalesOntology and choose your workspace.

  2. Fabric creates an Ontology item containing entity types that correspond to the selected tables: factsales, dimstore and dimproducts.

Verify and rename entity types

The default entity type names are not very friendly. Select each entity type and rename:

  • factsales → SaleEvent

  • dimstore → Store

  • dimproducts → Products

Renaming happens in the Entity type configuration pane. While you’re here, add a key for SaleEvent by selecting SaleId as the key property.

 

Ontology Creation and Configuration

Verify bindings

Bindings link entity types to their underlying tables. Check that SaleEvent is bound to factsales, Store to dimstore and Products to dimproducts. These bindings ensure that each row in your lakehouse tables becomes an instance of the corresponding entity.

Configure relationships

Ontology relationships describe how entities relate. In our case, Store has SaleEvent and Products soldIn SaleEvent. For each relationship specify the source entity, target entity, and source data table (factsales). I have also the Relation Type Name to soldIn and has to make it meaningful.

  1. For Store has SaleEvent, set the source column to StoreId and the target column to SaleId.

  2. For Products soldIn SaleEvent, set the source column to ProductId and the target column to SaleId.

Your ontology now models three business concepts and their relationships. This is the semantic backbone on which more context can be layered.

A quick visual of the ontology

To get a feel for how the pieces connect, imagine the ontology as a graph. The image below depicts Store, Products, SaleEvent and Freezer as nodes connected by has, soldIn and operates relationships a handy mental model for what we’re building.

 

Enriching the ontology with additional context

The real magic happens when you enrich the ontology with more entities and live data. Let’s add a Freezer entity that captures both the specifications of each freezer (static data) and its temperature/humidity over time (time‑series data).

Add the Freezer entity and properties

 

Bind static data

In the Freezer entity’s Bindings tab, select Add data to entity type and connect to the OntologyDataLH lakehouse and the freezer table. 

Bind time‑series data

Next, bind the telemetry data. Still in the Bindings tab, select Add data again, choose the TelemetryDataEH eventhouse and the FreezerTelemetry table, and set the Binding type to Timeseries. Pick timestamp as the time column, ensure freezerId maps to FreezerId. 

Freezer Entity with 2 Bindings

Relate Freezer to Store

Freezers live in stores, so create a relationship type called operates. Use the freezer table as the source data, with StoreId as the source column and FreezerId as the target. This ties each freezer to the store that operates it.

At this stage you have a rich ontology that captures sales, product catalogs, store locations and freezer telemetry which is all now  semantically connected. Try not to smile. I did.

Exploring and previewing your ontology

Fabric IQ provides a preview experience that lets you inspect entity instances and visualize relationships. From the Ontology item, select Entity type overview for an entity such as SaleEvent or Freezer. Switch to the Relationship graph tab to view how entities connect.

Natural language exploration via data agents

The cherry on top is the Fabric data agent, which allows you to ask questions in everyday language. Create a new data agent item and add RetailSalesOntology as its data source.

  1. Ask questions in the agent’s chat. “For each store, show any freezers operated by that store that ever had humidity lower than 46 percent.” & “What is the top product by revenue across all stores?”

The agent responds with structured answers grounded in your ontology. Instead of referencing raw tables, it talks about Stores, Products and Freezers andthat’s the semantic layer in action.

Reflections and closing thoughts

Is Fabric IQ a game changer? Yes, because embedding ontologies into a unified analytics platform so that the same semantics serve reports, notebooks and AI agents. If you’re already using Microsoft Fabric, spending a few hours with Fabric IQ is worthwhile. You’ll gain a feel for how semantic intelligence could reshape your analytics practice and you may even enjoy watching your data take on a life of its own.

Updated 8 months ago
Version 1.0
No CommentsBe the first to comment