<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Jose Prabhu Michael Singarayan</title>
    <description>The latest articles on DEV Community by Jose Prabhu Michael Singarayan (@josemichael).</description>
    <link>https://dev.to/josemichael</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3894969%2F28b770d9-02f0-4fa1-84fa-825f7a4ef495.png</url>
      <title>DEV Community: Jose Prabhu Michael Singarayan</title>
      <link>https://dev.to/josemichael</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/josemichael"/>
    <language>en</language>
    <item>
      <title>Microsoft Fabric Data Agent: Ask Your Data Questions in Plain English</title>
      <dc:creator>Jose Prabhu Michael Singarayan</dc:creator>
      <pubDate>Thu, 07 May 2026 19:52:29 +0000</pubDate>
      <link>https://dev.to/josemichael/microsoft-fabric-data-agent-ask-your-data-questions-in-plain-english-4164</link>
      <guid>https://dev.to/josemichael/microsoft-fabric-data-agent-ask-your-data-questions-in-plain-english-4164</guid>
      <description>&lt;p&gt;If you've ever watched a business analyst wait three days for a data team to answer a simple question like "What were our top 10 products by revenue last quarter?" — you know the pain. That lag between curiosity and insight is where decisions go to die.&lt;br&gt;
Microsoft's Fabric Data Agent (currently in preview) is built to close that gap. It lets anyone in your organization ask questions about enterprise data in plain English and get structured, accurate answers — no SQL, no DAX, no KQL required.&lt;br&gt;
Let's dig into what it actually is, how it works under the hood, and what you need to know to get started.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy4zi01l5dcomck4mz4tq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy4zi01l5dcomck4mz4tq.jpg" alt=" " width="800" height="542"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Is a Fabric Data Agent?&lt;/strong&gt;&lt;br&gt;
A Fabric Data Agent is a conversational Q&amp;amp;A system built on top of your organization's data in Microsoft Fabric's OneLake. It uses large language models (LLMs) — specifically Azure OpenAI's Assistant APIs — to interpret natural language questions and translate them into queries against your actual data sources.&lt;br&gt;
Think of it as a smart intermediary that:&lt;/p&gt;

&lt;p&gt;Understands your question&lt;br&gt;
Figures out which data source best answers it&lt;br&gt;
Generates and executes the right query&lt;br&gt;
Returns a human-readable answer&lt;/p&gt;

&lt;p&gt;The agent can connect to lakehouses, warehouses, Power BI semantic models, KQL databases, ontologies, and Microsoft Graph — all within the governed Fabric ecosystem.&lt;br&gt;
Within broader agentic architectures on Microsoft Fabric, data agents serve as the conversational analytics component, connecting to governed data through multiple data source types in multi-agent solutions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How It Works:&lt;/strong&gt; Under the Hood&lt;br&gt;
The magic happens in a well-orchestrated pipeline. Here's the flow:&lt;br&gt;
&lt;strong&gt;1. Question Parsing &amp;amp; Validation&lt;/strong&gt;&lt;br&gt;
When a user submits a question, the agent applies Azure OpenAI Assistant APIs to process it. Before anything else, it checks that the question complies with:&lt;/p&gt;

&lt;p&gt;Security protocols&lt;br&gt;
Responsible AI (RAI) policies&lt;br&gt;
The requesting user's permissions&lt;/p&gt;

