how to
825 Topics[SimplePBI] Get Tables, Measures, Columns, or Roles info using PBI Rest API and Python
Today, Power BI has become widely adopted. A huge number of companies are already using it, and the number of deployed models and reports is enormous. As a result, the challenges we face today are no longer the same ones we faced in the past. Previously, the community was more focused on learning Power BI tips and figuring out how to build specific user experience features. This was because many companies were creating their first reports. Today, however, we often need to understand reports that have already been implemented by other people or companies. How can we understand what is behind a published semantic model? The latest update/release of the Python library SimplePBI, which can be used to interact with the Power BI REST API, can help us retrieve information about the tables, measures, columns, and even roles that exist in a model. When we need to edit, support, or understand a semantic model in production, it can be a major challenge if proper versioning practices are not in place. Likewise, if we need to quickly understand fine-grained lineage at the table level and we do not have a proper governance catalog, we have a problem. For these situations, and many others, SimplePBI now makes it easy to query information about a semantic model using Python code. What can we retrieve? Tables: information about the tables in the model. Measures: all measures in the model, their expressions, and the tables they belong to. Columns: information about the model's columns and the tables they belong to. Roles: information about RLS roles created in the model. Relationships: how relationships are built. Partitions: table partitions with the power query definition. Let's see how easy it is to query the model. Prerequisites The first thing we need is to understand how to use the Power BI REST API. You can take your first steps with it by following this article. The second requirement is to make sure we have version 1.0.4 or later of the library. If you already have the library installed, you can run the following command in the console: pip install SimplePBI --upgrade Getting Information from the Model From this point on, we can query a semantic model or dataset from a specific workspace. First, we authenticate and generate a token: Then, we create an object for the category we want to work with. In this case, datasets refers to semantic models: sem = semanticmodels.SemanticModels(t.token) Although this functionality was developed specifically for the library, the available methods have user-friendly names that closely resemble those already used in the API documentation: list_roles_from_semantic_model list_tables_from_semantic_model get_tables_schema_from_semantic_model The last method provides information about columns and measures. We can obtain the workspace ID and semantic model ID from the browser URL when we open the model. It looks like this: https://app.powerbi.com/groups/[Workspace ID]/datasets/[Dataset ID]/details?experience=power-bi This is how we would execute a request to retrieve the measures and columns of a table for workspace ws and semantic model ds: As we can see, it only takes a single line to retrieve all the information. Each item in the rows list within the response dictionary represents either a measure or a column. The type field specifies which one it is. In this example, the first five rows show one column from the Cambiador_unidades table, as well as three measures and one column from the Customer table. Among the most useful pieces of information, we can see the object's name, the data type for columns, and the expression for measures created using DAX. NOTE: These requests are part of long-running operations, so the response may not be instantaneous and could take a few seconds. I hope this helps you investigate deployed models more effectively, whether you need to learn about them while providing support, improve your catalog structures, or quickly review measure expressions. Ultimately, the only limit to how you use it is your creativity.21Views0likes0CommentsIs Your Power BI Report Slow? 5 Data Modeling Mistakes You Should Check First
Power BI performance issues aren’t always caused by large datasets; poor data modeling can also slow down reports, slicers, and DAX measures. In this article, we’ll explore five common data-modeling mistakes that impact performance and practical ways to optimize your Power BI reports. 1. Building One Giant Flat Table The Mistake One of the most common approaches is putting everything into a single table: Customer information Product information Transaction details Location Dates Categories Measures Status fields At first, this seems simpler because there are fewer relationships to manage. But a single, wide table can introduce data duplication and make the model harder to optimize. Why It Can Hurt Performance Power BI's VertiPaq engine uses columnar storage and compression. The efficiency of that compression depends heavily on the characteristics of your columns. A large flat table can contain: Repeated descriptive values High-cardinality columns Unnecessary columns Duplicated customer or product attributes For example, imagine a fact table containing 10 million transactions where Customer Name, Customer City, Customer State, and Product Category are repeated across every transaction. You're storing the same descriptive information over and over again. The Fix: Build a Star Schema Instead of one giant table, separate your model into fact tables and dimension tables. Fact tables Sales Transactions Encounters Claims Inventory Dimension tables Date Customer Product Provider Location The fact table should contain the events or transactions you want to analyze, while dimension tables provide the descriptive attributes used for filtering and grouping. For example: DimDate | | DimCustomer ---- FactSales ---- DimProduct | | DimLocation This structure reduces redundancy, improves model organization, and aligns well with how Power BI's storage engine is designed to work. Pro Tip Don't just remove columns randomly. Instead, ask: Does this column need to exist in this table? If a descriptive attribute belongs in a dimension, move it there. 2. Using Bidirectional Relationships Everywhere The Mistake You create a relationship and immediately set the cross-filter direction to Both because it makes filters appear to "work everywhere." It seems convenient. But as your model grows, bidirectional relationships can introduce unnecessary complexity. Why It Can Hurt Performance With single-direction filtering, filters typically flow from the dimension to the fact table: DimCustomer → FactSales With bidirectional filtering: DimCustomer ↔ FactSales Filter context can now travel in both directions. When multiple tables and relationships are involved, this can create: Ambiguous filter paths More complex query behavior Unexpected filtering Difficult-to-debug totals Additional performance overhead in complex models This becomes especially important when your model contains multiple fact tables or many-to-many relationships. The Fix Use single-direction relationships by default. For a typical star schema: Dimension → Fact Use bidirectional filtering only when you have a specific reason for it and have tested its impact. If you need bidirectional behavior for a particular calculation, you can sometimes handle it within the measure using CROSSFILTER() rather than changing the relationship behavior across the model. Pro Tip If your report suddenly starts showing unexpected totals or filters are affecting tables you didn't expect, inspect your relationships. Relationship direction is often one of the first places worth checking. 3. Putting Multiple Business Processes Into One Fact Table The Mistake You have Sales, Returns, Inventory, Support Tickets, and other business processes, and decide to put everything into one massive fact table. At first, this may seem convenient. But there's a fundamental modeling problem: Different business processes usually have different grains. What Is Grain? The grain defines what one row represents. For example: One row = one sales transaction One row = one product shipment One row = one customer support ticket One row = one patient encounter These represent different business processes with different grains. Trying to combine them into one fact table can result in: Many blank columns Multiple flags indicating row types Complicated DAX Duplicate information Difficult-to-understand logic Larger and harder-to-maintain tables You may eventually find yourself writing logic like: IF( TransactionType = "Sales", ..., IF( TransactionType = "Return", ..., ... ) ) That's often a sign that one table is trying to do too many jobs. The Fix: Use One Fact Table Per Business Process Instead, create separate fact tables: DimDate / \ / \ FactSales FactReturns \ / \ / DimProduct Both fact tables can use shared dimensions such as: Date Customer Product Location These are often called conformed dimensions. This allows you to analyze different business processes consistently without forcing them into a single fact table. Pro Tip Before creating a fact table, write one sentence describing its grain: "One row represents ______." If you can't clearly complete that sentence, your table design probably needs another look. 4. Composite Models: When to Mix Import and DirectQuery The Mistake: Assuming you have to choose one storage mode for your entire model. Why It Matters Import mode loads data into memory using VertiPaq, generally providing fast report interactions. However, the data depends on refreshes. DirectQuery queries the source system when data is requested, allowing fresher data but making performance more dependent on the source database, network, and query complexity. Composite models allow you to combine Import and DirectQuery tables within the same semantic model. When to Consider a Composite Model Use a composite model when different parts of your data have different requirements. For example: Power BI Model | ┌───────────┴───────────┐ ↓ ↓ Import Mode DirectQuery ↓ ↓ Dimensions / Summary Large Fact Table Relatively stable Frequently changing You might: Keep relatively small, frequently used dimension tables in Import mode. Keep very large or frequently changing fact tables in DirectQuery. Use aggregation tables to answer common summary queries from Import-mode data while retaining access to detailed DirectQuery data. Incorporate native queries within DirectQuery sources to offload complex transformations directly to the underlying database engine. You can also extend models using DirectQuery for Power BI semantic models and Analysis Services, allowing live connection sources to be combined with imported data. Technical Note Composite models can introduce additional complexity, particularly when relationships cross storage modes. Test the model with realistic report queries and user interactions rather than assuming that combining storage modes will automatically improve performance. Pro Tip Don't choose DirectQuery simply because your dataset is large. Ask two questions: How fresh does the data need to be? Can Import mode meet that requirement? If your data can be refreshed every few hours or once a day, Import may provide a much better user experience than DirectQuery. 5. Creating Dozens of Duplicate Time-Intelligence Measures The Mistake Your model starts with: Sales Profit Quantity Then you add: Sales YTD Profit YTD Quantity YTD Then, Sales MTD Profit MTD Quantity MTD And eventually, Sales PY Profit PY Quantity PY Before long, your Fields pane contains dozens—or even hundreds—of similar measures. The calculations may be correct, but maintaining them becomes increasingly difficult. A change to your time-intelligence logic may require updating many individual measures. The Fix: Calculation Groups Calculation groups allow you to define reusable calculation logic once and apply it to multiple measures. For example, instead of creating a separate YTD measure for every metric, you can create a YTD calculation item that works with: Sales Profit Quantity Revenue Visits Claims The same approach can be used for: YTD MTD QTD Previous Year Year-over-Year Variance Calculation groups can be created directly in Power BI Desktop from Model view. They can also be managed using external tools such as Tabular Editor. A simplified concept looks like this: Base Measure ↓ Calculation Group ↓ YTD / MTD / PY / YoY For example, a Previous Year calculation item could use: CALCULATE( SELECTEDMEASURE(), SAMEPERIODLASTYEAR('Date'[Date]) ) The SELECTEDMEASURE() function allows the same calculation item to be applied to different base measures. This can significantly reduce duplicated measures and make your semantic model easier to maintain. Important Note Calculation groups are primarily a modeling and maintainability technique. They aren't a magic performance switch. If an underlying measure is inefficient, putting it inside a calculation group won't automatically make it faster. The main benefit is reducing repetitive calculation logic and making your semantic model easier to manage. Pro Tip If you find yourself creating the same calculation pattern repeatedly for different measures, that's a good signal to investigate calculation groups. A Quick Power BI Performance Checklist Before adding more visuals or rewriting your DAX, check these five areas: ✅ Model Structure Am I using a star schema? Have I removed unnecessary columns? Are descriptive attributes stored in dimensions? ✅ Relationships Are relationships mostly single-direction? Do I have unnecessary bidirectional relationships? Are there ambiguous filter paths? ✅ Fact Tables Does each fact table represent a clear business process? Is the grain clearly defined? Am I mixing different grains in the same table? ✅ Storage Mode Do I genuinely need DirectQuery? Could Import mode handle the requirement? Would a composite model or aggregation strategy make sense? ✅ DAX & Semantic Model Am I creating many duplicate measures? Can calculation groups reduce repeated time-intelligence logic? Are my base measures already optimized? Final Thoughts Power BI performance isn't just about how many rows you have. It's about how efficiently those rows are modeled, stored, filtered, and queried. A well-designed model can give you: Faster report interactions Faster refreshes Better scalability Simpler DAX Easier maintenance More predictable results So, the next time your Power BI report starts feeling slow, don't immediately start deleting visuals or rewriting every DAX measure. Start with the model. Check your table structure. Check your relationships. Check the grain of your fact tables. Check your storage mode. And check whether you're duplicating calculation logic unnecessarily. Sometimes the biggest performance improvement comes from fixing the model underneath it.224Views0likes1CommentBuild a Fabric IQ Declarative Agent for Microsoft 365 Copilot Chat
Did you know Microsoft 365 Copilot Chat natively supports Fabric IQ? You can query your Power BI reports and semantic models right from the general chat, without any custom setup. Ask a business question in plain English, and M365 Copilot automatically discovers the most relevant Fabric artifact you have access to, inspects its schema, runs queries, and returns a cited answer alongside your broader Microsoft 365 context. When to build a dedicated agent The discovery step works well and can often identify the right items on the first try, but it's not without tradeoffs. If you rely on a curated set of reports and semantic models and want fast, repeatable answers with less guesswork, we can do better. A dedicated agent lets you: Skip the discovery lag and ambiguity. In general chat, M365 Copilot may fan out searches across emails, Teams chats, OneDrive decks, and all your workspaces before settling on a Power BI item, adding several seconds of latency. If you have a dozen reports about "Sales" or "Revenue", it may pick the wrong one or return inconsistent answers from one day to the next. Agents let Copilot bypass tenant-wide search by routing queries to the correct report or model immediately. Create repeatable, controlled experiences without interference from Office content. Because general chat blends all your Microsoft 365 content, an answer might pull numbers from an outdated email thread or Word document instead of your authoritative Power BI report. Scoping the agent to your trusted Power BI reports and semantic models, and only the M365 sources you explicitly enable, ensures every user gets consistent, governed answers. Show native zero-prompt starters and improve follow-ups. Guide users with tailored conversation starters from the moment they open the agent. Provide them with smarter, context-aware follow-up suggestions after each answer. Control presentation and charting logic. You decide how metrics are defined and presented to users, how tables are formatted, and influence how charts are styled and labeled. Package and share easily. A declarative agent is easy to distribute across your organization in a few clicks. In this blog post, I'll walk you through how you can create your own agent for Microsoft 365 Copilot Chat. We'll build it as a declarative agent and use GitHub Copilot to assist with the development. How the Microsoft 365 Copilot declarative agent uses routing instructions and Fabric IQ MCP to select among sales, finance, and inventory reports or semantic models. What we're building Here is our AdventureWorks Insights declarative agent in action, greeting users with tailored zero-prompt conversation starters, and then answering directly from our curated Power BI semantic model: AdventureWorks Insights declarative agent zero-prompt home screen showing tailored conversation starters. AdventureWorks Insights declarative agent ranking five sales territories, with sales, share of all sales and a source citation. How declarative agents work Under the hood, a declarative agent runs on the same orchestrator and foundation models as M365 Copilot Chat. It is configured through a lightweight set of files that define: identity and behavior (name, instructions, constraints, and conversation starters), knowledge (approved grounding sources), capabilities and actions (built-in tools like Code Interpreter or MCP-based plugins), and host metadata (manifest.json and icons for packaging and distribution). A declarative agent project is packaged from a single appPackage/ folder alongside your Agents Toolkit project configuration: my-fabric-iq-agent/ ├── m365agents.yml # Build & validate workflow ├── env/.env.dev # Environment variables └── appPackage/ ├── manifest.json # App identity & icons ├── declarativeAgent.json # Starters, capabilities & actions ├── agent_instructions.md # Routing & chart rules (max 8,000 chars) ├── ai-plugin.json # Fabric IQ MCP plugin manifest └── color.png / outline.png # 192x192 & 32x32 icons Copy-paste prompt to get started You don't need to write these JSON files by hand. Unzip the starter template (.zip) (or use an empty folder), then copy the instructions below and paste them as-is into GitHub Copilot App, CLI, Claude Code, or your favorite harness. The coding agent will interview you for your target reports and preferences, inspect your schemas, and generate the entire project for you. Before you start, think about what you want your agent to do: Capabilities: turn on CodeInterpreter so the agent can write Python to render custom charts. If your users want to blend Power BI numbers with strategy decks or team discussions, enable OneDriveAndSharePoint, GraphConnectors, or TeamsMessages. Instructions, conversation starters & follow-ups: clickable starter cards that launch your most common analyses without typing, paired with instructions that guide smart follow-up suggestions and routing. See section below for how to write effective instructions. Connectors: during authoring, your coding agent inspects your items via the Fabric IQ MCP server (https://fabriciq.svc.cloud.microsoft/v1/mcp/fabriciq), and wires the finished agent's ai-plugin.json to the M365 Fabric IQ integration (known as AskPowerBI). You can also attach additional MCP servers or API plugins if your workflow spans other systems. Branding & packaging: Your agent's short name (max 30 chars), descriptions (short max 80 chars, full max 4,000 chars), two icons (color.png at 192x192 and outline.png at 32x32), and an accent color bundled into an installable M365 app package. Instructions to copy and paste Build a Microsoft 365 Copilot declarative agent backed by the Fabric IQ MCP server (m365agents.yml, env/.env.dev, and appPackage/: declarativeAgent.json, agent_instructions.md, ai-plugin.json, manifest.json, color.png, outline.png). Template: Fetch https://community.fabric.microsoft.com/blog/community_blog/build-a-fabric-iq-declarative-agent-for-microsoft-365-copilot-chat/5377379 (or unzip my-fabric-iq-agent-template.zip) and reuse its JSON templates; skip external doc fetches unless troubleshooting. Workflow: 1. Gather inputs: Ask which Power BI reports/models to include (names, URLs, or discover via Fabric IQ MCP), agent name, and optional capabilities beyond `CodeInterpreter` (`OneDriveAndSharePoint`, `TeamsMessages`, `GraphConnectors`). Wait for my reply. 2. Inspect in parallel: Call `GetReportMetadata` and `GetSemanticModelSchema` in parallel (both accept a Report GUID; use `DiscoverArtifacts` only to resolve names). Run one batched `ExecuteQuery` only if sample values or date ranges are missing. 3. Scaffold strict JSON (no `//` comments): Create `declarativeAgent.json` (v1.8, `"instructions": "$[file('agent_instructions.md')]"`, 4-6 starters), copy `ai-plugin.json` (v2.4, `AskPowerBI`) verbatim, create `manifest.json` (v1.25) + `m365agents.yml`, and generate 192x192 `color.png` & 32x32 `outline.png` (`agent_instructions.md` max 8,000 chars; `name.short` max 30; `description.short` max 80). 4. Write `appPackage/agent_instructions.md` (max 8,000 chars): (1) Artifact Routing Table with GUIDs & rules to skip `DiscoverArtifacts`, (2) 4-6 Example Questions with follow-up context, (3) Producing Answers rules, (4) Charting Guidelines (lollipop/dumbbell/line, light background, business axis titles). 5. Package & validate (min 90s timeout): Run `npx --yes @microsoft/m365agentstoolkit-cli package --env dev && npx --yes @microsoft/m365agentstoolkit-cli validate --env dev`, then help run `provision --env dev` or sideload `appPackage/build/appPackage.dev.zip`. Testing and distributing your agent Once your files are ready, run these commands from your project root using the Microsoft 365 Agents Toolkit CLI, or ask Copilot to run them for you: # 1. Build appPackage/build/appPackage.dev.zip (inlines agent_instructions.md) npx --yes @microsoft/m365agentstoolkit-cli package --env dev # 2. Validate schemas, limits & icons npx --yes @microsoft/m365agentstoolkit-cli validate --env dev # 3. Provision & sideload to M365 npx --yes @microsoft/m365agentstoolkit-cli provision --env dev Test in Copilot Chat. Open m365.cloud.microsoft/chat, select your agent from the right-hand rail, and click your zero-prompt conversation starters to verify routing, citations, and chart rendering. Share with your team or organization. Run npx --yes Microsoft/m365agentstoolkit-cli share --scope shared to grant access to specific security groups, or submit appPackage/build/appPackage.dev.zip to the Microsoft 365 Admin Center (Settings > Integrated apps) for tenant-wide catalog deployment. Every user's queries continue to respect their individual Power BI permissions and row-level security (RLS). Under the hood: configuring a declarative agent This section walks you through the various files that make up a declarative agent. You don't have to understand every detail, but it's helpful to understand how the pieces fit together. declarativeAgent.json This is the core manifest, it defines your agent's identity and capabilities: { "$schema": "https://developer.microsoft.com/json-schemas/copilot/declarative-agent/v1.8/schema.json", "version": "v1.8", "name": "AdventureWorks Insights", "description": "Answers sales, finance, and inventory questions using curated Power BI reports and semantic models.", "instructions": "$[file('agent_instructions.md')]", "conversation_starters": [ {"title": "Top markets by sales", "text": "Which markets bring in the most sales? Show the top five and their share of total sales."}, {"title": "Category breakdown", "text": "What product categories drive our leading market?"}, {"title": "Margin vs. stock check", "text": "Compare gross margin and current stock levels for our top product category."} ], "capabilities": [{"name": "CodeInterpreter"}], "behavior_overrides": {"default_response_mode": "Think deeper"}, "actions": [{"id": "fabric-iq-action", "file": "ai-plugin.json"}] } Note: Keep JSON strict (no // comments); package inlines agent_instructions.md (max 8,000 chars). Adding Fabric IQ connection via ai-plugin.json The "actions" entry above points to ai-plugin.json in the same appPackage/ folder. This file connects your declarative agent to the Fabric IQ M365 MCP integration (AskPowerBI) and maps Power BI source metadata into native M365 Copilot citations and sensitivity labels. You can drop this ready-made version straight into your project: { "$schema": "https://developer.microsoft.com/json-schemas/copilot/plugin/v2.4/schema.json", "schema_version": "v2.4", "namespace": "fabriciq", "name_for_human": "Fabric IQ", "description_for_human": "Answers questions grounded in curated Power BI reports and semantic models.", "description_for_model": "Ask data questions about the Power BI artifacts in instructions. Pass artifactId from the routing table.", "functions": [{ "name": "AskPowerBI", "description": "Answers a Power BI report or model question via DAX. Prefer Report GUIDs; include prior context on follow-ups.", "parameters": {"type": "object", "properties": {"artifactId": {"type": "string"}, "query": {"type": "string"}, "context": {"type": "string"}}, "required": ["artifactId", "query"]}, "capabilities": {"response_semantics": {"data_path": "$.content[*]._meta.artifact_citation", "properties": {"title": "$.Name", "subtitle": "$.Description", "url": "$.Url", "information_protection_label": "$.SensitivityLabelId", "thumbnail_url": "$.IconUrl"}}} }], "runtimes": [{ "type": "RemoteMCPServer", "auth": {"type": "None"}, "spec": { "url": "https://api.fabric.microsoft.com/v1/mcp/fabricaihub/integrations/m365", "mcp_tool_description": {"tools": [{ "name": "AskPowerBI", "description": "Answers a Power BI report or model question via DAX.", "inputSchema": {"type": "object", "properties": {"artifactId": {"type": "string"}, "query": {"type": "string"}, "context": {"type": "string"}}, "required": ["artifactId", "query"]}, "annotations": {"destructiveHint": false, "openWorldHint": false, "readOnlyHint": true}, "_meta": {"variants": "Fabric.Routing.M365.V1", "microsoft/response_semantics": {"data_path": "$.content[*]._meta.artifact_citation", "properties": {"title": "$.Name", "subtitle": "$.Description", "url": "$.Url", "information_protection_label": "$.SensitivityLabelId", "thumbnail_url": "$.IconUrl", "x-ms_unique_id": "$.ArtifactId"}}} }]} }, "run_for_functions": ["AskPowerBI"] }] } How to write efficient instructions Tip: Usually, it is best to put model-specific instructions and examples as close to the data source as possible. If your instructions are model-specific, like covering how to write DAX queries or which parts of your schema are relevant, consider adding them to the semantic model's custom instructions through Power BI's Prep data for AI experience. Keep them in your declarative agent's instructions only when you can't edit the underlying semantic model, or when you want rules that apply exclusively to this agent without changing how the model behaves elsewhere. When you need to define behavior at the agent level, write instructions to agent_instructions.md. We will structure it around four focused blocks. 1. Build an artifact routing table When you include exact artifact GUIDs and contents in a markdown table, the agent skips the discovery search call and routes straight to the right report or semantic model. ## Artifact Routing Table Match the question to the right source and pass Artifact ID directly to AskPowerBI: | Artifact Name | Type | Artifact ID | Key Content | | :--- | :--- | :--- | :--- | | **AdventureWorks Sales** | Report | `60763385-b565-411a-b266-05c22543d6e4` | `[Total Sales]`, `[Orders]`; `Sales Territory`, `Category`, `Fiscal Year` | | **Global Margin Model** | Model | `14c445e9-24b5-4ded-86b4-f2e1db5b0f34` | `[Gross Margin %]`, `[COGS]`, `[Net Revenue]`; `Cost Center`, `Category` | | **Supply Chain Tracker** | Report | `9b2184a1-4c90-4e12-8a15-7f8e9102bc31` | `[Units on Hand]`, `[Backorder Rate %]`; `Warehouse`, `Supplier` | Routing rules: - Sales, volume, and territory rankings to **AdventureWorks Sales**. - Cost, profitability, and gross margin to **Global Margin Model**. - Stock and warehouse availability to **Supply Chain Tracker**. - Cross-domain questions to query each artifact separately and align by `Category`. 2. Include example questions Give the model a few concrete examples so it learns how to disambiguate similar metrics and carry context across turns: ## Example Questions & Routing - "Which markets lead in sales?" to Query **AdventureWorks Sales** (`[Total Sales]` by `Sales Territory[Region]`). - "What drives the leading market?" to Keep prior territory and period; break down `[Total Sales]` by `Product[Category]`. - "How is gross margin trending for Bikes?" to Switch to **Global Margin Model**, keep `Category = "Bikes"`, query `[Gross Margin %]` by `Fiscal Year`. - "What is our revenue?" to Clarify gross `[Total Sales]` (Sales report) vs. `[Net Revenue]` (Finance model). 3. Define how to produce answers Tip: Only add custom answer-formatting rules if the out-of-the-box experience does not suit your needs. Fabric IQ's built-in instructions are already tuned to provide strong defaults for grounding, charts, citations, and formatting. If your audience requires a specific executive style, such as always leading with a one-sentence headline or suggesting cross-model follow-ups, you can layer those preferences in: ## Producing Answers - **Lead with the headline.** Start with a one-sentence finding naming the leader, exact figure, and share of total. - **State denominator and period.** Specify the date range and whether percentages are share of all sales or top N. - **Suggest follow-ups.** End with 2-3 next questions grounded in your routed artifacts. 4. Standardize charting logic Because CodeInterpreter is enabled, you can instruct the agent to render clean, publication-grade visuals automatically, without the user asking for a chart: ## Charting Guidelines - Include a chart for any comparison of 3+ items. - **Visual forms:** Sorted horizontal lollipop for rankings, dumbbell for 2-period comparisons, line for trends. - **Axis labels:** Use business titles (`Market`, `Sales ($M)`); never `X` or `Y`. - **Styling:** Light background, direct data labels, quiet gridlines, and `#b11f4b` accent for the leader. (Tip: In M365 Copilot Chat, users can also open the chart menu and select Display as interactive chart for native inline hover tooltips.)568Views2likes0CommentsData Days | Data Days Your Way
Return to Data Days Homepage Data Days Your Way Find all sessions on demand!. The Power BI Dataviz World Champs is happening now | start your journey to the finals in Barcelona. Start with what fits you: Fabric | Power BI | SQL | AI | Beginner / New You are looking for: Certification Prep | Data Engineering Deep Dives | Data Visualization | Community Browse by Language: Spanish | Português | French | Japanese / 日本語 | Hindi Fabric User DP 700- Microsoft Fabric Training | Episode 1: Fabric Overview, Domains, Workspaces & OneLake Date: June 14, 6:30 PM Host: Amit Chandak Managing secure access, trusted discovery & data sharing with OneLake (3 sessions) Date: June 16, 9:00 AM Host: Josh Ndemenge Tenant management with Sempy Date: June 16, 11:00 AM Host: Taylor Amy, Teemu Multanen Get Certified: (DP-700) Fabric Data Engineer Essentials (APAC) Date: June 16, 3pm Host: Mike Fortman, Martin Catherall Get Certified: (DP-700) Fabric Data Engineer Essentials (US/EMEA) Date: June 16, 3pm Host: Aleksi Partanen, Phillip Burton Get Certified: (DP-600) Fabric Analytics Engineer Essentials (APAC) Date: June 17, 8am Host: Heidi Hasting, Martin Catherall Get Certified: (DP-600) Fabric Analytics Engineer Essentials (US/EMEA) Date: June 17, 3pm Host: Ásgeir Gunnarsson, Rajendra Ongole DP 700- Microsoft Fabric Training | Episode 4: Dataflow Gen2 End-to-End Date: June 17, 6:30 PM Host: Amit Chandak Orchestrating Fabric Spark and Best Practices for Production-Ready Workload Date: June 18, 8am Host: Santhosh Kumar Ravindran; Ashit Gosalia Security and Governance in Fabric Date: June 20, 09:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) Fabric Data Pipelines Full Course For Beginners (Data Days Edition 2026) Date: June 21, 05:30 AM Host: Ansh Lamba Data Ingestion and Discovery in Fabric Date: June 21, 09:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) DP 700- Microsoft Fabric Training | Episode 6: Data Pipelines, Scheduling & OneLake Shortcuts Date: June 21, 6:30 PM Host: Amit Chandak Prepare for the Microsoft Data Days Date: June 22, 5 am Host: Aman Jindal DP 700- Microsoft Fabric Training | Episode 7: Real-Time Analytics, Eventstream, Eventhouse & KQL Date: June 22, 6:30 PM Host: Amit Chandak Location Intelligence with Maps and GeoAnalytics in Microsoft Fabric Date: June 23, 07:30 AM Host: Philippa Burgess Microsoft Cloud & AI Frontier Week: Unify Your Data with OneLake for Analytics, AI and Agents Date: June 24, 01:00 AM Host: Sevgi Guzzella Microsoft Cloud & AI Frontier Week: Turn Data into Intelligent Action with Microsoft Fabric Date: June 24, 02:00 AM Host: Simon Lidberg The Future of AI in Microsoft Fabric: Data Agents and Beyond Date: June 24, 08:00 AM Host: Brian Bønk, Philippa Burgess DP 700- Microsoft Fabric Training | Episode 9: Mirroring, Databases, Composite Models & Data Agents Date: June 24, 6:30 PM Host: Amit Chandak Global Fabric Day 2026 Date: June 27 Host: Kim Manis Global Fabric Day 2026: Security, Location & Intelligence in Microsoft Fabric Date: June 27, 09:30 AM Host: Philippa Burgess Transforming and Modeling Data in Fabric Date: June 27, 09:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) Modeling Real LMS Data in Power BI: Star Schema from a Messy MySQL Source Date: June 28, 06:30 AM Host: Parul Rani Sagar Configuring Workspace Settings in Fabric Date: June 28, 09:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) Learn KQL in 10 minutes Date: June 29 Host: Phillip Burton Get to Know Esri: From Living Atlas to Spatial Analysis for Fabric Users Date: June 30, 07:30 AM Host: Philippa Burgess Orchestrating Pipelines, and Notebooks in Fabric Date: July 4, 09:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) Designing Data Load Strategies in Fabric Date: July 5, 09:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) Data and AI Security and Governance in Microsoft Fabric Date: July 7, 07:30 AM Host: Philippa Burgess Inside Fabric Runtime 2.0: Spark 4 and Delta 4 in Action Date: July 15, 4:00 PM Host: Arshad Ali and Miles Cole Fabric IQ for Data Professionals Date: July 21, 07:30 AM Host: Philippa Burgess Building Scalable Bronze Layer in Microsoft Fabric Date: July 23, 09:00 AM Host: Aleksi Partanen, Teemu Multanen Win in the Seams 🧵 Stitching Together Data and Security with Microsoft Fabric, KQL, and Data Logs Date: July 25, 09:30 AM Host: Philippa Burgess KQL for Data and Security Professionals Date: July 28, 07:30 AM Host: Philippa Burgess Fabric Analytics Engineer Certification Training (DP-600) Discover resources to prepare for this exam. Fabric Data Engineer Certification Training (DP-700) Discover resources to prepare for this exam. Get started with Microsoft Fabric Self-paced training DP 700- Microsoft Fabric Training | Episode 1: Fabric Overview, Domains, Workspaces & OneLake Date: June 14, 6:30 PM Host: Amit Chandak Managing secure access, trusted discovery & data sharing with OneLake (3 sessions) Date: June 16, 9:00 AM Host: Josh Ndemenge DP 700- Microsoft Fabric Training | Episode 4: Dataflow Gen2 End-to-End Date: June 17, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 6: Data Pipelines, Scheduling & OneLake Shortcuts Date: June 21, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 7: Real-Time Analytics, Eventstream, Eventhouse & KQL Date: June 22, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 9: Mirroring, Databases, Composite Models & Data Agents Date: June 24, 6:30 PM Host: Amit Chandak Inside Fabric Runtime 2.0: Spark 4 and Delta 4 in Action Date: July 15, 4:00 PM Host: Arshad Ali and Miles Cole Back to top Power BI Using Slicers and What-If Parameters in Power BI Date: June 15, 6:00 AM Host: Ilgar Zarbaliyev Power BI Dataviz World Championships: Start Your Journey to Barcelona Date: June 16, 8am Host: Valerie Junk, Lakshmi Ponnurasan Power BI Dataviz World Championships: Comece sua jornada para Barcelona Date: June 16, 2pm Host: Samyr Moises, Dirceu Moraes Resende Power BI Dataviz World Championships: Comienza tu camino a Barcelona Date: June 16, 4pm Host: Walter Calcagno, Lucrecia Krause Dynamic Currency Conversion in Power BI Date: June 22, 6:00 AM Host: Ilgar Zarbaliyev Get Certified: (PL-300) Power BI Data Analyst (US/EMEA) Date: June 22, 8am Host: Ilgar Zarbaliyev, Doher Drizzle Pablo Get Certified: (PL-300) Power BI Data Analyst (APAC) Date: June 23, 3pm Host: Anupama Natarajan, Chris Hyde DP 700- Microsoft Fabric Training | Episode 8: Direct Lake Semantic Models & Power BI Performance Date: June 23, 6:30 PM Host: Amit Chandak Modeling Real LMS Data in Power BI: Star Schema from a Messy MySQL Source Date: June 28, 06:30 AM Host: Parul Rani Sagar Implementing Row-Level Security (RLS) Date: June 29, 6:00 AM Host: Ilgar Zarbaliyev Building Interactive Dashboards and Data Alerts Date: July 6, 6:00 AM Host: Ilgar Zarbaliyev Exploring Data with AI and Natural Language Features Date: July 13, 6:00 AM Host: Ilgar Zarbaliyev Microsoft Certified: Power BI Data Analyst Associate Date: July 18, 5:30 AM Host: Inturi Suparna Babu, Ajay Babu Inturi, Upputuri Gopikrishna Power BI Essentials — Data Days with Data Analytic Group Date: July 18, 09:00 PM Host: Rajendra Ongole,Lanka, Shashi Performing Analytics in Power BI using DAX Date: July 20, 6:00 AM Host: Ilgar Zarbaliyev Get started with Microsoft data analytics Self-paced training Power BI Data Analyst Certification Training (PL-300) Discover resources to prepare for this exam. Power BI Dataviz World Championships Do you have what it takes? DP 700- Microsoft Fabric Training | Episode 8: Direct Lake Semantic Models & Power BI Performance Date: June 23, 6:30 PM Host: Amit Chandak Back to top SQL DP 700- Microsoft Fabric Training | Episode 2: Lakehouse, Warehouse & T-SQL Date: June 15, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 3: Lakehouse with Spark SQL Date: June 16, 6:30 PM Host: Amit Chandak Microsoft Cloud & AI Frontier Week: Modernize SQL for AI-Ready Databases Date: June 24, 03:00 AM Host: Diaa Radwan Microsoft Cloud & AI Frontier Week: Power Intelligent Apps and Agents with Azure Databases Date: June 24, 04:00 AM Host: Diaa Radwan Build with SQL + AI: From Prompt to Intelligent Apps Date: June 25, 01:00 PM Host: Matt Gordon, Alpa Buddhabhatti Modeling Real LMS Data in Power BI: Star Schema from a Messy MySQL Source Date: June 28, 06:30 AM Host: Parul Rani Sagar Starting with Data API Builder in 10 minutes Date: June 30, TBD Host: Phillip Burton Designing and Implementing Database Objects in Azure SQL Database Date: July 11, 9:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) Advanced Query Techniques in Azure SQL Date: July 12, 9:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) Get Certified SQL+AI (DP-800): Design and Develop SQL Solutions Like a Pro (EMEA / US) Date: July 15, 8:00 AM Host: Javier Villegas; Hamish Watson Get Certified SQL+AI (DP-800): Design and Develop SQL Solutions Like a Pro (APAC) Date: July 16, 3:00 PM Host: Martin Catherall; Greg Low Implementing Programmability Objects in Azure SQL Database Date: July 18, 9:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) Securing Data Access in Azure SQL Database Date: July 19, 9:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) Get Certified DP-800: Secure, Optimize, & Ship SQL+AI Solutions (APAC) Date: July 20, 4:00 PM Host: Mike Fortman; Mayte Castillo Get Certified DP-800: Secure, Optimize, & Ship SQL+AI Solutions (EMEA/US) Date: July 21, 8:00 AM Host: Jeff Taylor; Matt Gordon Get Certified SQL+AI (DP-800): Bring AI to SQL with Embeddings, Search, and RAG (EMEA / US) Date: July 23, 8:00 AM Host: Gaston Cruz; Armando Lacerda Optimizing Performance and integrity in Azure SQL Database Date: July 25, 9:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) Win in the Seams 🧵 Stitching Together Data and Security with Microsoft Fabric, KQL, and Data Logs Date: July 25, 09:30 AM Host: Philippa Burgess Get Certified SQL+AI (DP-800): Bring AI to SQL with Embeddings, Search, and RAG (APAC) Date: July 29, 3:00 PM Host: Greg Low; Anupama Natarajan Query and modify data with Transact-SQL Self-paced training SQL AI Engineer Certification Training (DP-800) Discover resources to prepare for this exam. DP 700- Microsoft Fabric Training | Episode 2: Lakehouse, Warehouse & T-SQL Date: June 15, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 3: Lakehouse with Spark SQL Date: June 16, 6:30 PM Host: Amit Chandak Get Certified SQL+AI (DP-800): Design and Develop SQL Solutions Like a Pro (EMEA / US) Date: July 15, 8:00 AM Host: Javier Villegas; Hamish Watson Get Certified SQL+AI (DP-800): Design and Develop SQL Solutions Like a Pro (APAC) Date: July 16, 3:00 PM Host: Martin Catherall; Greg Low Get Certified DP-800: Secure, Optimize, & Ship SQL+AI Solutions (APAC) Date: July 20, 4:00 PM Host: Mike Fortman; Mayte Castillo Get Certified DP-800: Secure, Optimize, & Ship SQL+AI Solutions (EMEA/US) Date: July 21, 8:00 AM Host: Jeff Taylor; Matt Gordon Get Certified SQL+AI (DP-800): Bring AI to SQL with Embeddings, Search, and RAG (EMEA / US) Date: July 23, 8:00 AM Host: Gaston Cruz; Armando Lacerda Get Certified SQL+AI (DP-800): Bring AI to SQL with Embeddings, Search, and RAG (APAC) Date: July 29, 3:00 PM Host: Greg Low; Anupama Natarajan Back to top Using AI Microsoft Cloud & AI Frontier Week: Transform Data Silos into AI Fuel – Build an End-to-End Data Foundation Date: June 22, 04:00 AM Host: Mark Torr, Chris Webb, Sarina Stevens Microsoft Cloud & AI Frontier Week: Unify Your Data with OneLake for Analytics, AI and Agents Date: June 24, 01:00 AM Host: Sevgi Guzzella Microsoft Cloud & AI Frontier Week: Turn Data into Intelligent Action with Microsoft Fabric Date: June 24, 02:00 AM Host: Simon Lidberg Microsoft Cloud & AI Frontier Week: Modernize SQL for AI-Ready Databases Date: June 24, 03:00 AM Host: Diaa Radwan Microsoft Cloud & AI Frontier Week: Power Intelligent Apps and Agents with Azure Databases Date: June 24, 04:00 AM Host: Diaa Radwan Microsoft Cloud & AI Frontier Week: Transform Fragmented Data into Trusted AI at Scale – A Roadmap for CDOs Date: June 24, 05:00 AM Host: Seda Teber & Marcel Franke The Future of AI in Microsoft Fabric: Data Agents and Beyond Date: June 24, 08:00 AM Host: Brian Bønk, Philippa Burgess DP 700- Microsoft Fabric Training | Episode 9: Mirroring, Databases, Composite Models & Data Agents Date: June 24, 6:30 PM Host: Amit Chandak Build with SQL + AI: From Prompt to Intelligent Apps Date: June 25, 01:00 PM Host: Matt Gordon, Alpa Buddhabhatti Data and AI Security and Governance in Microsoft Fabric Date: July 7, 07:30 AM Host: Philippa Burgess Exploring Data with AI and Natural Language Features Date: July 13, 6:00 AM Host: Ilgar Zarbaliyev Get Certified SQL+AI (DP-800): Bring AI to SQL with Embeddings, Search, and RAG (EMEA / US) Date: July 23, 8:00 AM Host: Gaston Cruz; Armando Lacerda Get Certified SQL+AI (DP-800): Bring AI to SQL with Embeddings, Search, and RAG (APAC) Date: July 29, 3:00 PM Host: Greg Low; Anupama Natarajan DP 700- Microsoft Fabric Training | Episode 9: Mirroring, Databases, Composite Models & Data Agents Date: June 24, 6:30 PM Host: Amit Chandak Get Certified SQL+AI (DP-800): Bring AI to SQL with Embeddings, Search, and RAG (EMEA / US) Date: July 23, 8:00 AM Host: Gaston Cruz; Armando Lacerda Get Certified SQL+AI (DP-800): Bring AI to SQL with Embeddings, Search, and RAG (APAC) Date: July 29, 3:00 PM Host: Greg Low; Anupama Natarajan Back to top New Fabric / Power BI / SQL Users DP 700- Microsoft Fabric Training | Episode 1: Fabric Overview, Domains, Workspaces & OneLake Date: June 14, 6:30 PM Host: Amit Chandak Fabric Data Pipelines Full Course For Beginners (Data Days Edition 2026) Date: June 21, 05:30 AM Host: Ansh Lamba Get Certified: Which Data Exam Fits You Best? Date: June 23, 12pm Host: Dean Jurecic, Taylor Amy Learn KQL in 10 minutes Date: June 29 Host: Phillip Burton Starting with Data API Builder in 10 minutes Date: June 30, TBD Host: Phillip Burton From “I’m Just Getting Started” to “I Made This” Date: July 28, 8:00 AM Host: Philippa Burgess; Taylor Amy Get started with Microsoft data analytics Self-paced training Get started with Microsoft Fabric Self-paced training Introduction to Microsoft Azure Data core data concepts Self-paced training Query and modify data with Transact-SQL Self-paced training DP 700- Microsoft Fabric Training | Episode 1: Fabric Overview, Domains, Workspaces & OneLake Date: June 14, 6:30 PM Host: Amit Chandak From “I’m Just Getting Started” to “I Made This” Date: July 28, 8:00 AM Host: Philippa Burgess; Taylor Amy Back to top Certification Prep Certification Resources Which Data Exam Fits You Best? Date: June 23, 12pm Host: Dean Jurecic, Taylor Amy What to Expect and How to Pass Date: June 25, 8am Host: Heini Ilmarinen, Teemu Multanen Get Certified: (Exam Day) What to Expect and How to Pass (US/EMEA) Date: August 6, 8:00 AM Host: Brian Bønk; Charley Hanania Find a Study Group DP-600, DP-700, DP-800, and PL-300 Free Certification Exam Voucher DP-600, DP-700 or DP-800 Get Certified: (Exam Day) What to Expect and How to Pass (US/EMEA) Date: August 6, 8:00 AM Host: Brian Bønk; Charley Hanania DP-600 - Fabric Analytics Engineer Get Certified: (DP-600) Fabric Analytics Engineer Essentials (APAC) Date: June 17, 3pm Host: Heidi Hasting, Martin Catherall Certifícate: (DP-600) Fabric Analytics Engineer Conceptos Clave Date: June 17, 4pm Host: Renzo Roca, Javier Villegas Get Certified: (DP-600) Fabric Analytics Engineer Essentials (US/EMEA) Date: June 18, 8am Host: Ásgeir Gunnarsson, Rajendra Ongole Certifique-se: (DP-600) Fundamentos de Analytics no Fabric Date: June 18, 12pm Host: Ladislau Andre, Roberto Fonseca DP-600 to Real Project: What the Certification Taught Me (and What It Didn't) Date: July 11, 09:30 PM Host: Parul Rani Sagar Microsoft Certified: Fabric Analytics Engineer Associate(DP 600) Date: July 17, 08:30 PM Host: Inturi Suparna Babu, Ajay Babu Inturi, Upputuri Gopikrishna DP-600 Exam Prep — Fabric Analytics Engineer with Data Analytic Group Date: July 25, 09:00 PM Host: Rajendra Ongole,Lanka, Shashi Prepare for Exam DP-600 Prep resources DP-600 In Depth On-demand recorded sessions Free Certification Exam Voucher DP-600, DP-700 or DP-800 Find a Study Group DP-600, DP-700, DP-800, and PL-300 DP-700 - Fabric Data Engineer DP 700- Microsoft Fabric Training | Episode 1: Fabric Overview, Domains, Workspaces & OneLake Date: June 14, 6:30 PM Host: Amit Chandak Certifique-se: (DP-700) Fundamentos de Dados no Fabric Date: June 15, 12pm Host: Luiz Santana, Percy Machado Certifícate: (DP-700) Fabric Data Engineer Conceptos Clave Date: June 15, 4pm Host: Gonzalo bissio, Keyla Dolores Mendez DP 700- Microsoft Fabric Training | Episode 1: Fabric Overview, Domains, Workspaces & OneLake Date: June 15, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 2: Lakehouse, Warehouse & T-SQL Date: June 15, 6:30 PM Host: Amit Chandak Get Certified: (DP-700) Fabric Data Engineer Essentials (APAC) Date: June 16, 3:00 PM Host: Mike Fortman, Martin Catherall DP 700- Microsoft Fabric Training | Episode 2: Lakehouse, Warehouse & T-SQL Date: June 16, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 3: Lakehouse with Spark SQL Date: June 16, 6:30 PM Host: Amit Chandak Get Certified: (DP-700) Fabric Data Engineer Essentials (US/EMEA) Date: June 17, 8:00 AM Host: Aleksi Partanen, Phillip Burton DP 700- Microsoft Fabric Training | Episode 3: Lakehouse with Spark SQL Date: June 17, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 4: Dataflow Gen2 End-to-End Date: June 17, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 4: Dataflow Gen2 End-to-End Date: June 18, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 5: PySpark Notebooks for Data Engineering Date: June 18, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 5: PySpark Notebooks for Data Engineering Date: June 19, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 6: Data Pipelines, Scheduling & OneLake Shortcuts Date: June 21, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 6: Data Pipelines, Scheduling & OneLake Shortcuts Date: June 22, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 7: Real-Time Analytics, Eventstream, Eventhouse & KQL Date: June 22, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 7: Real-Time Analytics, Eventstream, Eventhouse & KQL Date: June 23, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 8: Direct Lake Semantic Models & Power BI Performance Date: June 23, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 8: Direct Lake Semantic Models & Power BI Performance Date: June 24, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 9: Mirroring, Databases, Composite Models & Data Agents Date: June 24, 6:30 PM Host: Amit Chandak Como passar na Certificação DP-700: Guia Definitivo! Date: June 25, 3:00 PM Host: Sidney Cirqueira DP 700- Microsoft Fabric Training | Episode 10: End-to-End Fabric Project & DP-700 Exam Preparation Date: June 25, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 9: Mirroring, Databases, Composite Models & Data Agents Date: June 25, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 10: End-to-End Fabric Project & DP-700 Exam Preparation Date: June 26, 6:30 PM Host: Amit Chandak Getting Started with PySpark for DP-700 Date: July 16, 9:00 AM Host: Teemu Multanen DP-700 In Depth On-demand recorded sessions Find a Study Group DP-600, DP-700, DP-800, and PL-300 Free Certification Exam Voucher DP-600, DP-700 or DP-800 Prepare for Exam DP-700 Prep resources DP 700- Microsoft Fabric Training | Episode 1: Fabric Overview, Domains, Workspaces & OneLake Date: June 14, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 2: Lakehouse, Warehouse & T-SQL Date: June 15, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 3: Lakehouse with Spark SQL Date: June 16, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 4: Dataflow Gen2 End-to-End Date: June 17, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 5: PySpark Notebooks for Data Engineering Date: June 18, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 6: Data Pipelines, Scheduling & OneLake Shortcuts Date: June 21, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 7: Real-Time Analytics, Eventstream, Eventhouse & KQL Date: June 22, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 8: Direct Lake Semantic Models & Power BI Performance Date: June 23, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 9: Mirroring, Databases, Composite Models & Data Agents Date: June 24, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 10: End-to-End Fabric Project & DP-700 Exam Preparation Date: June 25, 6:30 PM Host: Amit Chandak DP-800 - SQL AI Engineer Get Certified SQL+AI (DP-800): Design and Develop SQL Solutions Like a Pro (EMEA / US) Date: July 15, 8:00 AM Host: Javier Villegas; Hamish Watson Get Certified SQL+AI (DP-800): Design and Develop SQL Solutions Like a Pro (APAC) Date: July 16, 3:00 PM Host: Martin Catherall; Greg Low Get Certified DP-800: Secure, Optimize, & Ship SQL+AI Solutions (APAC) Date: July 20, 4:00 PM Host: Mike Fortman; Mayte Castillo Get Certified DP-800: Secure, Optimize, & Ship SQL+AI Solutions (EMEA/US) Date: July 21, 8:00 AM Host: Jeff Taylor; Matt Gordon Get Certified SQL+AI (DP-800): Bring AI to SQL with Embeddings, Search, and RAG (EMEA / US) Date: July 23, 8:00 AM Host: Gaston Cruz; Armando Lacerda Get Certified SQL+AI (DP-800): Bring AI to SQL with Embeddings, Search, and RAG (APAC) Date: July 29, 3:00 PM Host: Greg Low; Anupama Natarajan DP-800 In Depth On-demand recorded sessions Find a Study Group DP-600, DP-700, DP-800, and PL-300 Free Certification Exam Voucher DP-600, DP-700 or DP-800 Prepare for Exam DP-800 Prep resources Get Certified SQL+AI (DP-800): Design and Develop SQL Solutions Like a Pro (EMEA / US) Date: July 15, 8:00 AM Host: Javier Villegas; Hamish Watson Get Certified SQL+AI (DP-800): Design and Develop SQL Solutions Like a Pro (APAC) Date: July 16, 3:00 PM Host: Martin Catherall; Greg Low Get Certified DP-800: Secure, Optimize, & Ship SQL+AI Solutions (APAC) Date: July 20, 4:00 PM Host: Mike Fortman; Mayte Castillo Get Certified DP-800: Secure, Optimize, & Ship SQL+AI Solutions (EMEA/US) Date: July 21, 8:00 AM Host: Jeff Taylor; Matt Gordon Get Certified SQL+AI (DP-800): Bring AI to SQL with Embeddings, Search, and RAG (EMEA / US) Date: July 23, 8:00 AM Host: Gaston Cruz; Armando Lacerda Get Certified SQL+AI (DP-800): Bring AI to SQL with Embeddings, Search, and RAG (APAC) Date: July 29, 3:00 PM Host: Greg Low; Anupama Natarajan PL-300 - Power BI Data Analyst Using Slicers and What-If Parameters in Power BI Date: June 15, 6:00 AM Host: Ilgar Zarbaliyev Dynamic Currency Conversion in Power BI Date: June 22, 6:00 AM Host: Ilgar Zarbaliyev Get Certified: (PL-300) Power BI Data Analyst (US/EMEA) Date: June 22, 8am Host: Ilgar Zarbaliyev, Doher Drizzle Pablo Certifique-se: (PL-300) Fundamentos de Análise de Dados com Power BI Date: June 22, 12pm Host: Brendell Silva Gomes, Miguel Felix Get Certified: (PL-300) Power BI Data Analyst (APAC) Date: June 23, 3pm Host: Anupama Natarajan, Chris Hyde Certifícate: (PL-300) Power BI Data Analyst Conceptos Clave Date: June 23, 4pm Host: Adrian Fernandez Zenteno, Ricardo Rincón Implementing Row-Level Security (RLS) Date: June 29, 6:00 AM Host: Ilgar Zarbaliyev Building Interactive Dashboards and Data Alerts Date: July 6, 6:00 AM Host: Ilgar Zarbaliyev Microsoft Certified: Power BI Data Analyst Associate Date: July 18, 5:30 AM Host: Inturi Suparna Babu, Ajay Babu Inturi, Upputuri Gopikrishna Performing Analytics in Power BI using DAX Date: July 20, 6:00 AM Host: Ilgar Zarbaliyev Prepare for Exam PL-300 Prep resources PL-300 In Depth On-demand recorded sessions Free Certification Exam Voucher DP-600, DP-700 or DP-800 Find a Study Group DP-600, DP-700, DP-800, and PL-300 Back to top Data Engineering Deep Dives Managing secure access, trusted discovery & data sharing with OneLake (3 sessions) Date: June 16, 9:00 AM Host: Josh Ndemenge Tenant management with Sempy Date: June 16, 11:00 AM Host: Taylor Amy, Teemu Multanen DP 700- Microsoft Fabric Training | Episode 3: Lakehouse with Spark SQL Date: June 16, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 4: Dataflow Gen2 End-to-End Date: June 17, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 5: PySpark Notebooks for Data Engineering Date: June 18, 6:30 PM Host: Amit Chandak Orchestrating Fabric Spark and Best Practices for Production-Ready Workload Date: June 19, 8am Host: Santhosh Kumar Ravindran; Ashit Gosalia Data Ingestion and Discovery in Fabric Date: June 21, 09:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) DP 700- Microsoft Fabric Training | Episode 6: Data Pipelines, Scheduling & OneLake Shortcuts Date: June 21, 6:30 PM Host: Amit Chandak Modeling Real LMS Data in Power BI: Star Schema from a Messy MySQL Source Date: June 28, 06:30 AM Host: Parul Rani Sagar Orchestrating Pipelines, and Notebooks in Fabric Date: July 4, 09:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) Designing Data Load Strategies in Fabric Date: July 5, 09:30 AM Host: Amit Kumar Mahato (Cloud Guru Amit) Inside Fabric Runtime 2.0: Spark 4 and Delta 4 in Action Date: July 15, 4:00 PM Host: Arshad Ali and Miles Cole Building Scalable Bronze Layer in Microsoft Fabric Date: July 23, 09:00 AM Host: Aleksi Partanen, Teemu Multanen Managing secure access, trusted discovery & data sharing with OneLake (3 sessions) Date: June 16, 9:00 AM Host: Josh Ndemenge DP 700- Microsoft Fabric Training | Episode 3: Lakehouse with Spark SQL Date: June 16, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 4: Dataflow Gen2 End-to-End Date: June 17, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 5: PySpark Notebooks for Data Engineering Date: June 18, 6:30 PM Host: Amit Chandak DP 700- Microsoft Fabric Training | Episode 6: Data Pipelines, Scheduling & OneLake Shortcuts Date: June 21, 6:30 PM Host: Amit Chandak Inside Fabric Runtime 2.0: Spark 4 and Delta 4 in Action Date: July 15, 4:00 PM Host: Arshad Ali and Miles Cole Back to top Dataviz Using Slicers and What-If Parameters in Power BI Date: June 15, 6:00 AM Host: Ilgar Zarbaliyev Power BI Dataviz World Championships: Start Your Journey to Barcelona Date: June 16, 8am Host: Valerie Junk, Lakshmi Ponnurasan Power BI Dataviz World Championships: Comece sua jornada para Barcelona Date: June 16, 2pm Host: Samyr Moises, Dirceu Moraes Resende Power BI Dataviz World Championships: Comienza tu camino a Barcelona Date: June 16, 4pm Host: Walter Calcagno, Lucrecia Krause Dynamic Currency Conversion in Power BI Date: June 22, 6:00 AM Host: Ilgar Zarbaliyev Building Interactive Dashboards and Data Alerts Date: July 6, 6:00 AM Host: Ilgar Zarbaliyev Inside the Mind of a Dataviz World Champion Date: July 14, 8:00 AM Host: Valerie Junk; Santhana Lakshmi Ponnurasan Performing Analytics in Power BI using DAX Date: July 20, 6:00 AM Host: Ilgar Zarbaliyev From “I’m Just Getting Started” to “I Made This” Date: July 28, 8:00 AM Host: Philippa Burgess; Taylor Amy Power BI Dataviz World Championships Do you have what it takes? Inside the Mind of a Dataviz World Champion Date: July 14, 8:00 AM Host: Valerie Junk; Santhana Lakshmi Ponnurasan From “I’m Just Getting Started” to “I Made This” Date: July 28, 8:00 AM Host: Philippa Burgess; Taylor Amy Back to top Community connections Global Fabric Day 2026 Date: June 27 Host: Kim Manis Data & IA sous contrôle - Meetup MTG:Bordeaux Juillet 2026 - Data Days Edition Date: July 2, 9:30 AM Host: Youva Gharout, Iuliia Mazur, Pierre Chaumont, Xavier Noya, Christian Bonnaud, Alexandre Nédélec Build Connections. Grow Your Career. Start Here for Your Community in India. Date: July 13, 11:00 PM Host: Amit Chandak; Vinodh Kumar Stop Lurking, Start Connecting: You Belong In the Microsoft Data & AI Communities Date: July 16, 9:00 AM Host: Teemu Multanen; Santhana Lakshmi Ponnurasan; Mike Fortman Data Days Hotline: No Slides, Just Answers Date: July 22, 8:00 AM Host: Johan Ludvig Brattås; Markus Ehrenmueller-Jensen Data Days Lightning Talks: Short Talks. Big Ideas. Zero Fluff. Date: July 30, 8:00 AM Host: Jennifer Ratten; Stephanie Bruno Data Days Universidad ICESI - Cali, Colombia Date: August 5, 12:00 PM Host: Álvaro Rodríguez, Cristhian Cabra, Angely Andrade, Andrés Gallego Connect on Reddit Fabric Fina a local Azure Group On the Meetup Find a local User Group On Meetup Find a Study Group DP-600, DP-700, DP-800, and PL-300 More Ways to Connect Find your community Start a New User Group Learn more about User Groups Build Connections. Grow Your Career. Start Here for Your Community in India. Date: July 13, 11:00 PM Host: Amit Chandak; Vinodh Kumar Stop Lurking, Start Connecting: You Belong In the Microsoft Data & AI Communities Date: July 16, 9:00 AM Host: Teemu Multanen; Santhana Lakshmi Ponnurasan; Mike Fortman Data Days Hotline: No Slides, Just Answers Date: July 22, 8:00 AM Host: Johan Ludvig Brattås; Markus Ehrenmueller-Jensen Data Days Lightning Talks: Short Talks. Big Ideas. Zero Fluff. Date: July 30, 8:00 AM Host: Jennifer Ratten; Stephanie Bruno Back to top Spanish Certifícate: (DP-700) Fabric Data Engineer Conceptos Clave Date: June 15, 4pm Host: Gonzalo bissio, Keyla Dolores Mendez Power BI Dataviz World Championships: Comienza tu camino a Barcelona Date: June 16, 4pm Host: Walter Calcagno, Lucrecia Krause Certifícate: (DP-600) Fabric Analytics Engineer Conceptos Clave Date: June 17, 4pm Host: Renzo Roca, Javier Villegas Certifícate: (PL-300) Power BI Data Analyst Conceptos Clave Date: June 23, 4pm Host: Adrian Fernandez Zenteno, Ricardo Rincón Study Group: From Power BI to Microsoft Fabric: The DP-600 Analytics Engineer Vision Date: June 25, 2026 Host: Comunidad Power BI, Fabric & AI en Español Track: DP-600 | Location: Virtual Certifícate: Preparación para el examen – Qué esperar y cómo aprobar Date: June 25, 4pm Host: Gaston Cruz, Keyla Dolores Mendez Study Group: Operational Architecture in Fabric: Workspaces, Capacity, Governance, and Permissions Date: July 1, 2026 Host: Comunidad Power BI, Fabric & AI en Español Track: DP-600 | Location: Virtual Cierre de la temporada 3 - Data Days Edition Date: July 1, 10:00 AM Host: Ana María Bisbé, Diana Aguilera Reyna, Nelson López Centeno Study Group: Martes 7 de julio - Diseño e implementación de soluciones analíticas en Microsoft Fabric Date: July 7, 2026 Host: AP Data & IA Track: DP-700 | Location: Virtual Study Group: OneLake and Lakehouse: Data Strategy, Ingestion, and Unified Access Date: July 8, 2026 Host: Comunidad Power BI, Fabric & AI en Español Track: DP-600 | Location: Virtual Study Group: Jueves 9 de julio - Ingesta, transformación y procesamiento de datos Date: July 9, 2026 Host: AP Data & IA Track: DP-700 | Location: Virtual Data Days Edition by BIExpert - Fabric Data Engineering Date: July 10, 4:00 PM Host: Nicolas Nakasone, Natali Lujan Power BI + MCP: la nueva forma de conectar la IA con tus datos (6 sesiones, en español) — 13 de julio – 17 de agosto de 2026 Date: July 13, 07:00 AM Host: Vicente Antonio Juan Magallanes Study Group: Martes 14 de julio - Monitoreo, rendimiento y optimización de cargas de trabajo Date: July 14, 2026 Host: AP Data & IA Track: DP-700 | Location: Virtual Study Group: Data Warehouse in Fabric: Dimensional Modeling and Analytical Design Date: July 15, 2026 Host: Comunidad Power BI, Fabric & AI en Español Track: DP-600 | Location: Virtual Study Group: Jueves 16 de julio - Preparación para el examen DP-700 y sesión abierta de preguntas y respuestas Date: July 16, 2026 Host: AP Data & IA Track: DP-700 | Location: Virtual Study Group: Data Days - Grupo de Estudio DP-600 / DP-800 Date: July 18, 2026 Host: Cloud Experts Community Track: DP-600 | Location: In-Person | University Norbert Wiener Study Group: Data Preparation in Fabric: Quality, Transformation, SQL, and KQL Date: July 22, 2026 Host: Comunidad Power BI, Fabric & AI en Español Track: DP-600 | Location: Virtual Study Group: Sesión 1: Diseño y desarrollo de soluciones SQL Date: July 28, 2026 Host: AP Data & IA Track: DP-800 | Location: Virtual Study Group: Enterprise Semantic Models: DAX, Direct Lake, and Power BI Performance Date: July 29, 2026 Host: Comunidad Power BI, Fabric & AI en Español Track: DP-600 | Location: Virtual Study Group: Sesión 2: Seguridad, optimización y administración de soluciones SQL con confianza Date: July 30, 2026 Host: AP Data & IA Track: DP-800 | Location: Virtual Agentes inteligentes con Microsoft Fabric: MCP, LLM y datos empresariales (6 sesiones, en español) — 31 de julio – 4 de septiembre de 2026 Date: July 31, 07:00 AM Host: Vicente Antonio Juan Magallanes Study Group: Sesión 3: Incorpo Date: August 4, 2026 Host: AP Data & IA Track: DP-800 | Location: Virtual Study Group: End-to-End Fabric Solution: Security, Governance, Lifecycle, and DP-600 Preparation Date: August 5, 2026 Host: Comunidad Power BI, Fabric & AI en Español Track: DP-600 | Location: Virtual Data Days Universidad ICESI - Cali, Colombia Date: August 5, 12:00 PM Host: Álvaro Rodríguez, Cristhian Cabra, Angely Andrade, Andrés Gallego Data Days Edition by BIExpert - Fabric Data Engineering Date: August 7, 04:00 PM Host: Nicolas Nakasone, Natali Lujan Data Days Edition by BIExpert - Fabric Data Engineering Date: July 10, 4:00 PM Host: Nicolas Nakasone, Natali Lujan Back to top Português Certifique-se: (DP-700) Fundamentos de Dados no Fabric Date: June 15, 12pm Host: Luiz Santana, Percy Machado Power BI Dataviz World Championships: Comece sua jornada para Barcelona Date: June 16, 2pm Host: Samyr Moises, Dirceu Moraes Resende Certifique-se: (DP-600) Fundamentos de Analytics no Fabric Date: June 18, 12pm Host: Ladislau Andre, Roberto Fonseca Study Group: Serie 1 - Preparação para o Exame PL-300 (Power BI Data Analyst) Date: June 21, 2026 Host: Fabric Lusofono Track: PL-300 | Location: Virtual Building a Medallion Architecture in Microsoft Fabric Date: June 22 Host: Ladislau Andre Certifique-se: (PL-300) Fundamentos de Análise de Dados com Power BI Date: June 22, 12pm Host: Brendell Silva Gomes, Miguel Felix Designing Modern Data Architectures with Microsoft Fabric Date: June 23, 11:00 AM Host: To be announced Certifique-se: Dia do Exame — O que esperar e como passar Date: June 25, 12pm Host: Luiz Santana, Miguel Felix Como passar na Certificação DP-700: Guia Definitivo! Date: June 25, 3:00 PM Host: Sidney Cirqueira Medallion Architecture + Data Mesh Architecture Date: June 26, TBD Host: Ladislau Andre Introdução à Análise de Dados da Microsoft Date: June 27, 08:00 PM Host: Shalom André, Filomena Adão Semantic Models in Power BI and Fabric Date: June 28, TBD Host: Ladislau Andre Study Group: Serie 2 - Preparação para o Exame DP-600 (Fabric Analytics Engineer) Date: June 28, 2026 Host: Fabric Lusofono Track: DP-600 | Location: Virtual Semantic Models Schedule Refresh with Pipelines Date: June 30, TBD Host: Ladislau Andre Semantic Models on Fabric notebooks Date: July 2, TBD Host: Ladislau Andre Semantic Models In Enterprise BI Date: July 4, 11:00 AM Host: Ladislau Andre Preparar Dados para Análise com o Power BI Date: July 4, 08:00 PM Host: Shalom André, Evaristo Quiosa Study Group: Serie 3 - Preparação para o Exame DP-700 (Fabric Data Engineer) Date: July 5, 2026 Host: Fabric Lusofono Track: DP-700 | Location: Virtual Modelar Dados com o Power BI Date: July 11, 08:00 PM Host: Shalom André Study Group: Serie 4 - Preparação para o Exame DP-800 (SQL Developer & AI Solutions) Date: July 12, 2026 Host: Fabric Lusofono Track: DP-800 | Location: Virtual Criar Relatórios Eficazes no Power BI Date: July 18, 08:00 PM Host: Shalom André Pare de scrolar e comece a se conectar: você pertence às comunidades de Dados e IA da Microsoft. Date: July 21, 12:00 PM Host: Alison Pezzott; Sidney Oliveira Cirqueira Dentro do Cérebro de campeões mundiais de Dataviz Date: July 21, 2:00 PM Host: Percy Machado; Samyr Moises; Paulo Grijó Get Certified SQL+AI (DP-800): Projete e Desenvolva Soluções SQL como um Profissional Date: July 23, 12:00 PM Host: Armando Lacerda; Ladislau André Gerenciar e Proteger o Power BI Date: July 25, 08:00 PM Host: Shalom André, Milton Dunda Preparação para o Exame e Sessão Q&A Date: July 26, 08:00 PM Host: Shalom André De “tô só começando” para “caramba, eu fiz isso” Date: July 28, 12:00 PM Host: Hugo Venturini; Dirceu Moraes Resende Get Certified SQL+AI (DP-800): Proteja, Otimize e Entregue Soluções SQL com Confiança Date: July 30, 12:00 PM Host: Brendell Silva Gomes; Eda Oliviera Get Certified SQL+AI (DP-800): Leve IA para o SQL com Embeddings, Busca e RAG Date: August 4, 12:00 PM Host: Luis Gustavo Nascimento Serra; Thiago Zavaschi Pare de scrolar e comece a se conectar: você pertence às comunidades de Dados e IA da Microsoft. Date: July 21, 12:00 PM Host: Alison Pezzott; Sidney Oliveira Cirqueira Dentro do Cérebro de campeões mundiais de Dataviz Date: July 21, 2:00 PM Host: Percy Machado; Samyr Moises; Paulo Grijó Get Certified SQL+AI (DP-800): Projete e Desenvolva Soluções SQL como um Profissional Date: July 23, 12:00 PM Host: Armando Lacerda; Ladislau André De “tô só começando” para “caramba, eu fiz isso” Date: July 28, 12:00 PM Host: Hugo Venturini; Dirceu Moraes Resende Get Certified SQL+AI (DP-800): Proteja, Otimize e Entregue Soluções SQL com Confiança Date: July 30, 12:00 PM Host: Brendell Silva Gomes; Eda Oliviera Get Certified SQL+AI (DP-800): Leve IA para o SQL com Embeddings, Busca e RAG Date: August 4, 12:00 PM Host: Luis Gustavo Nascimento Serra; Thiago Zavaschi Back to top French Study Group: Building the Microsoft Fabric Analytics Foundation (French | Virtual) Date: July 18, 2026 Host: Data & AI France Study Group Track: DP-600 | Location: Virtual Study Group: Prepare data with Power BI desktop and Power Query (French | Virtual) Date: July 25, 2026 Host: Data & AI France Study Group Track: PL-300 | Location: Virtual Study Group: Designing and Optimizing Semantic Models in Microsoft Fabric (French | Virtual) Date: July 25, 2026 Host: Data & AI France Study Group Track: DP-600 | Location: Virtual Study Group: Designing Modern SQL Database Solutions (French | Virtual) Date: July 30, 2026 Host: Data & AI France Study Group Track: DP-800 | Location: Virtual Study Group: Model data with Power BI Desktop (French | Virtual) Date: August 1, 2026 Host: Data & AI France Study Group Track: PL-300 | Location: Virtual Study Group: Building Enterprise Reports, Governance and End-to-End Analytics (French | Virtual) Date: August 1, 2026 Host: Data & AI France Study Group Track: DP-600 | Location: Virtual Study Group: Ingesting and Managing Data with Microsoft Fabric (French | Virtual) Date: August 1, 2026 Host: Data & AI France Study Group Track: DP-700 | Location: Virtual Study Group: Visualize, secure and deploy data on the Power BI service (French | Virtual) Date: August 2, 2026 Host: Data & AI France Study Group Track: PL-300 | Location: Virtual Study Group: Transforming and Engineering Data at Scale (French | Virtual) Date: August 8, 2026 Host: Data & AI France Study Group Track: DP-700 | Location: Virtual Study Group: Developing and Querying SQL Databases (French | Virtual) Date: August 8, 2026 Host: Data & AI France Study Group Track: DP-800 | Location: Virtual Data & IA sous contrôle - Meetup MTG:Bordeaux Juillet 2026 - Data Days Edition Date: July 2, 9:30 AM Host: Youva Gharout, Iuliia Mazur, Pierre Chaumont, Xavier Noya, Christian Bonnaud, Alexandre Nédélec From rows to reasoning: Designing databases for AI apps and agents - Morocco Data Days Edition, Date: July 30, 11:00 AM Host: ANAS BELABBES Back to top Japanese / 日本語 Study Group: DP 600 Session 1 Date: July 8, 2026 Host: Japan Microsoft Data Platform User Group Track: DP-600 | Location: Virtual Study Group: DP 700 Session 1 Date: July 9, 2026 Host: Japan Microsoft Data Platform User Group Track: DP-700 | Location: Virtual Study Group: DP 700 Session 2 Date: July 15, 2026 Host: Japan Microsoft Data Platform User Group Track: DP-700 | Location: Virtual Study Group: DP 600 Session 2 Date: July 16, 2026 Host: Japan Microsoft Data Platform User Group Track: DP-600 | Location: Virtual Study Group: DP 700 Session 3 Date: July 18, 2026 Host: Japan Microsoft Data Platform User Group Track: DP-700 | Location: Virtual Study Group: DP 700 Session 4 Date: July 20, 2026 Host: Japan Microsoft Data Platform User Group Track: DP-700 | Location: Virtual Study Group: DP 600 Session 3 Date: July 22, 2026 Host: Japan Microsoft Data Platform User Group Track: DP-600 | Location: Virtual Study Group: DP 600 Session 4 Date: July 29, 2026 Host: Japan Microsoft Data Platform User Group Track: DP-600 | Location: Virtual Back to top Hindi Road to Microsoft Data Days Date: June 15, 05:30 AM Host: Aman Jindal Prepare for the Microsoft Data Days Date: June 22, 5 am Host: Aman Jindal DP 700 Hindi- Microsoft Fabric Training | Episode 1: Fabric Overview, Domains, Workspaces & OneLake Date: July 19, 06:30 PM Host: Amit Chandak DP 700 Hindi- Microsoft Fabric Training | Episode 2: Lakehouse, Warehouse & T-SQL Date: July 20, 06:30 PM Host: Amit Chandak DP 700 Hindi- Microsoft Fabric Training | Episode 3: Lakehouse with Spark SQL Date: July 21, 06:30 PM Host: Amit Chandak DP 700 Hindi- Microsoft Fabric Training | Episode 4: Dataflow Gen2 End-to-End Date: July 22, 06:30 PM Host: Amit Chandak DP 700 Hindi- Microsoft Fabric Training | Episode 5: PySpark Notebooks for Data Engineering Date: July 23, 06:30 PM Host: Amit Chandak DP 700 Hindi- Microsoft Fabric Training | Episode 6: Data Pipelines, Scheduling & OneLake Shortcuts Date: July 26, 06:30 PM Host: Amit Chandak DP 700 Hindi- Microsoft Fabric Training | Episode 7: Real-Time Analytics, Eventstream, Eventhouse & KQL Date: July 27, 06:30 PM Host: Amit Chandak DP 700 Hindi- Microsoft Fabric Training | Episode 8: Direct Lake Semantic Models & Power BI Performance Date: July 28, 06:30 PM Host: Amit Chandak DP 700 Hindi- Microsoft Fabric Training | Episode 9: Mirroring, Databases, Composite Models & Data Agents Date: July 29, 06:30 PM Host: Amit Chandak DP 700 Hindi- Microsoft Fabric Training | Episode 10: End-to-End Fabric Project & DP-700 Exam Preparation Date: July 30, 06:30 PM Host: Amit Chandak Back to top103KViews15likes46CommentsSkills for Fabric in practice: tune them, write your own, close the synonyms gap (Part 2 of 2)
How to use Microsoft’s Skills for Fabric day to day, tune them to your team’s standards without forking them, and write your own. Then a full walkthrough of a new skill that adds Q&A and data-agent synonyms to a Power BI semantic model, the one AI-readiness setting that neither the Power BI MCP server nor the official skills will touch. Tested end to end in Power BI Desktop.139Views0likes0CommentsPower BI MCP, Fabric MCP and Skills for Fabric in VS Code: setup and limits (Part 1 of 2)
A practical setup guide for Power BI and Fabric MCP servers and Microsoft’s Skills for Fabric in VS Code, covering the extension route, the remote servers, all four ways to install the skills (including the ZIP download and the trap that comes with it), and an honest list of what these tools can and can’t do. Checked against Skills for Fabric v0.3.18.988Views1like0CommentsMicrosoft Fabric Data Agent Security: What Actually Protects Your Data?
Most Microsoft Fabric Data Agent demos begin the same way: connect a semantic model, Lakehouse, or Warehouse, add some instructions, ask a natural-language question, and get an answer. That's the exciting part. But the moment we move from a demo to a real enterprise implementation, the questions change: Whose identity is actually querying the data? Does sharing the Data Agent also share the underlying data? Can the agent bypass RLS or CLS? Does Object-Level Security still protect metadata? What happens if the same data is reachable through multiple query paths? These are the questions we set out to answer during our Fabric Data Agent POC. The most important principle that came out of it was surprisingly simple: The Fabric Data Agent should not be your security layer. Your data platform should be. That one principle makes the rest of the architecture much easier to reason about. A Data Agent Does Not Get Unlimited Access to Fabric When someone uses a Fabric Data Agent directly in Fabric, the interaction normally runs in the context of the authenticated Microsoft Entra ID user. Fabric manages the underlying Azure OpenAI service, so users don't need to supply an OpenAI API key, and the Data Agent doesn't suddenly receive unrestricted access to every table in the workspace. When the agent needs data, it generates the appropriate SQL, DAX, or KQL and queries the underlying source using the permissions available to the calling identity. Fig. Security Path The important part is the middle: the agent generates the query, but the data platform decides whether that query can return the requested data. That is exactly where enterprise security should live. Sharing a Data Agent Does Not Mean Sharing the Data There are effectively two authorization checks: Can the user access the Data Agent itself? Can the user access the underlying data source? Fig. Two Authorization Checks Fabric doesn't elevate a user's access just because a Data Agent has been shared with them. Users still need the applicable permissions on the underlying source. Queries that touch data they can't access can fail authorization or return no data, depending on the source and its security model. This separation is critical for enterprise deployments: you can distribute one common analytical assistant while still preserving different data entitlements for Finance, Sales, Operations, or regional teams. Semantic Models Have an Interesting Permission Model Power BI semantic models are especially interesting here. Microsoft documents that a consumer can query a semantic model through a Data Agent with Read permission. They don't need: Workspace Member Workspace Contributor Build permission Write permission simply to ask questions through the Data Agent. (Build or Write permissions remain relevant when someone needs to modify the model or use capabilities that change its AI configuration, such as Prep for AI.) From a least-privilege perspective, this is a very useful improvement. Instead of granting broad workspace or semantic-model permissions just because somebody needs conversational analytics, you can grant only the narrower access required for consumption. What Happens to RLS and CLS? This is probably the security question that comes up most often around conversational analytics: "If the AI generates the query, can it somehow bypass RLS?" For supported Data Agent interactions, Microsoft explicitly documents that existing user permissions continue to apply, including Row-Level Security (RLS) and Column-Level Security (CLS). Fig. RLS — One Agent Three Users All three users can use the same published Data Agent, yet the semantic model can return different populations because the security context belongs to the user. The agent doesn't need instructions like: If User = John, only show Europe. In fact, that would be the wrong way to implement security. The model should enforce the rule. The Data Agent should operate inside it. What About OLS? We tested Object-Level Security (OLS) rather than assuming how the Data Agent would behave. In our model, we applied OLS to Customer[Company Name] in the Power BI semantic model and tested the Data Agent using the restricted identity. We then asked: "Show Total Sales by Company Name." Fig. Data Agent does not expose the OLS-protected Company Name field. The Data Agent responded that the model does not contain a Company Name field and suggested Customer Name instead. Fig. Run Steps show the semantic model was analyzed, but the protected field was unavailable to the agent. That was the key result. Company Name still physically exists in the semantic model, but for the OLS-restricted user, the Data Agent behaved as though the field didn't exist. In our tested path, OLS protected not only the data but also the object's metadata. Our test confirmed OLS enforcement for the tested Fabric Data Agent → Power BI semantic model path, including metadata hiding. There's an important qualification: this remains query-path specific. If the same underlying data is also exposed through a Lakehouse, Warehouse, SQL endpoint, or another source, that route needs its own security controls. Fig. OLS security Security Is Specific to the Query Path This is one of the broader lessons from our POC. Imagine the same business data can be reached through: Power BI Semantic Model │ └── RLS / CLS / OLS Lakehouse │ └── OneLake / item security Warehouse │ └── SQL / OneLake permissions Securing one route doesn't automatically prove that all the others are equally secure. The semantic model could correctly restrict a user's data through RLS or OLS while the same user has broader access to the underlying Lakehouse. If both are available to the Data Agent, the overall architecture may still be over-permissioned. So the enterprise question isn't simply "Does my semantic model have RLS?" It's: Is every query path available to this Data Agent secured for this identity? Fig. Security Is Specific to the Query Path AI Instructions Are Not Security Policies Consider an instruction like: Never display employee salary information. That may be useful behavioral guidance, but it is not an authorization boundary. A user could phrase the question differently. The orchestration could change. A future runtime could interpret an instruction differently. The instruction could be accidentally edited or removed. The secure implementation puts the control in the data platform (RLS/CLS/OLS and source permissions), with instructions layered on top for behavior. Fig. AI Instructions Are Not Security Policies The distinction is simple: Instructions determine how the agent should behave. Permissions determine what the agent is allowed to see. Never reverse those responsibilities. Reduce the Agent's Data Surface Security isn't only about identity — it's also about how much data you expose to the agent in the first place. When configuring a Data Agent, creators select relevant sources, tables, and schema context. For an enterprise Finance Data Agent, exposing: Dim Date Dim Account Dim Cost Center Fact Actuals Fact Forecast is usually better than exposing hundreds of unrelated HR, customer, and operational tables. It helps in two ways: it reduces unnecessary exposure, and it improves query generation because the agent has fewer irrelevant paths to reason through. But schema selection still isn't authorization. Fig. Three Boundaries Data Agent Querying Is Read-Oriented — With an Important Nuance The normal Data Agent source-query path is designed for analytical retrieval. Its SQL, DAX, and KQL tools retrieve and analyze data rather than modify the underlying source. So a prompt like: Delete all customers with zero revenue. doesn't turn the Data Agent into a transactional database administrator. That lowers risk significantly compared with giving an autonomous agent unrestricted write-capable database tools. But there's a nuance. Code Interpreter Changes the Execution Surface Fabric Data Agent can optionally use Code Interpreter (currently in Preview), which generates and executes Python in a Microsoft-managed sandbox for tasks such as statistics, advanced calculations, data transformation, visualization, and analytical processing. That does not make the underlying source write-enabled. A better mental model: Underlying Source │ │ Governed read ▼ Fabric Data Agent │ ▼ Sandboxed Python │ ▼ Calculated / visualized result Fig. Code Interpreter Surface Source querying remains governed and read-oriented, while Code Interpreter adds an additional analytical execution environment. That extra execution surface should be reviewed deliberately, especially when considering Preview capabilities for sensitive production workloads. Discussed in Part 2 with detailed analysis. Check Out. What We Took Away From the Security POC The cleanest security model for us became: IDENTITY Microsoft Entra ID ↓ AUTHORIZATION Fabric item + source permissions ↓ DATA SECURITY RLS / CLS / OLS / OneLake / SQL ↓ QUERY-PATH SECURITY Validate each available source ↓ AI SCOPE Selected schema ↓ FABRIC DATA AGENT The Data Agent sits on top of the security architecture. It should not replace it. That's the difference between building an impressive AI demo and building an enterprise analytical agent. Fig. Security Architecture Security Is Only the First Layer Once the basic security model is in place, a new set of questions appears: Who can modify the agent? Which runtime should production use? How do we test changes? What happens with Code Interpreter? How should service principals be handled? Where is conversation history stored? What happens when the agent is used from Copilot Studio, Foundry, MCP, or a custom application? Those are no longer just security questions — they're governance questions. Next: Part 2 — Governance, From POC to Production Part 2 focuses on how a production Data Agent should be changed, tested, released, consumed, and governed — including identity models, lifecycle management, evaluation, privacy, data residency, networking, and external consumption: Microsoft Fabric Data Agent Governance: From POC to Production. The central idea remains the same: Do not make the AI responsible for protecting the data. Make the data platform responsible for protecting the data, and make the AI operate inside those boundaries. Click Here to go to Part 2 Related Reading Building a Better Microsoft Fabric Data Agent: Instructions, Visual Policy, and Cost-Aware Design Building and Enriching a Microsoft Fabric Data Agent on a Power BI Semantic Model181Views1like0CommentsFrom Chaos to Clarity: How the Manufacturing Dashboard Helps Everyone Understand the Business
Let's walk through what each page actually shows, and why it matters. Page 1: Customer Insights — "Who are we selling to, and are they happy?" Every business lives or dies by its customers, but it's surprisingly hard to keep track of hundreds of relationships in your head. This page acts like a customer relationship "scoreboard." It shows things like: * How many active customers the business currently has * Which customers are considered healthy (buying regularly, paying on time) versus at risk (going quiet, showing warning signs) * How revenue is spread across different customers and regions — are we relying too heavily on just a few big accounts? Think of it like a doctor's checkup, but for relationships instead of health. If ten customers suddenly go from "healthy" to "at risk," that's a signal to act before they walk away for good — not after the revenue has already dropped and everyone's asking why. Page 2: Production & Supply — "Are we making enough, and can we deliver it?" This is the page for anyone who cares about what's actually happening on the factory floor and getting product out the door. It's less about money and more about operations. Key questions it answers: * How much did we produce this month, and is that on target? * Are shipments going out on time, or are we falling behind on delivery promises? * Is one particular plant underperforming compared to the others? If you're a plant manager, this is likely the first thing you check every morning — before coffee, even. It tells you at a glance whether today is a "business as usual" day or a "we need to fix something now" day. Page 3: Overview — "How's the whole business doing, in 30 seconds?" This is the page built for someone with almost no time to spare — a CEO, an investor, or anyone who just needs the headline numbers without digging through details. At the top sit eight simple cards, each showing one important number and whether it went up or down compared to last month: * Total Revenue — how much money came in * Total Production — how much product was made * Capacity Utilization — how much of the factories' potential is actually being used * Gross Profit — how much money is left after production costs * Supply Fulfillment — how reliably orders are being delivered * Inventory Value — how much stock is sitting in the warehouse * Active Customers — how many customers are currently buying * Overall Operational Efficiency — a single score summarizing how smoothly everything is running Below that, charts break revenue and production down by month, by plant, and by region — so if a number drops, you don't just see that it dropped, you can immediately see where. Was it one plant having a bad month, or a slowdown across an entire region? There's also a simple "Alerts & Insights" section that puts the numbers into plain words — things like "Supply on track: fulfillment is 94% and improving" — so nobody has to guess what a chart is trying to tell them. Page 4: Inventory & Working Capital — "Do we have too much stock, or too little?" This page tackles a balancing act every manufacturing business faces. Keep too much inventory sitting around, and you're tying up cash and warehouse space that could be used elsewhere. Keep too little, and you risk running out of product right when a customer needs it — losing sales and trust. This page shows: * Total Inventory Value — how much money is currently tied up in stock * Inventory Turnover — how quickly that stock is being sold and replaced (a higher number generally means things are moving efficiently) * Days Inventory Outstanding — roughly how many days' worth of stock is sitting around unused * Raw Material vs. Finished Goods Stock — how much is still waiting to be turned into product versus ready to ship * Slow-Moving Inventory — stock that isn't selling and may need attention * Stockout Risk — a warning flag for items at risk of running out * Inventory Accuracy — how well the recorded stock counts match what's physically in the warehouse There's even a detailed table listing specific materials by name, plant, and status (like "Slow-Moving" or "Healthy"), so instead of a vague warning, someone gets a precise to-do list of exactly what needs a closer look. Why This Approach Works for Everyone The real magic of this dashboard isn't any single chart — it's the consistency. Every page follows the same basic structure: 1. Filters at the top (date range, region, plant, product category) so anyone can narrow the view to exactly what matters to them 2. A handful of key numbers, shown as simple cards with an up or down arrow — no complicated formulas to interpret 3. A plain-language "Alerts & Insights" section that explains, in a sentence or two, what changed and why it matters That means a machine operator, a plant manager, a customer success rep, and a CEO can all open the same dashboard and immediately find what's relevant to them — no translation needed, no waiting for someone else to "run the numbers." In a business with as many moving parts as manufacturing, that kind of shared clarity isn't a luxury. It's what keeps everyone — from the shop floor to the boardroom — pointed in the same direction.74Views0likes0CommentsLakehouse vs. Warehouse in Microsoft Fabric: Which One Should You Actually Use?
If you're new to Microsoft Fabric, you've probably hit this wall already: you go to create an item, and Fabric hands you two very similar-sounding options - Lakehouse and Warehouse. Both store tabular data in Delta format in OneLake and provide SQL access, but they offer different development and transactional experiences. Both let you query with SQL.Fabric presents both as analytical data-store options, and their capabilities overlap enough that the choice is not always obvious. So which one do you pick? Short answer: it depends on who's writing the queries and what shape your data is in. Long answer: keep reading — and try the quick self-check below before you scroll to the recommendation. 60-Second Self-Check Answer these three questions honestly before you create your next Fabric item: 1. Who will write the transformation logic? - A) Python/Spark notebooks, data engineers comfortable with PySpark - B) SQL analysts and BI developers who live in T-SQL 2. What does your source data look like? - A) Mixed — JSON, Parquet, CSV, streaming events, semi-structured - B) Mostly clean, structured, relational-shaped data 3. What's the end consumption pattern? - A) A mix of ML, notebooks, ad-hoc exploration, and reporting - B) Primarily Power BI reports and governed semantic models Mostly A's → Lean Lakehouse. Mostly B's → Lean Warehouse. Mixed bag? → You're not alone — see the "Can I use both?" section below. Lakehouse: The Flexible One A Lakehouse stores data as files (Delta Parquet) in OneLake, and gives you two ways to work with it: - Notebooks (PySpark, Spark SQL) for engineers who want full control - A SQL analytics endpoint that auto-generates so SQL folks can still query the same tables Pick Lakehouse when: - Your data arrives messy, semi-structured, or in large volumes that benefit from Spark's distributed processing - Your team already thinks in notebooks and data science workflows - You want schema flexibility - Delta tables support schema enforcement and controlled schema evolution, offering flexibility while preserving data reliability. - You're building a medallion architecture (bronze → silver → gold) and need engineering muscle at the bronze/silver layers Watch out for: - The SQL endpoint is read-only - The SQL analytics endpoint is read-only for Lakehouse table data, so it does not support INSERT, UPDATE, or DELETE against those Delta tables. Modify or load the data through Spark or another supported ingestion and transformation experience. You can still create supported SQL objects such as views, functions, and stored procedures in the endpoint. - Fabric provides automatic Delta table optimizations, but advanced workloads may still benefit from deliberate file sizing, data layout, partitioning, or optimization strategies. (OPTIMIZE, V-Order, partitioning) python #Typical Lakehouse bronze-to-silver pattern in a notebook df = spark.read.format("json").load("Files/raw/events/") df_clean = df.dropDuplicates().withColumn("load_date", current_date()) df_clean.write.format("delta").mode("overwrite").saveAsTable("silver_events") Python from pyspark.sql.functions import current_date() df = spark.read.format("json").load("Files/raw/events/") df_clean = df.dropDuplicates().withColumn("load_date", current_date()) df_clean.write.format("delta").mode("overwrite") saveAsTable("silver_events") Warehouse: The Familiar One Fabric Warehouse provides a rich T-SQL-first data warehousing experience. — think of it as a cloud data warehouse that happens to store data in OneLake under the hood. Pick Warehouse when: - Your team's primary skill is T-SQL, not Spark/Python - You need full DML (`INSERT`, `UPDATE`, `DELETE`, `MERGE`) with transactional guarantees - You're modeling a governed, relational structure — star schemas, stored procedures, views - You want a more traditional data-warehouse development experience (cross-database queries, You want a familiar relational warehouse development experience with T-SQL, views, stored procedures, and support for compatible SQL tools.) Watch out for: - Less flexible with wildly semi-structured or streaming-first data — you'll typically land that in a Lakehouse first, then move it in Warehouse is designed primarily for T-SQL rather than Spark-native development. If Spark is central to your transformation logic, Lakehouse is usually the more natural starting point. sql -- Typical Warehouse transformation pattern MERGE INTO dbo.DimCustomer AS target USING staging.CustomerUpdates AS source ON target.CustomerID = source.CustomerID WHEN MATCHED THEN UPDATE SET target.Email = source.Email WHEN NOT MATCHED THEN INSERT (CustomerID, Email) VALUES (source.CustomerID, source.Email); Can I Use Both? Yes - and honestly, A supported and commonly discussed architecture is to use a Lakehouse for engineering-oriented layers and a Warehouse for a curated relational serving layer. do exactly this: - Lakehouse for bronze/silver ingestion and heavy transformation (Spark does the messy work) - Warehouse for the polished gold layer that analysts and Power BI consume with familiar T-SQL Both use OneLake, and Fabric supports patterns such as shortcuts and cross-database queries that can reduce or avoid unnecessary data duplication. If you physically load curated data into separate Warehouse tables, however, that creates another stored representation. Try It Yourself Before your next project kickoff, run this checklist with your team: [ ] Who owns the transformation code - engineers or SQL analysts? [ ] Does the source data need Spark-level flexibility, or is it already relational? [ ] Do you need multi-table transactions and T-SQL DML, or can table changes be implemented through Spark and Delta operations? [ ] Could a hybrid (Lakehouse → Warehouse) actually be the real answer? No data to test with yet? A quick way to practice both patterns above is to grab a free sample dataset (or a ready-made dashboard layout to reverse-engineer) from a site like Docynx. Over to you I'd love to hear how your team decided: Did you go Lakehouse, Warehouse, or both? What tipped the decision — team skill set, data shape, or something else entirely? Drop your setup in the comments — especially if you've got a "we picked wrong and had to migrate" story, those are always the most useful ones.154Views0likes0CommentsStop Hosting Report Images Publicly Just to Show Them in Power BI
The problem- showing an image meant making it public Say you're building a product catalog report, and you want each row in a table to show a small product photo next to its name and price. Power BI has always supported this through an image URL field you give it a web address, and it displays the image. Simple enough, until you think about where that image actually has to live. For Power BI to load an image from a URL, that URL generally needs to be publicly reachable on the internet. Which means product photos, employee headshots, or internal logos things that often shouldn't be sitting on a public website at all - ended up hosted somewhere publicly accessible anyway, purely so a report could display them. For a genuinely public product catalog, that might be fine. But for an internal HR dashboard showing employee photos, or an internal parts catalog with proprietary product images, publishing those images to a public URL just to satisfy a formatting requirement was never a comfortable trade-off. The alternative some people used embedding images as base64 text directly in the data - avoided the public hosting problem but came with its own cost =base64-encoded images are large blocks of text, and packing many of them into a semantic model bloats its size and slows things down, especially at any real scale. What changed In the August 2026 update, Power BI added support for using image files stored in OneLake directly as an image source - anywhere Power BI already accepts an image URL. This includes the image visual itself, table and matrix cells, the card visual, and button and list slicers. OneLake is Fabric's underlying storage layer think of it as your organization's own secure file storage that lives inside your Fabric tenant, not on the public internet. The important shift here is that your images now stay inside that same secure boundary as the rest of your data. Nothing has to be exposed publicly, and nothing has to be crammed into your model as bloated encoded text. A real example Picture that same product catalog report, but this time for an internal parts catalog your company doesn't want publicly visible - only your own staff should see these product images. 1. Upload your product photos to a Lakehouse in your Fabric workspace, the same way you might upload any other file to OneLake storage. 2. In your semantic model, add a column that holds the OneLake path to each product's image, matched to the right row (similar to how you'd normally store a web image URL). 3. In your table or matrix visual, set that column's data category to Image URL, the same step you'd already take for a normal web-hosted image. 4. Power BI now loads each product's photo directly from OneLake, displayed right in the table - with no image ever needing to be publicly hosted, and no bloated encoded text sitting in your model. The report looks and behaves exactly the way it would with any other image URL - the only thing that's changed is where the image actually lives, and who can reach it. Where this helps the most - Internal catalogs and HR-style reports, where showing a photo matter for usability, but the image itself shouldn't be public - Organizations with strict data governance requirements, where "the image is on a public URL" was never going to pass an internal security review - Reports with a lot of images, where base64 embedding was making the model uncomfortably large What to keep in mind This requires your images to actually be organized in a Lakehouse within your Fabric workspace first, so it's a bit more setup than just pasting a public URL - worth it specifically when keeping images private and secure actually matters for your use case. For a genuinely public-facing report where the images are meant to be seen by anyone anyway, a normal public image URL still works fine and doesn't need this extra step. If you've been quietly uncomfortable about hosting internal images publicly just so a report could display them, this is worth switching to the next time you build a report that needs pictures. Thanks for reading! Connect with me on: LinkedIn | Data With Pankaj - YouTube94Views0likes0Comments