&lt;p&gt;The agent operates with read-only access to all data sources — it cannot write, modify, or delete data.&lt;br&gt;
&lt;strong&gt;2. Data Source Identification&lt;/strong&gt;&lt;br&gt;
The agent uses your credentials to access the schema of available data sources (not the data itself). It evaluates your question against all connected sources and determines which one is best positioned to answer it. You can even add custom instructions to guide this routing — for example: "Direct financial metric questions to the Power BI semantic model; route raw data exploration to the lakehouse."&lt;br&gt;
&lt;strong&gt;3. Query Generation&lt;/strong&gt;&lt;br&gt;
Once the right data source is identified, the agent generates the appropriate query using one of these translation tools:&lt;br&gt;
Data SourceQuery TypeLakehouse / WarehouseNL2SQL (Natural Language → SQL)Power BI Semantic ModelsNL2DAX (Natural Language → DAX)KQL DatabasesNL2KQL (Natural Language → KQL)Microsoft GraphGraph API queries&lt;br&gt;
&lt;strong&gt;4. Query Validation &amp;amp; Execution&lt;/strong&gt;&lt;br&gt;
The generated query is validated for correctness and security compliance, then executed against the data source. Results are formatted into a human-readable response — tables, summaries, key insights — and returned to the user.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuring a Fabric Data Agent&lt;/strong&gt;&lt;br&gt;
Setting up an agent is described as being similar to building a Power BI report: you design and refine it, then publish and share it. Here's what configuration involves:&lt;br&gt;
Select Your Data Sources&lt;br&gt;
An agent supports up to five data sources in any combination — lakehouses, warehouses, KQL databases, Power BI semantic models, ontologies, or Microsoft Graph. You could have five Power BI semantic models, or a mix of two semantic models, a lakehouse, and a KQL database.&lt;br&gt;
Choose Relevant Tables&lt;br&gt;
After adding a data source, you define which specific tables the agent can access. For lakehouses, this means lakehouse tables (not raw files). If your data lives in CSV or JSON files, you'll need to ingest it into tables first to make it available to the agent.&lt;br&gt;
Add Context with Instructions &amp;amp; Example Queries&lt;br&gt;
This is where you fine-tune the agent for your organization:&lt;br&gt;
Data agent instructions — Tell the agent how to behave. Define which data source to use for which type of question. Clarify organizational terminology. Set custom rules.&lt;br&gt;
Example query pairs — Provide sample question-to-query mappings so the agent learns how to handle common queries in your domain. (Note: example query pairs aren't yet supported for Power BI semantic model sources.)&lt;/p&gt;

&lt;p&gt;Security &amp;amp; Governance: Built-In, Not Bolted On&lt;br&gt;
One of the more impressive aspects of Fabric Data Agent is how deeply governance is integrated:&lt;/p&gt;

&lt;p&gt;Least-privilege access: The agent uses the requesting user's credentials, so it can only surface data that person is already authorized to see.&lt;br&gt;
Microsoft Purview integration: DLP policies, access restriction policies, Insider Risk Management, and audit/eDiscovery all apply to agent interactions.&lt;br&gt;
Guardrails on scope: Queries are constrained to configured data sources — the agent can't go rogue and query things outside its defined scope.&lt;br&gt;
Optional Azure AI Content Safety: You can add an extra layer of content risk controls to filter harmful or out-of-policy responses.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beyond the Chat Window:&lt;/strong&gt; Copilot Studio Integration&lt;br&gt;
Fabric Data Agents aren't limited to the Fabric portal. You can consume a Fabric data agent in Copilot Studio, embedding your data agent into custom Microsoft 365 Copilot experiences, Teams bots, or other applications. This opens the door to deploying data conversations wherever your users already work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why This Matters&lt;/strong&gt;&lt;br&gt;
The Fabric Data Agent addresses a real organizational problem: data insight accessibility. Most enterprise data is technically available but practically inaccessible to the majority of people who need it, because it requires technical skills to query.&lt;br&gt;
By enabling plain-English conversations with governed data, the agent:&lt;/p&gt;

&lt;p&gt;Lowers the barrier for non-technical stakeholders&lt;br&gt;
Reduces the bottleneck on data teams for ad-hoc queries&lt;br&gt;
Fosters a culture of data-driven decision-making&lt;br&gt;
Keeps everything within your existing governance and security boundaries&lt;/p&gt;

&lt;p&gt;This isn't a chatbot on top of a CSV. It's a governed, multi-source, enterprise-grade conversational analytics layer built into the same platform where your data already lives.&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>agents</category>
      <category>fabric</category>
      <category>ai</category>
    </item>
    <item>
      <title>Modernizing Data Movement for the AI-Ready Enterprises</title>
      <dc:creator>Jose Prabhu Michael Singarayan</dc:creator>
      <pubDate>Thu, 23 Apr 2026 22:46:13 +0000</pubDate>
      <link>https://dev.to/josemichael/modernizing-data-movement-for-the-ai-ready-enterprises-3odj</link>
      <guid>https://dev.to/josemichael/modernizing-data-movement-for-the-ai-ready-enterprises-3odj</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No matter what type of Artificial Intelligence workload your business implements, it requires high-quality data sources to operate effectively. From recommendation engines to conversational AI assistants, each AI application needs a robust data foundation that ensures timely delivery of the information and its integrity.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4haroal0uwc94ueqekt8.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4haroal0uwc94ueqekt8.jpg" alt=" " width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Despite this requirement, many organizations stick to legacy batch ETL pipelines built mainly for static reporting needs. Though such a pipeline could be helpful when it comes to developing a company's traditional reporting strategy, it is far from being enough for building AI solutions. That is why modernizing data movement should be among your top priorities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why Traditional ETL Fails for AI Workloads&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwkz7qd89s4xwyms5t7cn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwkz7qd89s4xwyms5t7cn.png" alt=" " width="800" height="445"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Traditional ETL consists of three basic steps – extracting, transforming, and loading data. Though this process worked fine for classic dashboards, nowadays, it fails in several crucial aspects due to the nature of AI and machine learning systems they often rely on near real-time data streams&lt;/p&gt;

&lt;p&gt;AI applications have to integrate different types of information – streaming data and historical data,large and diverse datasets require scalable processing capabilities upstream changes should not stop pipelines from operating effectively.&lt;/p&gt;

&lt;p&gt;If your pipeline is inefficient, you can expect poor accuracy of your ML models or late delivery of insights generated by the system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Modern Data Movement Requires&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Compared to their predecessors, modern data pipelines are much more scalable and flexible because they can accommodate all types of data regardless of its structure, size, or velocity. In addition to supporting traditional batch processing, they allow continuous and event-driven streaming, which is essential in developing AI-driven solutions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Characteristics of a modern data pipeline include the following:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;ELT over ETL so raw data can land quickly before transformation  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;streaming ingestion for time-sensitive workloads  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;event-driven design to trigger processing as changes happen  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;lakehouse storage for unified structured and semi-structured data  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;schema evolution to handle changing source systems  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;governance and lineage for trust and compliance  &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Reference Architecture of an AI-Ready Data Pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9j8hely8kuvyupubya53.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9j8hely8kuvyupubya53.png" alt=" " width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we discussed above, a typical modern data architecture follows a hierarchical structure close to that used for lakehouses. Let us review each layer below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources:&lt;/strong&gt; operational databases, SaaS solutions, RESTful APIs, IOT sensors, log files, external datasets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ingestion:&lt;/strong&gt; batch and streaming data intake with Apache Kafka or Azure Event Hubs, cloud data integration services;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Processing:&lt;/strong&gt; distributed processing engines like Spark and PySpark;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Storage:&lt;/strong&gt; cloud lakehouse platform like Delta Lake and Microsoft Fabric Lakehouse;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consumption:&lt;/strong&gt; Power BI dashboards, machine learning models, feature stores, notebooks, AI-driven applications.&lt;/p&gt;

&lt;p&gt;With this architecture in place, you will be able to use your unified data foundation for dashboards and machine learning as well. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example of Coding Schema Evolution in Delta Lake&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As we mentioned previously, schema evolution is key to handling changing sources of data properly. However, if the schema enforcement does not work correctly, a pipeline is at risk of breaking down.&lt;/p&gt;

&lt;p&gt;Delta Lake technology allows managing evolving schemas easily.&lt;/p&gt;

&lt;p&gt;from pyspark.sql import SparkSession&lt;/p&gt;

&lt;p&gt;spark = SparkSession.builder.appName("SchemaEvolutionExample").getOrCreate()&lt;/p&gt;

&lt;p&gt;df = spark.read.json("/data/incoming/retail_events")&lt;/p&gt;

&lt;p&gt;df.write.format("delta") \&lt;/p&gt;

&lt;p&gt;.option("mergeSchema", "true") \&lt;/p&gt;

&lt;p&gt;.mode("append") \&lt;/p&gt;

&lt;p&gt;.save("/data/lakehouse/retail_events")&lt;/p&gt;

&lt;p&gt;As you see, this code allows adding the columns received from external data sources to your Delta table seamlessly. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example of Real-Time Data Pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The example of the previous section is pretty straightforward. In contrast, a small example demonstrating the difference between traditional and modern data pipelines could be a good choice here.&lt;/p&gt;

&lt;p&gt;from pyspark.sql import SparkSession&lt;/p&gt;

&lt;p&gt;spark = SparkSession.builder.appName("RetailStreamingPipeline").getOrCreate()&lt;/p&gt;

&lt;p&gt;stream_df = spark.readStream \&lt;/p&gt;

&lt;p&gt;.format("json") \&lt;/p&gt;

&lt;p&gt;.schema("order_id STRING, product_id STRING, quantity INT, event_time TIMESTAMP") \&lt;/p&gt;

&lt;p&gt;.load("/data/stream/orders")&lt;/p&gt;

&lt;p&gt;aggregated_df = stream_df.groupBy("product_id").sum("quantity")&lt;/p&gt;

&lt;p&gt;query = aggregated_df.writeStream \&lt;/p&gt;

&lt;p&gt;.format("delta") \&lt;/p&gt;

&lt;p&gt;.outputMode("complete") \&lt;/p&gt;

&lt;p&gt;.option("checkpointLocation", "/checkpoints/orders") \&lt;/p&gt;

&lt;p&gt;.start("/data/lakehouse/product_sales")&lt;/p&gt;

&lt;p&gt;query.awaitTermination()&lt;/p&gt;

&lt;p&gt;The code above demonstrates the operation of a streaming data pipeline that aggregates sales transactions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example of Data Quality Verification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Adding some code snippet illustrating data quality validation would enhance your discussion.&lt;/p&gt;

&lt;p&gt;from pyspark.sql.functions import col&lt;/p&gt;

&lt;p&gt;validated_df = df.filter(&lt;/p&gt;

&lt;p&gt;col("customer_id").isNotNull() &amp;amp;&lt;/p&gt;

&lt;p&gt;col("transaction_amount").isNotNull() &amp;amp;&lt;/p&gt;

&lt;p&gt;(col("transaction_amount") &amp;gt;= 0)&lt;/p&gt;

&lt;p&gt;)&lt;/p&gt;

&lt;p&gt;As you understand, this piece of code allows validating the quality of incoming data and filtering out untrustworthy data sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example of Real-Time Retail Pipeline&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzjx272y3cs4hc7d7jiz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvzjx272y3cs4hc7d7jiz.png" alt=" " width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let us consider a retail enterprise implementing dashboards and AI-based demand forecasting in parallel. The company receives sales transactions, e-commerce data, customer engagement metrics, etc., from different sources. &lt;/p&gt;

&lt;p&gt;In the traditional reporting environment, all data could be loaded into the database daily. For AI tasks like demand forecast or product recommendations, such a latency would be unacceptable.&lt;/p&gt;

&lt;p&gt;A retail pipeline capable of ingesting sales transactions, merging them with historical inventory and customer data, and then delivering information to various destinations looks as follows:&lt;/p&gt;

&lt;p&gt;Power BI dashboards for sales monitoring  &lt;/p&gt;

&lt;p&gt;machine learning models for demand forecasting  &lt;/p&gt;

&lt;p&gt;recommendation systems for personalization  &lt;/p&gt;

&lt;p&gt;alerting systems for anomaly detection  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Governance, Security, and Control of AI Pipelines&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For any data pipeline to work effectively, especially those used for building AI applications, it should comply with strict governance regulations and security controls.&lt;/p&gt;

&lt;p&gt;Here is a list of important capabilities that you should implement in your data pipelines:&lt;/p&gt;

&lt;p&gt;data lineage to trace data from source to model or dashboard  &lt;/p&gt;

&lt;p&gt;role-based access control to secure sensitive datasets  &lt;/p&gt;

&lt;p&gt;audit logging to monitor pipeline activity and usage  &lt;/p&gt;

&lt;p&gt;schema governance to manage changes safely  &lt;/p&gt;

&lt;p&gt;API security for authenticated and authorized access  &lt;/p&gt;

&lt;p&gt;All these mechanisms are crucial for securing your pipelines and ensuring that ML models receive high-quality data sources.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Modernizing your data movement architecture is probably the most critical step towards building an AI-ready enterprise. Despite the fact that classical batch ETL pipelines have proven their effectiveness for historical reporting purposes, they hardly meet today's needs.&lt;/p&gt;

&lt;p&gt;By introducing lakehouse technologies, event-driven architecture, scalable distributed processing, and proper schema governance, you can create a robust pipeline architecture to fuel analytics and AI.&lt;/p&gt;

</description>
      <category>data</category>
      <category>analytics</category>
      <category>bigdata</category>
    </item>
  </channel>
</rss>
