analysis services
108 TopicsPower BI November 2025 Feature Summary
The November 2025 Power BI feature update brings several important announcements and enhancements across the platform. Key highlights include the deprecation of R and Python visuals in the Embed for your customers solution, significant updates to Copilot and AI capabilities—such as the standalone Copilot in Power BI mobile apps (Preview) and improvements to Verified Answers—and new options for reporting, modeling, and data connectivity. Users will also notice advancements in visualizations, with features like automatically expanding matrix columns and a generally available Card visual, as well as expanded support for Spark and Impala connectors and enhancements to image visuals and the OneLake Catalog. This summary provides an overview of these impactful changes to help you leverage the latest innovations in Power BI. Contents Events and Announcements Fabric Data Days is on now! FabCon is back from March 16-20, 2026, in Atlanta, GA Copilot and AI Ask anything, anywhere with Standalone Copilot in Power BI mobile apps (Preview) Updates to the standalone Copilot in Power BI Improvements to Verified Answers Remote Power BI Model Context Protocol Server for chat with your Data (Preview) Reporting Automatically expand matrix columns to fill available space Card visual (Generally Available) Enhancing Image visuals with styling, states, and more OneLake Catalog now supports user data functions for Translytical task flows (Preview) App Copilot (Preview) Modeling Power BI Modeling MCP Server (Preview) Semantic Model Version History (Generally Available) TMDL Visual Studio Code Extension (Generally Available) Data connectivity Spark and Impala Connectors (Generally Available) Visualizations Activity Gauge by Powerviz Decomposition Tree – All Expanding Dynamic chart legends in Zebra BI Charts Drill Down Bubble PRO by ZoomCharts Power BI Theme Generator Power Gantt Chart by Nova Silva Turn any image into data insights with Synoptic Panel by OKVIZ Announcing deprecation of R and Python visuals in Embed for your customers solution https://youtu.be/pRFeQWzUhn0 Events and Announcements Fabric Data Days is on now! Take your Power BI skills to the next level with live learning sessions, QuickViz challenges, discount vouchers for exam PL-300 and DP-600, and community connection. See what’s happening this week. FabCon is back from March 16-20, 2026, in Atlanta, GA Join us for the ultimate Power BI, Microsoft Fabric SQL, Real-Time Intelligence, AI, and Databases community-led event. The third annual FabCon Americas will feature sessions from your favorite Microsoft and community speakers, keynotes, more opportunities to Ask the Experts for 1:1 support, an engaging community lounge with opportunities to network and connect with your peers, a dedicated partner pre-day, a packed expo hall, Power Hour, Data Viz World Championship, and a can’t-miss attendee party at the Georgia Aquarium. Register with code FABCOMM to save $200. Copilot and AI Ask anything, anywhere with Standalone Copilot in Power BI mobile apps (Preview) In the coming app release, we are enabling a new standalone Copilot experience straight from your mobile homepage. A complete chat experience that allows you to ask any question about your data and get instance insights from Copilot, anytime, anywhere. This experience will be available in the app stores in the upcoming weeks. To start chatting with your data, use the new Copilot button on your home page. This will open a chat experience where you can type or dictate (IOS only) your question and Copilot will take it from there. When you ask about a metric or a KPI, most chances that Copilot will generate a visual for you in addition to answering your question with text. Tap on the visual to open a pane and interact with the generated visual. Tap on the citation or reference to learn what content Copilot used for grounding its answer. You can also open the report from there as well. If you want to share insight discovered in the chat with others, select the ‘Share’ button from the visual pane, or the copy from the chat. The iOS apps (iPhone and iPad) also support dictation – so you can use voice interaction to ask Copilot questions. Use the mic icon in the chat box and Copilot will start listening, waiting for your questions. With this new standalone Copilot experience, you can now easily get quick answers and stay on top of things by chatting with your data directly from your mobile. Updates to the standalone Copilot in Power BI The standalone Copilot in Power BI, also known as ‘chat with your data’, is now even easier to use. Previously, Copilot asked users to choose from a list of possible data sources before answering questions. Now, it handles that step automatically: if it finds a strong match, it selects it in the background and goes straight to the answer. When more context is needed, Copilot will ask simple clarifying questions to find the right source. Although the additional reasoning may require a few more seconds, obtaining an accurate response from a reliable source justifies the brief wait. Additionally, in response to search questions like ‘Find reports about sales’, you’ll now see a much simpler text-based list of items. New entry points right from the home page By late November, you’ll be able to access Copilot right on your home page, making it easier than ever to find what you’re looking for or ask ad hoc questions about your data! Simply type your question and hit enter. If you preferred the old home page, no problem. Switch back using the layout drop-down. New suggested prompts for recently opened items - Copilot now offers helpful prompt suggestions related to recently opened items to help users get started. Improved experience attaching items to your question - Want to add a report, or other items, to your question? Items are now sorted by recency and easily filtered by item type in a slick new design that aligns with other Copilot experiences across Microsoft. Experiment with all the new updates and let us know what you think! Improvements to the Report Copilot We’ve upgraded the Report Copilot experience in Power BI, making it easier than ever to create, edit, and refine beautiful, data-rich reports with the help of AI. With this update, Copilot in Power BI not only helps you create entire report pages in seconds but now also gives you more control, flexibility, and visual intelligence than ever before. The new Report Copilot experience is available now in the Power BI service and Power BI Desktop. Smarter, More Capable Visual Creation The new Copilot understands your data and intent more deeply than ever. Just tell it what you want to create, and watch your ideas come to life instantly. Better visual recommendations: Copilot now selects the most appropriate visuals for your data automatically. Expanded Visual Library: Copilot supports a wider range of visuals, giving you more options to present insights into exactly how you envision them. Improved context awareness: When you describe what you want to see, Copilot now understands more nuanced instructions, producing more accurate and insightful results. To learn more about creating and modifying reports with Copilot, refer to the Create reports in the Power BI service with Copilot documentation. Improvements to Verified Answers This update enhances how verified answers inherit the state of your visual, expands filtering flexibility, and delivers more reliable results. What’s New? Verified answers now inherit and reflect the entire visual state: Previously, verified answers only captured filter states active at the time of creation. With this update, they now inherit the entire visual state, including slicers. This change directly addresses one of the most common pieces of feedback we received. Report slicers impacting the visual are being inherited and shown in the verified answer. In addition to slicers, we will support additional visual states: Slicer selections Field parameter choices Cross filters and cross highlights Drill-through filters Expanded Filtering Capabilities for Authors: There is now more flexibility when configuring verified answers. The limit for predefined filter permutations has increased from 3 to 10, enabling more complex and nuanced configurations. From a consumption perspective, we see that most prompt requests naturally use between one and three filters. ‘Show total sales for the region 1 in Q1’. ‘What is the usage of Product 1 in Country 1 during Month 1’. ‘Show average satisfaction scores by City 1 and segment 1’. Still, some business questions require deeper combinations of filters, and this expanded limit ensures verified answers can handle even the most detailed reporting scenarios. Improved Filtering Reliability: What are more filters, if they aren’t applied consistently? We’ve made substantial improvements under the hood to how we match user prompts in Copilot to verified answers and the appropriate filters. Verified Answers now interpret and apply filters more accurately, reducing mismatches between what users ask and what’s displayed, and ensuring filters are included when they should be. New card visual support: We have enabled the highly requested new card visual that you can now set as verified answers, the new card visual and Azure maps will be supported in Verified Answers creation and consumption. Why it Matters: These updates make verified answers feel native to your Copilot consumption experiences, seamlessly adapting to slicers, filters, interactions, and drill-through actions that users have come to expect from their visuals. Consumers will get answers that truly reflect the context of their analysis. The result, faster, more accurate insights, and a smoother path from question to confidence, and better grounding for the rest of your Copilot experience to learn from. For more info on how these updates work, refer to the Prepare Your Data for AI - Verified Answers documentation. Remote Power BI Model Context Protocol Server for chat with your Data (Preview) Available soon, the remote Model Context Protocol (MCP) server for Power BI provides agents and MCP clients with tools to enable you to chat with your data, remotely, all authenticated with Microsoft Entra ID. This means you’ll be able to create powerful, custom agents on top of data that lives in your semantic models. The server has three tools that give your agents the ability to reason over your data, and respond to a user’s prompts: Get Semantic Model Schema: This tool provides the agent with the structure of the semantic model. Generate Query: This tool uses Copilot in Power BI to generate a DAX query based on the user’s input and best practices. The agent can then iterate on this query if it chooses or simply proceeds with the provided query. Execute Query: This tool gives the agent a powerful mechanism to query the semantic model to respond to any question a user asks. These tools can be implemented by any application that hosts an MCP client, such as Visual Studio Code. Other, non-Microsoft MCP clients can be supported with Service Principal authentication, backed by Azure Entra ID. The remote MCP Server for Power BI enables you to easily build the next generation of agents on top of the data your organization has already invested so heavily in. For more information on the remote MCP server for Power BI, for more information, refer to the documentation. Reporting Automatically expand matrix columns to fill available space Last month, tables got the Grow to fit option expanding columns to fill the available space. This month, we are enabling the same option on the matrix visual. As a reminder: with the Grow to fit option, any extra space in the visual is evenly distributed across existing columns when the total column width is smaller than the visual container, which eliminates the need to do manual resizing to fill the gaps. If your matrix isn’t using the full visual width, you can manually resize columns or use the new ‘Grow to fit’ option. For example, this matrix doesn’t fully utilize the available space: Navigate to the format pane under Column headers > Options, toggle Auto-size width to ‘On’, and set ‘Resize behavior’ to ‘Grow to fit’. Instantly, your matrix expands to make full use of the available space. The additional available space will be distributed across the columns: In last month’s release we also had an overenthusiastic horizontal scrollbar when using this option. This has now been corrected. The horizontal scrollbar should not show unless there isn’t enough space to fit the content. Learn more about Grow to fit in the table and matrix documentation. Card visual (Generally Available) The new Card visual brings a modern and visually engaging way to highlight key metrics in your reports, now with full support for hero images and a consistent formatting control experience across visuals for an intuitive experience. Whether you’re highlighting a product, showcasing a team, or featuring a brand logo, the new hero image feature empowers you to create visually rich reports going far beyond simple data points. The Card visual also introduces a dynamic collage layout, letting you highlight one section while the other two share the remaining space. Try adding the new Card visual to your next report and experience the difference for yourself. For more details and step-by-step instructions, check out the official documentation at Create a (new) card visual in Power BI documentation. Enhancing Image visuals with styling, states, and more We’re excited to introduce enhancements to the Image visual, bringing it closer to the level of interactivity and design flexibility you’ve come to expect. Create more engaging experiences by customizing image visuals based on user interaction states such as default, hover, and pressed states of images. Alongside state customization, we’ve added formatting options to give you full control over the look and feel of your image visuals. Such as background, border, and shape. These enhancements make it easier than ever to integrate images seamlessly into your report layout. We’ve also expanded the sources, fit and effects section, with more options for image source, including upload, URL, or from a data field. You no longer need to delete the visual to update its image. With the latest update, you can easily change the image source or swap the image itself, making edits faster and more flexible. We hope these updates to the Image visual inspire you to get creative with your report designs. Whether adding a splash of branding, building intuitive navigation, or simply making your reports more engaging, the new features give you the flexibility to do it all. To learn more about the image visual, visit our documentation: Create an Image Visual in Power BI. OneLake Catalog now supports user data functions for Translytical task flows (Preview) The Fabric user data function selection experience for Translytical task flows has been improved. You can now use the OneLake catalog to discover and select the user data function that you want your action button to invoke. With the OneLake Catalog you can: Browse all available User data functions in one place. Search by keyword for quick access. View details like owner, location and sensitivity label Filter by My Functions or Endorsed in your org for confidence and governance. This new experience is available when selecting the function for Data function actions. Select a button, open the format pane, enable Action, and under Data function select the fx button. Learn more about Translytical task flows in Power BI and how Fabric user data functions can take your report beyond just showing data at Understand translytical task flows. App Copilot (Preview) Your app users now can chat with your curated data within the context of an app. An app-scoped Copilot means users can search for reports within an app, ask questions, and receive answers based on the reports in that app. App Copilot is a separate complement to report-scoped Copilot already available on each report viewed in an app. To learn more, refer to the Power BI app Copilot: AI scoped to the curated content in an app (Preview) blog post. Modeling Power BI Modeling MCP Server (Preview) The Model Context Protocol (MCP) is an open standard that enables AI agents to securely connect with tools and services. The Power BI Modeling MCP Server brings Power BI semantic modeling capabilities to your AI agents through a local MCP server. This allows developers and AI applications to interact with Power BI models in entirely new ways, from using natural language to execute modeling changes to autonomous AI agentic development workflows. Capabilities Build and modify semantic models with natural language: Create or update tables, columns, measures, relationships and much more simply by describing what you need. Perform bulk modeling operations at scale: Rename, refactor, translate, or document hundreds of model objects in seconds. Apply modeling best practices: Easily evaluate and implement modeling best practices. Leverage agentic workflows: Work with Power BI Project files and TMDL code, enabling AI agents to autonomously plan and execute complex modeling tasks. Query and validate DAX expressions: Run DAX queries or validate measures directly through AI-driven workflows. Start by installing the Power BI Modeling MCP Server Visual Studio Code extension to enable Power BI semantic modeling capabilities in GitHub Copilot. Whether you’re using GitHub Copilot or another AI-powered assistant, the Power BI Modeling MCP Server unlocks a new era of intelligent, automated, and high-efficiency semantic model development. For additional information and to provide feedback, refer to Power BI Modeling MCP on GitHub. Semantic Model Version History (Generally Available) With version history, you can confidently make changes to your semantic models—whether you’re editing in the web or live editing Direct Lake semantic models in Desktop—knowing you can restore earlier versions and recover from critical mistakes. Versions are automatically captured in an Office-like history pane for your live edited semantic models, making it easy to select and restore any previous version. Power BI captures up to five versions for each semantic model that supports version history. Versions are saved automatically when you: Open a semantic model in Editing mode on the web or open a Direct Lake model for live editing in Desktop. Publish or upload a .pbix file. Restore a previous version. You can also manually save a version (with an optional description) from the File menu while editing on the web. Learn more about this capability including limitations in the Use semantic model version history (preview) documentation. TMDL Visual Studio Code Extension (Generally Available) This update brings DAX semantic highlighting support within TMDL documents alongside other enhanced authoring features like Power Query semantic highlighting, breadcrumb navigation, code actions, code formatting, localization, and numerous bug fixes. You can find more details about this latest release in the changelog. The TMDL extension is essential for anyone working with TMDL documents in Power BI Projects (PBIP). It brings modern code experiences to semantic modeling, enabling scalable development of semantic models with the efficiency, flexibility, and AI-powered workflows that today’s data teams expect. Get the TMDL Extension from the Visual Studio Marketplace to enhance your semantic modeling-as-code experience and accelerate your semantic model development today! Screenshot of VSCode Marketplace Feature Highlights DAX support: Improved readability of DAX code within TMDL documents including semantic highlighting, real-time diagnostics, and autocomplete. Power Query support: Autocomplete, diagnostics, syntax highlighting, hover and formatting. Localization: Hover descriptions and code action messages are now displayed in the user’s preferred language, aligning with Visual Studio Code language settings. Code actions: Quick fix and refactoring TMDL code such as duplicated lineage tag or misspelled property. Code navigation: Easily navigate TMDL document objects in a hierarchical view. Code format: Automatically organize TMDL code for enhanced readability and consistency. We value your input and encourage you to share it using vscode-tmdl GitHub repository. Data connectivity Spark and Impala Connectors (Generally Available) We’re thrilled to announce that Implementation 2.0 for the Spark and Impala Connectors is now generally available, powered by the open-source Arrow Database Connectivity (ADBC) driver. This update delivers faster, more secure connectivity for Power BI Desktop, making it easier to analyze and visualize large datasets. How does this improve your Power BI experience? Performance boost: Reduced overhead with no serialization or copying. Security improvements: Memory safety and garbage collection aligned with SDL standards. Seamless integration: Works across Fabric experiences and Power BI Desktop for unified data access. Beginning November 2025, specify [Implementation="2.0"] in your connection settings to utilize these improvements: Spark: ApacheSpark.Tables("http://server.cloudapp.azure.com:10001/cliservice", 2, [BatchSize=null, HierarchicalNavigation=true, Implementation="2.0"]) Impala: Impala.Database("server.cloudapp.azure.com", [Implementation="2.0"]) For further details, please refer to the Spark Connector and Impala Connector documentation. Visualizations Activity Gauge by Powerviz The Activity Gauge is an advanced visual used to measure the progress against a set target or Goal for multiple categories. It is typically presented in the form of a radial bar chart/Gauge, displaying a range of values or percentages. This visual is commonly used for project management, performance tracking, and monitoring Key Performance Indicators (KPIs). Key Features: Gauge Customization: Shape, style, and add icons for a unique design. Targets: Choose from options or use a custom field to set a target. Data Colors: Offers 7 schemes and 30+ color palettes. Smart Labels: Add data and leaf labels that auto-adjust inside or outside the shape for better readability. Center Circle: Customize center circle with text, icons, measures, and images. Interactive Mouseover: Hover for Interactive Info Display. Fill Patterns: Highlight gauges with patterns or upload your own. Conditional Formatting – Create rules based on measure or category rules. Other features included are ranking, annotation, grid view, show condition, and accessibility support. Business Use Cases: Project Management: Track task progress for efficient project oversight. Financial Dashboard: Gain instant insights into key financial metrics. Try Activity Gauge for FREE from AppSource Check out all features of the visual: Demo file Step-by-step instructions: Documentation YouTube Video: Video Link Learn more about visuals: https://powerviz.ai/ Follow Powerviz: https://lnkd.in/gN_9Sa6U Decomposition Tree – All Expanding Decomposition tree All Expanding Visual now allows you to add a legend field. This creates additional column chart beside each node showing breakdown from another dimension. This is depicted in image below. The visual below analyzes the revenue of two largest consumer good companies Unilever and P&G by products. We add region field in the legends section to show additional breakdown of Revenue by Region. The data used is fictitious and used for analysis purposes only. The visual also allows you to add images to nodes. Check out the video on Decomposition Tree All Expanding - Power BI custom visual, demonstrating all the features of this custom visual. Download this visual from APPSOURCE Download demo file from APPSOURCE For more information visit https://www.excelnaccess.com/decomposition-tree/ or contact [email protected] Dynamic chart legends in Zebra BI Charts Which version of the plan am I looking at? - Finance teams ask this daily when switching between budgets, forecasts, and plans. Static chart labels in Power BI waste hours every week and lead to confusion, misinterpretation, and reporting errors. The new dynamic chart legends in Zebra BI Charts for Power BI remove that guesswork by automatically adapting chart legends to the selected filter or scenario, so you can always trust what you see. See the full update How it helps - In FP&A, Actuals are often compared against multiple baselines. Waterfall charts are ideal for this, but static legends stay fixed even when scenarios change. Real-world use cases Comparing forecast versions: Before, every scenario looked the same: ‘Plan’. Now, legends show AC 2024 vs Revised Forecast Q3, eliminating ambiguity. Year-over-year analysis: Previously, reports displayed AC [Year] regardless of selection. Now, legends update from AC 2024 vs PY 2023 to AC 2025 vs PY 2024. Regional reporting: Legends now reflect the active region: AC vs EMEA Budget or AC vs Americas Budget, without manual checks. Together with dynamic titles and dynamic column headers, Zebra BI delivers a fully responsive, accurate, and effortless reporting experience in Power BI. Explore Zebra BI for Power BI Drill Down Bubble PRO by ZoomCharts Say hello to the latest visual by ZoomCharts! With Bubble PRO, you can create visually impressive and user-friendly bubble charts that make complex data simple to explore. What sets Bubble PRO apart from other visuals is the user experience. UI interactions are made as intuitive as possible: freely pan the chart, pinch or scroll to zoom in, click on a marker to drill down, and quickly make single or bulk selections. Coupled with smooth UI animations, seamless cross-filtering and full touch support, you can design more interactive and insightful reports. Main features Drill Down: Create a multi-level hierarchy; and click to drill down. Data-driven Formatting: Apply custom marker colors, shapes, or images directly from data. Trendlines: Show a linear or polynomial regression line that dynamically recalculates whenever the chart changes. Thresholds: Display up to 4 reference lines or areas on each axis. Area Shading: Highlight up to 8 custom areas with rectangles or ellipses. We also have other news: you can now sign up to the free Developer License and use Bubble and 20+ other ZoomCharts visuals in Power BI Desktop for a year! Get Bubble PRO on AppSource Power BI Theme Generator In September 2023, our BIBB Report Theme Generator for Power BI was spotlighted on the Power BI blog. Since then, we've rebuilt and expanded it to help teams standardize look-and-feel, meet accessibility baselines, and export production-ready JSON themes in seconds. The generator streamlines brand color, typography, and visual style setup—making it easy for BI teams to deliver consistent, on-brand reports while reducing manual rework. What's new: a smarter color engine with contrast checks, gradients creation, AI powered themes creation, preset brand colors, apply theme through Fabric, select font, live preview on your own report, and advanced BI.ST mode for power users, while keeping the simplicity of one-click JSON export. Common use cases include (1) rolling out or updating corporate brand themes across workspaces, (2) accelerating new report builds with vetted defaults, and (3) improving report readability and accessibility with contrast-safe palettes. Learn more and see all features on our product page below. Links Find the simplest yet most powerful Power BI Theme Generator All features & documentation Power Gantt Chart by Nova Silva We’re thrilled to introduce one of the most requested features in Power Gantt: task dependencies! With our latest release, you can now add Finish-to-Start (FS) dependencies between tasks—visually represented as arrows connecting one task’s finish to another’s start. This powerful enhancement brings true project scheduling capability to Power BI. By visualizing dependencies, teams can better understand task sequences, identify bottlenecks, and manage timelines more effectively. Adding dependencies is simple—just define them in your dataset, and Power Gantt does the rest. Arrows will automatically appear on your Gantt chart, making relationships between tasks clear and actionable. Whether you’re managing product launches, construction schedules, or complex workflows, FS dependencies make your Power Gantt chart smarter, more dynamic, and easier to interpret. Start using dependencies today and take your project tracking to the next level! Try the Power Gantt Chart for FREE now on your own project data by downloading it from the AppSource. Questions or remarks? Visit us at: Power Gantt Chart for Power BI. Turn any image into data insights with Synoptic Panel by OKVIZ With Synoptic Panel, you can transform any SVG image into an interactive visual directly in your report. Perfect for floor plans, organizational charts, technical layouts, or geographical maps, it lets you integrate your data with images your audience already knows. A dynamic dashboard, where users can naturally explore insights by clicking on shapes and areas. This makes complex information easier to understand and more engaging to navigate. Key features include: Flexible image loading: use local files embedded in reports, remote URLs, or My Storage, our secure hosting service. Multi-level navigation: drill down into building floors or geographical regions, with automatic hierarchy creation when using remote configurations. Dynamic switching: change maps through slicers or bookmarks. Map Editor and Label Designer: fine-tune data binding, arrange and customize labels directly in the visual. Advanced coloring: apply conditional formatting and color rules to build heatmaps or highlight key areas. Map search: quickly locate maps or areas for faster access. Integrated security: safely host and distribute maps while keeping control of access. Full customization: adapt interactions, appearance, and data binding to your reporting needs. Explore real-world use cases and try Synoptic Panel for free! General Announcing deprecation of R and Python visuals in Embed for your customers solution We are announcing an important change for Power BI customers who use Embed for your customers with R or Python visuals. As part of our ongoing commitment to provide a secure, scalable, and robust analytics platform, we continually evaluate our feature set to ensure alignment with industry standards, customer needs, and platform performance. What’s Changing? Starting May 2026, Power BI will end support for the ability to embed reports and dashboards containing R or Python visuals using Power BI’s Embed for your customers solution (also known as app owns data) and Publish to web scenarios. Embed for your customers typically involves a custom app which manages authentication directly, and for which app users do not need Power BI licenses. This change does not impact customers leveraging secure embeddings to SharePoint, Website or Portal. Embed for your organization (also known as user owns data) scenarios are also not impacted. Timeline for Deprecation Announcement & Guidance: Effective immediately, customers are notified of the upcoming deprecation. Deprecation Date: Official support for embedding R and Python visuals in PaaS scenarios will end on 05/01/2026. Post-Deprecation: After this date, any embedded Power BI reports or dashboards containing R or Python visuals will still load, but the R or Python charts will display as blank. Reports without these visuals will continue to function as expected. Recommended Actions for Customers Review all embedded Power BI reports and dashboards to identify usage of R or Python visuals. Plan to update or redesign any affected reports using alternative Power BI visuals or DAX-based analytics. Consider leveraging Fabric Notebooks for more sophisticated or technical visualizations. Consult the Power BI & Fabric documentation for guidance on using alternative visuals effectively. Support and Resources We understand that this change may require updates to your existing solutions. Please reach out via the Power BI community forums or through your Microsoft account representative for personalized guidance. Closing This concludes this month’s update. We hope the information provided in this update is useful. If you installed Power BI Desktop from the Microsoft Store, please leave us a review. As always, keep voting on Ideas to help us determine what to build next. We are looking forward to hearing from you!25KViews0likes0CommentsTMDL View on the Web (Preview)
If you haven’t already, check out Arun Ulag’s hero blog “FabCon and SQLCon 2026: Unifying databases and Fabric on a single, complete platform” for a complete look at all of our FabCon and SQLCon announcements across both Fabric and our database offerings. TMDL View on the Web will be available in the coming weeks, providing a powerful code-first semantic modelling experience directly to your browser. With this new capability, Power BI developers can script, modify, and apply changes to semantic model objects using the Tabular Model Definition Language (TMDL)—a human-readable code format that describes your entire semantic model as code—without switching to Power BI Desktop or downloading model files. Watch the TMDL View on the Web demo in the March 2025 Update video. What is TMDL View on the Web? TMDL View on the Web is a new feature in Power BI that enables developers to view and edit semantic models as code directly in the browser using TMDL. It expands the Power BI web modelling experience by introducing a rich code editor for working with TMDL scripts—giving pro developers full transparency into the semantic model code and enabling more efficient workflows through code editing. TMDL View was initially introduced in Power BI Desktop in January 2025 and became generally available in September 2025. Now, we’re introducing the same code-first modelling experience to published semantic models in the workspace—directly in your browser. No downloads. No switching tools. Just seamless modelling on the web. Key capabilities and benefits of TMDL View on the Web TMDL View on the Web provides the following capabilities: Explore your published semantic model metadata Get full visibility into all objects and properties within your semantic model, including advanced properties not exposed in the standard UI. To view the TMDL definition of any object, simply drag and drop it into the editor, or open the context menu and select “Script TMDL to Script tab” or “Script TMDL to Clipboard”. This makes exploring and understanding your model structure faster and more efficient. l_object_incl Figure: Exploring published semantic model metadata in TMDL View on the Web by scripting the TMDL definition of an object, including advanced properties not exposed in the standard modelling UI. Enhanced development efficiency TMDL View on the Web includes a modern code editor designed to boost productivity with built-in IntelliSense, multiline editing for bulk updates, search and replace capabilities and more. For example, you can use IntelliSense and multiline editing to assign a display folder to all Sales-related DAX measures in a single operation—reducing repetitive work and improving consistency. You can also take advantage of AI-powered tools such as GitHub Copilot to assist with authoring TMDL scripts. For instance, you can script your model as TMDL, use an AI assistant to generate or modify code, and then paste it back into the editor to preview and apply changes—streamlining your modelling workflow even further. Figure: Using multiline editing and IntelliSense in TMDL View on the Web to assign a display folder across multiple measures in a single operation. Modify any semantic model property/object Edit properties and objects directly in the browser—including advanced settings such as partition definitions or properties like isAvailableInMdx, which are not exposed in the standard modelling interface. This capability gives developers full control over their semantic models, enabling advanced configurations without relying on external tools or downloading the model. Figure: Editing isAvailableInMdx property in TMDL View on the Web, with a side‑by‑side preview showing the before‑and‑after impact on the TMDL definition. Increased reusability and collaboration Easily share and reuse semantic model objects by sharing TMDL scripts. For example, to reuse a Calendar table from another semantic model or from a centralized gallery such as TMDL gallery, copy its TMDL script, paste it into your target model, preview the changes, and apply them. Figure: TMDL Gallery page showcasing a Calendar table shared as a reusable TMDL script for reuse across semantic models. Figure: Reusing a TMDL script from the TMDL Gallery by pasting it into another model in TMDL View on the Web, previewing the changes, and applying them. Key differences between TMDL View in Desktop and TMDL View on the Web To help you understand how the web experience differs from the Desktop version, here’s a side-by-side comparison of key functional differences between TMDL View in Power BI Desktop and TMDL View on the Web: Key Difference TMDL View in Power BI Desktop TMDL View on the Web View mode and Edit mode No distinct modes—changes can be made and applied to the model at any time Introduces two modes: View mode (to script and preview changes) and Edit mode (to apply them to the model), enabling safer experimentation before committing changes. Script persistence TMDL scripts are saved as part of the semantic model. A model may contain previously saved scripts. Scripts do not persist. They are discarded when the semantic model or browser is closed. Previously saved scripts were not displayed. Version history support Not available. Leverages workspace version history to restore previous versions of the semantic model if needed. Write permissions Not applicable. Desktop authoring does not rely on workspace permission levels. Requires write permissions on the semantic model to open and use the experience. TMDL View on the Web will begin rolling out in preview over the coming weeks. Here's how to prepare: Watch the demo: March 2025 Update video Explore the documentation: Tabular Model Definition Language TMDL View We look forward to seeing how you use TMDL View on the Web to accelerate your semantic modelling workflows and bring code-first development practices to your Power BI projects. Questions? Leave a comment!8.2KViews1like4CommentsDeep dive into Optimize ribbon and streamline your Power BI authoring
Let’s look at how you can streamline your authoring experience in Power BI Desktop with the Optimize ribbon and relationship editing in the properties pane. The Optimize ribbon was announced for public preview in the November 2022 release! With the Optimize ribbon you can fully control when visuals refresh with Pause visuals and Refresh visuals, quickly choose, and apply predefined combinations of settings to meet your specific reporting needs with Optimization presets, and conveniently launch the Performance analyzer to delve deeper into the visual queries themselves, including the SQL queries Direct Query generates. The relationship editing in the properties pane was announced for public preview in the October 2022 release! Edit your relationships right in the properties pane in the Model view without running queries to preview or validate the data. A welcome relief for those using DirectQuery storage mode, as these queries can cause you to wait and impact your data sources. How do these features work to streamline your authoring experience? Here are some scenarios they can help you with. 1. Make changes to an existing DirectQuery report without running queries until you are ready – Simply click Pause visuals in the Optimize ribbon to have the report enter the paused state. With the report in a paused state, the visuals will only update if they do not need to send a query. If the visual does need to send a query, the visual instead enters a pending state. In a pending state the visual still shows what it looked like before the change was introduced just for context and the tooltips are disabled to stop report tooltips from also sending out queries. Now you can add or remove multiple columns or measures into the field well, re-order the fields, and even filter the visual using the Filter pane. Once you are done making all those changes, you can click Refresh on the visual to all the visual to send a query just once, click Refresh on the banner or ribbon to have all visuals on the page send a query just once, or click Resume visual queries on the banner or Paused visuals in the Optimize ribbon to have all the visuals send a query to update then continue to send queries with any future updates. Here is the Pause visuals flow: This animation demonstrates adding the measure Fare and Average fare per trip to two of the visual’s tooltips on the page, reordering them in the field well, and then resuming the visuals from the banner. Without the Pause visuals each time a measure was added, or moved around in the fields well, a new visual query would have been sent to the DirectQuery data source. That’s 3 queries for each visual, totaling 6 queries sent. Now, with the Pause visuals each time the measure was added, or moved around, no queries were sent. A total of only 2 queries were sent when the report was resumed. For this simple report change not running the 4 extra queries saved time waiting and didn’t waste data source resources. 2. Create new visuals without running a query until you are ready - Again, simply click Pause visuals in the Optimize ribbon to have the report enter the paused state. Now add in a new Matrix visual from the Visualization pane and add Trips, Day of week, and Time of the day to the Matrix visual. The Matrix visual enters a pending state and no queries are sent! Now re-order the fields. Again, no queries are sent! Open the Filter pane, bring in the Year, and filter to the year 2013. At this point seeing the visual will be helpful before making more changes, so I can click on Refresh in the pending visuals banner or open the Selection pane to refresh the visual there. I have only sent 1 query, and the query was pre-filtered, speeding up the return time and reducing the impact on the data source. I can make formatting changes to the visual, and even in the report paused state these show because a DAX query is not needed. Adding a background color formatting change does need a visual query so then visual enters the pending state. I can Refresh or Resume visual queries to see the final Matrix. This animation shows the creation of a new visual using paused visuals. Without the Pause visuals, each time a measure or column was added, or moved around in the fields well, a new visual query would have been sent to the DirectQuery data source. That’s 6 queries total before I started formatting and 5 of those were before I had filtered the visual to single year. Now, with the Pause visuals each time the measure or column was added, or moved around, no queries were sent. A total of only 2 queries were sent when the visual was refreshed or the report was resumed, and they were filtered queries. For this new visual addition not only did avoiding the extra queries save time waiting and didn’t waste data source resources, but I was also able to run a smaller, targeted query and to format the visual with minimal disruption. 3. Create measures in a DirectQuery model without the visuals refreshing until you are ready – Again, simply click Pause visuals in the Optimize ribbon to have the report enter the paused state. In a DirectQuery report, anytime a new measure is created all the visuals on the report page will refresh. But, with the report in a paused state I can create new measures and instead all the visuals enter a pending state. I can also add them to the pending visuals. I can then refresh an individual visual to see the new measure or simply resume visual queries when I am done. This animation shows the creation of 2 new measures while using Pause visuals. Without the Pause visuals, each time a measure was created all the visuals would have sent queries to the DirectQuery data source. That’s 5 visuals on the page sending 5 queries with each model change for a total of 22 queries when creating 2 measures and adding the two new measures to a single visual! Now, with the Pause visuals, each time the measure was created, or added to a visual, no queries were sent. A total of only 6 queries were sent when the single visual was refreshed, and then the report resumed. For these modeling changes we saw the most reduction in queries and time waiting, as well as load on the data source resources. 4. Quickly edit relationships between DirectQuery tables – Going to the model view in Power BI Desktop, to edit a relationship between two DirectQuery tables I can now simply click on the relationship line and edit it in the Properties pane! I can change the table, column, cardinality, direction, make it active or inactive, and even turn on referential integrity if I am confident each table is not missing values present in the other one. When I am done, I click on apply changes. I can also hold down Ctrl to select multiple relationships to then make bulk changes in the properties pane, or to delete them using the Delete key. This animation shows how to edit relationships in the properties pane. Without the edit relationship in the properties pane, each time I edit a relationship in the Edit relationships dialog queries would have run when I opened the dialog to show the data preview and, with every change of table or column, queries would have run to validate the cardinality and direction of the relationship. Now, with the edit relationship in the properties pane, I do not run queries and the relationship is only validated once I am ready and have clicked the apply changes button! 5. Quickly learn about and apply query reduction settings to your DirectQuery report – I can click on the Optimization presets drop down in the Optimize ribbon to choose Query reduction for my report. The dialog explains the applied settings. ep_dive_into_Optimize_ribbon_and_streamline_your_Power_BI_authoring Cross-highlighting and cross-filtering is how visuals interact with each other when a data point is clicked. The default is Power BI Desktop is cross-highlighting, but I could have changed the default to cross-filtering by going to File > Options and Settings, then click on Options, select Report settings in CURRENT FILE, and then select the “Change default visual interaction from cross highlighting to cross filtering.” Optimization presets will only turn off default cross-highlighting and cross-filtering, so any customization done at the visual level with Edit interactions is not impacted. I can click on any visual to show to Format ribbon and then go to Edit interactions. Edit interactions then shows options on all the other visuals in the report so I can decide how they will adjust when a data point is selected in the selected visual -- from cross filtering or cross highlighting to not interacting at all. If I had customized any of the Edit interactions, the Optimization preset disabling cross highlighting and cross filtering by default would not change this customization. Any customized Edit interaction between visuals will still work just as they had before. Next, Apply buttons are added to the slicers. Every slicer in my report now has an apply button and users can select/unselect multiple options in each single slicer and not have any other visual in the report send a query until the Apply button is clicked. The slicers are still independent of each other, so if I have 2 slicers with Apply buttons, each Apply button would have to be clicked to apply the slicer selections. Finally, Apply buttons are added to the Filter pane. The Filter pane button added controls all the filter selections in the pane with one Apply button. Learn more at https://learn.microsoft.com/power-bi/create-reports/power-bi-report-filter?tabs=powerbi-desktop#apply-filters-button This animation shows how to set the Query reduction Optimization preset. 6. Adjust the query reduction settings to the level you need in your DirectQuery report – I can click on the Optimization presets drop down in the Optimize ribbon to choose Customize to adjust any of the settings. In my report the slicers are for single select and the Apply buttons are more useful in multiple select, so I can keep the other settings and return the slicers to instantly apply with Customize. This animation shows how to set the Customize Optimization preset to revert the slicers to instantly apply. 7. Quickly revert to the full interactivity after a data source change in your report – I can click on the Optimization presets drop down in the Optimize ribbon to choose Interactivity for my report. These are also the default settings in Power BI Desktop, so if you have chosen Query reduction or Customized the Optimization presets this is how you can return to default. The dialog explains the applied settings. This animation shows how to set the Interactivity Optimization preset. These call out DirectQuery reporting scenarios specifically, but they can be used in all reporting scenarios. Learn more about all the different reporting scenarios in Power BI at https://learn.microsoft.com/power-bi/create-reports/desktop-optimize-ribbon#reporting-scenarios. For a specific visual, you can determine if it’s using DirectQuery by seeing if it has a Direct query line in the Performance analyzer. So now you have seen how you can streamline your authoring experience in Power BI Desktop with the Optimize ribbon and relationship editing in the properties pane. The Optimize ribbon, with Pause visuals, Refresh visuals, Optimization presets, and Performance analyzer, preview feature has to be enabled explicitly in File > Options and Settings > Options > Preview features by selecting the Optimize ribbon checkbox. Learn more at https://learn.microsoft.com/en-us/power-bi/create-reports/desktop-optimize-ribbon The relationship editing in the properties pane preview feature has to be enabled explicitly in File > Options and Settings > Options > Preview features by selecting the Relationship editing in the properties pane checkbox. Learn more at https://learn.microsoft.com/power-bi/transform-model/desktop-create-and-manage-relationships#edit-a-relationship Try them out today!3KViews0likes0CommentsDeep dive into the new Apply all slicers and Clear all slicers buttons!
Want to make multiple selections across all the slicers on your report page then apply them at once? Need a quick way to clear all the slicer’s selections at once? Now you can! The Apply all slicers button, when on the report page, will keep track of all the slicer selections and then apply them at once when you click the Apply all slicers button! This button can be added and formatted just like another button in Power BI, and also can be added directly from the Optimize ribbon. Let’s look at some scenarios! Apply multiple slicers on the report page at once – If you have a report page with multiple slicers, and your report consumers prefer to finish making all their selections before the other visuals update, now they can!Here I have a report with 5 slicers. When I make selections the six other visuals keep changing with every selection. Picking 2 different options on the first three slicers, 1 on the fourth, and 4 on the last one meant I clicked 11 different selections. 10 of those different selections also updated the other 6 visuals on the page unnecessarily, resulting in 60 unnecessary visual queries! I can bring this down to just 6 necessary visual queries with the Apply all slicers button. I can go to the Optimize ribbon and click on the Apply all slicers button to quickly add this button to my report page. As it is a button, I can format it how I like! So, I am going to go and make it a pill shape and give it a bolder fill color for when there is a pending change in my slicers (the default state). With this button on the report page, I can now make all the selections I want on all my slicers without any other visual updating. The slicers have a small pending icon show next to the Slicer header to indicate they have pending selections and the Apply all slicers button goes to the default state. When I am done, I simply click the Apply all slicers button and the other visuals update! The Apply all slicers button returns to a disabled state, and the slicers pending icons are gone, indicating there are no remaining pending selections. This basic scenario demonstrates significant query reduction, reducing 66 visual queries down to only 6. Hiding the apply all slicers button with a bookmark also allows for instantly applying slicers – If you want to let your report consumers decide how they want to apply their slicers, you can do that also! When the last Apply all slicers button on the report page is hidden, the slicers will simply revert to instantly applying as you make selections. To do this I create a bookmark to show the button and a bookmark to hide the button, then surface those bookmarks with the bookmark navigator! In the Selection pane: Select the Apply all slicers button so it is highlighted. In the Bookmarks pane: Click “Add”, then adjust the bookmark to “Selected visuals”, then “Update” and finally rename to “Apply all slicers”. In the Selection pane: Click the little eye next to the button to hide it on the report page. Then select the (now hidden) Apply all slicers button again so it is highlighted. In the Bookmarks pane: Click “Add” again, then adjust the bookmark to “Selected visuals”, then “Update” and finally rename to “Instantly apply”. Now the bookmarks are set up, go to Insert -> Buttons -> Bookmark navigator. I want this to look like little tabs above my left section, so I change the shape to a trapezoid with 10px rounding and 20% slant. Then for the default state I make the text DIN 8 centered top with 8px padding in black with a grey 0% transparent fill and no border. For the selected state I make it the same, except with a white 0% transparent fill. Then I position it behind my left section and change it to maintain layer order. I can ctrl-click either one to engage the bookmark. When “Instantly apply” bookmark is clicked and the button hidden, the slicers simply instantly apply every selection I make. And alternatively, when the “Apply all slicers” bookmark tab is clicked, the button comes back, and I have the experience of the first scenario – full query reduction while I make my selections! So, you can choose to give your report consumers a way to decide for themselves how they want to have their slicer selections applied. Note: Currently, you must hide the actual button for this to work, hiding the Selection pane group the button is in will not revert the slicers. Also, if you happen to have slicers with pending changes when you hide the last Apply all slicers button, the pending changes will be instantly applied. Clear all slicers allows you to quickly clear all the slicers – And finally, in the first scenario you saw that now you can quickly clear and apply all the slicers on the report page with the Clear all slicers button! This is also a query reduction feature. To clear the slicers one by one with the slicer’s “Clear selections” means for my 5-slicer report, the first 4 times you clear the slicers the visuals update before you are done, creating 4 times 6 visual queries, or 24 unnecessary visual queries. With Clear all slicers button now all the slicers are cleared and then the other visuals update! Some things to keep in mind with these buttons: Apply all slicers and Clear all slicers buttons impact all the slicers on the report page. You cannot pick and choose which slicers you want each button to control. They also do not control the filters pane. You can have as many of these buttons on your report page as you like! If you have most of your slicers in one section, but maybe one or two slicers in another section, you can simply have a button in both sections. Either button, when pressed, will apply to all the slicers on the report page. Hiding the last Apply all slicers button will simply release its control over the slicers and they will revert to instantly applying selections as you click. Some things to keep in mind with the slicers: The slicers with selections not yet applied to other visuals are in a pending state. This pending state of the slicer is indicated in the Slicer header with a pending icon and some customizable text. The slicer pending icon cannot be changed but the pending icon’s color, size, transparency, if it’s to the left or right of the header, or even if it’s shown at all, can be adjusted in the formatting pane. If the slicer header is turned off, then there is no indication of the pending state of the selections on the slicer itself -- but the Apply all slicers button will no longer be in a disabled state when one or more of the slicers has a pending change. Next steps Try them out starting with the March 2023 release of Power BI Desktop Learn more about how to Create buttons in Power BI reports - Power BI | Microsoft Learn Learn more about the Optimize ribbon in Power BI Desktop - Power BI | Microsoft Learn6.6KViews0likes0CommentsDeep dive into the new Dynamic Format Strings for Measures!
Want to format a measure based on a slicer selection, the measure value, or another conditional way? Now you can! With dynamic format strings for measures a DAX expression can now be used to determine what format string a measure will use. These dynamic format strings for measures are the same dynamic format strings already available in calculation groups! If you are familiar with these in calculation items, the DAX patterns you used there are applicable here to individual measures. Learn more about calculation groups at https://aka.ms/calculationgroups. The FORMAT function can also be used in a measure DAX expression to conditionally apply a format string, but the drawback is if the measure was a numeric data type, the use of FORMAT changes the measure to a text data type. As a text data type the measure is then no longer usable as values in visuals. To maintain the measure as a numeric data type and conditionally apply a format string, you can now use dynamic format strings for measures to get around this drawback! Dynamic format strings for measures is in public preview. To use this feature first go to File > Options and settings > Options > Preview features and check the box next to Dynamic format strings for measures. To add a dynamic format string to a measure, Click on the measure in the Data pane. In Measure tools ribbon, expand the Format list box. Then choose Dynamic. Now a new list box should appear to the left of the DAX formula bar with Format selected. This list box is how I can switch between the measure DAX expression and the dynamic format string DAX expression. The static format string the measure had before switching to Dynamic will be pre-populated as a string in the DAX formula bar. I can overwrite this pre-populated string with whatever DAX expression will output the desired format string for my measure. In this case I am looking up the appropriate currency format string from the ‘Country Currency Format Strings’ table and enter this DAX expression: SELECTEDVALUE ( 'Country Currency Format Strings'[Format], "\$#,0.00;(\$#,0.00);\$#,0.00" ) I click the check mark to save the dynamic format string for my measure to the model. Then I can see the dynamic format string working in the visual. To remove the dynamic format string and return to using one of the static format strings: After selecting the measure in the Data pane, I go to the Measure tools ribbon and expand the Format list box. I can pick any other format option. A dialog will appear asking if I want to proceed as there is no undo to this action. Click Change to proceed. To go back to using a dynamic format string, I will have to provide the DAX expression again. Here are some examples to get you started on creating dynamic format strings for measures in your own reports. 1) Currency conversion and showing the results with the correct currency format string – A common scenario is in a report converting from one currency to another. When the value is converted, the report should show the converted currency in the appropriate format. There are step by step instructions available at https://learn.microsoft.com/power-bi/create-reports/desktop-dynamic-format-strings#example to set up the Adventure Works 2020 PBIX file with the needed tables for this currency conversion example. Here in my Adventure Works 2020 data model, I have the yearly conversion rates for some countries in the table ‘Yearly Average Exchange Rates’. I also have a table with the countries I want to convert to, and their currency format strings as the 'Country Currency Format Strings' table. To join these to my existing tables, I add relationships to the new tables. First, I create a relationship between the ‘Country Currency Format Strings’ table and ‘Yearly Average Exchange Rates’ on the Country column. Make the relationship one to many and so that ‘Country Currency Format Strings’ filters ‘Yearly Average Exchange Rates’. Second, I create a relationship between the ‘Date’ table and the ‘Yearly Average Exchange Rates’ table on the Year column. Make the relationship many to many and so that ‘Date’ table filters” the ‘Yearly Average Exchange Rates’ table. With all this set up, I then create a measure to compute the exchange rate with this DAX expression: Exchange Rate (Yearly Avg) = IF ( ISBLANK ( SELECTEDVALUE ( 'Country Currency Format Strings'[Country] ) ) || SELECTEDVALUE ( 'Country Currency Format Strings'[Country] ) = "United States", 1, AVERAGE ( 'Yearly Average Exchange Rates'[Yearly Average Exchange Rate] ) ) And then I create the measure [Converted Sales Amount] to convert my existing [Sales Amount] measure to other currencies with this DAX expression: Converted Sales Amount = SUMX ( 'Date', CALCULATE ( [Sales Amount] * [Exchange Rate (Yearly Avg)] ) ) Finally, I define a dynamic format string DAX expression to apply the correct format string on [Converted Sales Amount] measure. SELECTEDVALUE ( 'Country Currency Format Strings'[Format], "\$#,0.00;(\$#,0.00);\$#,0.00" ) Now when a country is selected in the slicer, the [Converted Sales Amount] shows not only the converted [Sales Amount] but also shows the value in the specified format. And because this is done with the dynamic format strings for measures, the underlying data type of the measure remains numeric and is usable in any visual like before. 2) User driven format strings – Different teams may want to see the report formatted in different ways for their reporting needs. Dynamic format strings for measures can be report user driven to indicate how they want to see the number formatted. And in some formatting cases, such as when abbreviating 1,000s, the dynamic format strings for measures can also conditionally format based on the measure value. For the top slicer I create a calculated table to define the format strings in my model. In Modeling ribbon I click on New table and enter the following DAX expression: Select format = DATATABLE ( "Select", STRING, "Format String for $", STRING, { { "in K (1,000s)", "$#,##0,.0 K" }, { "in M (1,000s)", "$#,##0,.0 M" }, { "💵", "$#,##0💵" }, { "Full", "$#,##0" }, { "Full with decimals", "$#,##0.00" } } ) Which looks like this in the Data view: Now I create this measure: Sales Amount (Pick) = [Sales Amount] Then I go to the Measure tools ribbon and choose Dynamic from the Format list box. In the DAX formula bar, I enter the following dynamic format string DAX expression: IF ( LEFT ( SELECTEDVALUE ( 'Select format'[Select] ), 2 ) = "in" && SELECTEDMEASURE () < 1000, "$#,##0", SELECTEDVALUE ( 'Select format'[Format String for $], "$#,##0.00" ) ) I could have alternatively also written it without using SELECTEDMEASURE() using the measure name itself, [Sales Amount (Pick)], like this: IF ( LEFT ( SELECTEDVALUE ( 'Select format'[Select] ), 2 ) = "in" && [Sales Amount (Pick)] < 1000, "$#,##0", SELECTEDVALUE ( 'Select format'[Format String for $], "$#,##0.00" ) ) With this now in place, the visuals with [Sales Amount (Pick)] will show the value in the specified format. In the cases where abbreviating to 1000s such as when using K to abbreviate, any number under 1000 will show the full value and not be abbreviated. th_low_conf 3) Measure driven format strings – In the previous example the measure itself was used to determine how the value would be formatted when abbreviated by 1000s. I can take this further and have the measure value fully determine the abbreviation limits and formatting. This is like the “Auto” option in display units on visuals, but now I get to define exactly how it works with my measure using dynamic format strings. I create a new measure called [Sales Amount (Auto)] defined as: Sales Amount (Auto) = [Sales Amount] And I add this dynamic format string expression to [Sales Amount (Auto)]: SWITCH ( TRUE (), SELECTEDMEASURE () < 1000, "$#,##0", SELECTEDMEASURE () < 1000000, "$#,##0,.0K", "$#,##0,,.0M" ) If I had negative values, I could include those limits, and if I had very large numbers, I could also abbreviate and format them appropriately too. Now the visuals will show this measure abbreviated and in format I have defined: 4) Locale driven currency conversion – I may know the locale of the country I am converting to, but not the exact currency format rules, or noticed it is tricky to get that format string correct for currencies that flip the . and , in their format strings. Here we can leverage the updated FORMAT function that can also take a locale argument! When used with the dynamic format strings for measures we can still keep the measure as a numeric data type and use FORMAT. The drawback to this approach is you cannot customize the currency format string for that locale further. I create the Locale table using the Modeling ribbon’s New table and enter the following DAX expression: Locale = DATATABLE ( "Locale", STRING, "Country", STRING, { { "en-US", "United States" }, { "de-DE", "Euro Zone" }, { "pt-BR", "Brazil" }, { "fr-FR", "Euro Zone" }, { "en-AU", "Australia" }, { "fr-CA", "Canada" }, { "da-DK", "Denmark" }, { "en-SE", "Sweden" }, { "se-SE", "Sweden" }, { "en-CH", "Switzerland" }, { "en-GB", "United Kingdom" }, { "ja-JP", "Japan" } } ) I then create a relationship from the ‘Locale’ table to the ‘Country Currency Format Strings’ table on the Country column. This should be many to one, and cross filtering in both directions for this example. As these are small tables and not part of a complex model, I am ok with the using cross filtering in both directions here. I create a new measure [Converted Sales Amount (Locale)] with this DAX expression: Converted Sales Amount (Locale) = [Converted Sales Amount] And give [Converted Sales Amount (Locale)] measure the following dynamic format string DAX expression: VAR _locale = SELECTEDVALUE ( Locale[Locale] ) RETURN "'" & FORMAT ( SELECTEDMEASURE (), "Currency", _locale ) & "'" The FORMAT function itself will output a string that already formatted the value of the measure into the appropriate currency format for the given locale. Because I want this string to be used literally, that is, I don’t want any part of it to be used like a format string, I am wrapping it in single quotes. Now I can use this locale driven currency formatting in the visuals! I can now compare the locale driven currency format strings with the first example where I defined the format string manually. These four examples are just the beginning. I'm excited to see all the other creative ways you'll use dynamic format strings for measures in your reports! There are some things to keep in mind using dynamic format strings for measures. Visual display units: Visuals have formatting options that may impact how the format string is displayed, so if the formatting is showing unexpectedly in a visual, go to the visual Format options search for “Display units” and change it from “Auto” to “None”. The measure itself can be referenced directly in its dynamic format string for measures by using its name, for example [Measure A], or indirectly by using SELECTEDMEASURE(). Report measures: Dynamic format strings for measures are only for model measures. Report measures which can be added to a live connect report cannot have dynamic format string for measures. Currently there is a bug where Dynamic does show in the Measure tools ribbon Format list box and when selected the Measure/Format drop down to the left of the DAX formula bar will show, but you cannot add a DAX expression. This will be fixed in a future release, and the report measures will not see the Dynamic option in the Format list box. DirectQuery over AS: When you click the Make changes to this model on a live connect report this will shift the connection to the DirectQuery over AS, and generally we allow you to make changes to the format strings of the remote model measures. For public preview of dynamic format strings for measures, Remote model measures with dynamic format strings defined will be blocked from making format string changes, to a static format string or to a different dynamic format string DAX expression. Remote model measures cannot be changed from a static format string to a dynamic format string DAX expression defined in the local model. Local model measures will also be blocked from using dynamic format strings for measures. These restrictions are being explored and may change in future releases of Power BI Desktop. Try dynamic format strings for measures today and learn more at https://learn.microsoft.com/power-bi/create-reports/desktop-dynamic-format-strings.7.8KViews0likes0CommentsDAX query view introduces new INFO DAX functions
DAX query view, released in public preview last month, in the December 2023 Power BI Desktop release has exciting updates including the new INFO DAX functions and improvements to the Update model CodeLens. There are over 50 new INFO DAX functions now available! Those of you who are familiar with the Dynamic Management Views, or DMVs, of models in Power BI, Azure Analysis Services, and SQL Server Analysis Services will recognize these as the TMSCHEMA DMVs. The existing TMSCHEMA DMVs are now available as DAX functions. Providing them as DAX functions gives the following benefits: No longer do you have to use a different query syntax than DAX to see information about your semantic model! They are native DAX functions and show in IntelliSense when you type INFO. You can join them together using other DAX functions! Existing DMV query syntax does not allow you to join them. As DAX function, the output is a Table data type and existing DAX functions that join tables or summarize tables can be used. Below is a full list of the new INFO DAX functions. # Function 1 INFO.ALTERNATEOFDEFINITIONS 2 INFO.ANNOTATIONS 3 INFO.ATTRIBUTEHIERARCHIES 4 INFO.ATTRIBUTEHIERARCHYSTORAGES 5 INFO.CALCULATIONGROUPS 6 INFO.CALCULATIONITEMS 7 INFO.COLUMNPARTITIONSTORAGES 8 INFO.COLUMNPERMISSIONS 9 INFO.COLUMNS 10 INFO.COLUMNSTORAGES 11 INFO.CULTURES 12 INFO.DATACOVERAGEDEFINITIONS 13 INFO.DATASOURCES 14 INFO.DELTATABLEMETADATASTORAGES 15 INFO.DETAILROWSDEFINITIONS 16 INFO.DICTIONARYSTORAGES 17 INFO.EXPRESSIONS 18 INFO.EXTENDEDPROPERTIES 19 INFO.FORMATSTRINGDEFINITIONS 20 INFO.GENERALSEGMENTMAPSEGMENTMETADATASTORAGES 21 INFO.GROUPBYCOLUMNS 22 INFO.HIERARCHIES 23 INFO.HIERARCHYSTORAGES 24 INFO.KPIS 25 INFO.LEVELS 26 INFO.MEASURES 27 INFO.MODEL 28 INFO.OBJECTTRANSLATIONS 29 INFO.PARQUETFILESTORAGES 30 INFO.PARTITIONS 31 INFO.PARTITIONSTORAGES 32 INFO.PERSPECTIVECOLUMNS 33 INFO.PERSPECTIVEHIERARCHIES 34 INFO.PERSPECTIVEMEASURES 35 INFO.PERSPECTIVES 36 INFO.PERSPECTIVETABLES 37 INFO.QUERYGROUPS 38 INFO.REFRESHPOLICIES 39 INFO.RELATEDCOLUMNDETAILS 40 INFO.RELATIONSHIPINDEXSTORAGES 41 INFO.RELATIONSHIPS 42 INFO.RELATIONSHIPSTORAGES 43 INFO.ROLEMEMBERSHIPS 44 INFO.ROLES 45 INFO.SEGMENTMAPSTORAGES 46 INFO.SEGMENTSTORAGES 47 INFO.STORAGEFILES 48 INFO.STORAGEFOLDERS 49 INFO.TABLEPERMISSIONS 50 INFO.TABLES 51 INFO.TABLESTORAGES 52 INFO.VARIATIONS Here is more information about a few that may be most useful: INFO.TABLES contains information about the tables in the model, such as the table name, description, and whether it is hidden or not. INFO.COLUMNS contains information about the columns in a model, such as the column name, data type, and whether it is hidden or not. INFO.MEASURES contains information about the measures in the model, such as the measure name, expression, and format string. Let’s look at INFO.MEASURES and demonstrate now they can be joined to other INFO functions in DAX query view. To follow along, download the Store Sales PBIX from https://learn.microsoft.com/power-bi/create-reports/sample-datasets#updated-samples. In Power BI Desktop I go to DAX query view and type in EVALUATE followed by INFO to see them all listed. I can continue typing or scroll down to INFO.MEASURES. Then I click run, or the popular keyboard shortcut to run queries, F5 (also added in December!). You can also use the maybe lesser-known keyboard shortcut, CTRL+SHIFT+E to run the DAX query. Now I can see all the measures in my model, their expression, and other useful information about them. It also gives me their home table but in maybe a slightly less useful TableID column. Thankfully, there is an INFO.TABLES DAX function which has the name of table 10 and 13. To join them, I utilize SELECTCOLUMNS and NATURALLEFTOUTERJOIN shown in the example below. EVALUATE VAR _measures = SELECTCOLUMNS( INFO.MEASURES(), "Measure", [Name], "Desc", [Description], "DAX formula", [Expression], "TableID", [TableID] ) VAR _tables = SELECTCOLUMNS( INFO.TABLES(), "TableID", [ID], "Table", [Name] ) VAR _combined = NATURALLEFTOUTERJOIN(_measures, _tables) RETURN SELECTCOLUMNS( _combined, "Measure", [Measure], "Desc", [Desc], "DAX Formula", [DAX formula], "Home Table", [Table] ) Run this DAX query to see the measure, description (if available -- I added some for this example), DAX formula, and home table of all the measures in the model. Documenting your model just got a lot easier! Copy the results where you need with the Copy button. For example, I can go to Model view and choose Enter data to Paste them into the model. I can then add a Report page with a visual showing information about this model: And here I have pasted them into Excel and made a dynamic table with CTRL+T. Copy then paste may not work well if you have DAX formulas on multiple lines in your measures. In that case, you can run the DAX query in Excel directly. Open Excel and navigate to the Data Click Get Data. Click Database in the drop down, then SQL Server Analysis Services (not the Analysis Services one). Back in Power BI Desktop go to Model view, then Data pane > Model, and click the Semantic model. Don’t see it? Make sure Model Explorer is enabled in your Preview features section of Options. In the Properties pane click the copy icon next to Server to add it to your clipboard (also new in December!) uces_new_INFO_DAX_functions Back in Excel, paste the localhost:xxxxx (most likely it will be a different number for you) into the Server You also need the Database, which is not in the Properties pane yet with Server (planned). You can get the Database ID from an external tool, such as DAX Studio, or another free Microsoft tool, SQL Server Management Studio (change Server type to Analysis Services). The database ID is not the name of the PBIX file, but instead a GUID. If you have previously published the PBIX to the Power BI service, the Database GUID is also in the URL of the published version. Finally, back in Excel, copy in the DAX query to the DAX or MDX query box and click OK. Then click Load. The data will show in an Excel table. What is useful about this approach is you can now refresh it if you make an update to your model during this editing session. When you close Power BI Desktop it will not refresh. But if you re-open Power BI Desktop, you can simply edit the connection with the new Server to refresh it while Power BI Desktop is running. Also, once published to the Power BI service you can edit the connection’s Server to be the Workspace connection and refresh it too. To change the Server, right-click the table, click on Table, then Edit Query. A familiar Power Query window will open, and you can update the Server and Database there. You can do this with any of your DAX queries, not just these new INFO DAX functions. Another combination that may be useful for the new INFO DAX functions is to explore the columns in your model. DEFINE VAR _tables = SELECTCOLUMNS( FILTER( INFO.TABLES(), // Exclude hidden tables [IsHidden] = FALSE() ), "TableID",[ID], "TableName",[Name] ) VAR _columns = FILTER( INFO.COLUMNS(), // Exclude RowNumber columns [Type] <> 3 ) VAR _result = SELECTCOLUMNS( NATURALINNERJOIN( _columns, _tables ), "Table",[TableName], "Column",[ExplicitName], "Description",[Description], "Column in Data Source",[SourceColumn], "Data Category", [DataCategory], "Column Type", SWITCH( [Type], 1,"Data column", 2, "Calculated column", [Type] ), "DAX formula", [Expression] ) EVALUATE _result And when I run this DAX query, I can see information about all the columns in my model. I can see if the name is different than the source name, if they have a data category, and even the DAX formula for calculated columns! I can take this even further. I am concerned about the number of calculated columns, so I want to see how many there are and then show only calculated columns. I can do this by adding this to my DAX query: EVALUATE {COUNTROWS( FILTER( _result, [Column Type] = "Calculated column") )} EVALUATE FILTER( _result, [Column Type] = "Calculated column") Changing the DAX query view result grid to the 2 nd result, I can see there are 6 calculated columns: And the 3 rd result shows me just the calculated columns: I wonder what DAX formula for Category (clusters) 2 is. I can hover over it to see the full DAX formula. As you can see, there are many new ways to explore the metadata of your model with these INFO DAX functions! One thing you cannot do with these functions is use them in calculated tables, calculated columns, and measures. They will show an error if you try. So, you should not see them in DAX formula bar IntelliSense. (Edit: the INFO functions will show in the DAX formula bar IntelliSense, but they may result in an error when used). If you use them in the DEFINE MEASURE, DAX query view will currently still show the Update model CodeLens, but it will result in an error when clicked. These measures can still be run as DAX query in DAX query view without error. Finally, an exciting update to the Update model CodeLens! Now comments are kept when using the CodeLens and the CodeLens will show when the DAX formula formatting has been changed. For example, when you use Quick queries to Evaluate and define a measure, then click Format query. Now those with new formatting will show a CodeLens to Update model to quickly format your measure DAX formulas. I hope these examples help you with your semantic models. Try out these exciting changes today and let us know your feedback as we continue the public preview of DAX query view and continue to add functionality. Next steps: Share feedback on DAX query view. Learn more about DAX query view. Read the deep dive blog to get the most out of DAX query view.6.6KViews0likes0CommentsModel explorer with calculation group authoring is now available in Power BI service including Direct Lake semantic models
We are excited to announce the availability of Model Explorer when editing data models in the Power BI service! Learn more about editing data models in the Power BI service at https://learn.microsoft.com/power-bi/transform-model/service-edit-data-models. Direct Lake semantic models in Microsoft Fabric also use this Power BI service to edit the model when you click “New semantic model” in the Lakehouse, SQL analytics endpoint, and Warehouse. Learn more about Direct Lake at https://learn.microsoft.com/power-bi/enterprise/directlake-overview. With the Model Explorer available for editing data models in the Power BI service these semantic models, both Direct Lake and those in import or DirectQuery, not only get visibility of their semantic model in a tree view but also can create calculation groups! Learn more about the Model Explorer with these resources: https://learn.microsoft.com/power-bi/transform-model/model-explorer https://powerbi.microsoft.com/blog/deep-dive-into-the-model-explorer-with-calculation-group-authoring-and-creating-relationships-in-the-properties-pane/ Here is a quick demo of how to create a calculation group in a Direct Lake semantic model. This demo assumes you have Microsoft Fabric trial or capacity available, and the workspace is using it. In the Power BI service, I navigate to a workspace on a Fabric trail or capacity where I have a Lakehouse with data. In my Lakehouse, I have some data already created. I click the “New semantic model” button to create a new semantic model in my workspace. I select the tables I want to use in my model. I can add or remove them later as well. ailable_in_Power_BI_ser Now in the Data pane I can see the Tables and Model options. The Model option will take me to the Model Explorer. I can right-click on the Calculation groups to create a new calculation group. I will be prompted that this will turn on Discourage Implicit Measures (Learn more). And now my calculation group will be created! Learn more about calculation groups at https://learn.microsoft.com/power-bi/transform-model/desktop-tutorial-create-calculated-columns. Some limitations to keep in mind: (1) Renaming the calculation group column may result in an error, and (2) renaming the calculation group is currently blocked. Both are bugs we are actively working on fixing. In the meantime, you can rename these using XMLA as explained in https://powerbi.microsoft.com/blog/announcing-calculation-groups-for-direct-lake-datasets/. The Model Explorer also allows you to create relationships in the properties pane, which can be helpful for models with a lot of tables that are harder to create relationships with drag and drop. And once I have created some more relationships and measures I can see all these items in the Data pane’s model explorer. Try out the model explorer today! Editing data models in the Power BI service and Model Explorer are both in public preview, and we would love to hear your feedback. The public preview blog post has more information including how to submit feedback at https://powerbi.microsoft.com/blog/edit-your-data-model-in-the-power-bi-service-public-preview-opt-in/.1.9KViews0likes0CommentsImprovements for creating new Direct Lake semantic models
Microsoft Fabric introduced the Direct Lake storage mode for Power BI a few months ago, but the technology is still brand new and super-hot. Once you have all your data in OneLake, you can model your data in Direct Lake semantic models to create lightning- fast reports providing data driven insights. As part of our continued tooling improvements, we have enhanced the experience for creating Direct Lake semantic models in Microsoft Fabric. This applies to semantic models created by clicking the New semantic model button from the Lakehouse (as in the below screenshot) or Lakehouse’s SQL analytics endpoint as well as from Data Warehouses. Users with access to the Lakehouse or Warehouse can create custom Direct Lake semantic models in just a few steps. Click the New semantic model button. Type a name for the semantic model. Conveniently select the target workspace where they want to create the semantic model. Select the desired tables (and views). Note, however, that these enhancements are only available for custom Direct Lake models. These changes do not apply to the default semantic model, shown in the workspace as “Semantic model (default)”, which is automatically created for the T-SQL endpoint of your Lakehouse or Warehouse. When creating a custom Direct Lake model, keep the following requirements in mind: Enter the name of the new custom semantic model instead of relying on an auto-generated name. The Lakehouse workspace is the default save location, but the semantic model can be saved in a different workspace from the workspace dropdown. Views are not shown by default in the list of source objects. This is because views added as tables into a Direct Lake model always require fall back to DirectQuery mode. These view-backed tables in the Direct Lake model cannot be queried by using pure Direct Lake mode. We strive to be transparent with the impact of views when they are added to the semantic model. A banner appears when Show views is selected. Relationships, measures, and other properties are not inherited from the SQL analytics default semantic model. You can instead define them manually to meet your specific needs – as well as add many additional semantic modeling objects not supported by the default semantic model such as calculation groups and dynamic format strings. Utilize the model explorer to see all your semantic model objects and expand the model even further with the XMLA endpoint. Get table and column changes after creation. After the initial creation of a Direct Lake model, you can use the Edit tables button to update the tables and columns with the latest schema changes from the data source, typically changes made to the delta tables in the Lakehouse, such as renaming or adding/removing columns. In custom Direct Lake models, schema changes are not updated automatically without user intervention. This behavior is comparable to import and DirectQuery semantic models in Power BI. In the workspace lineage view you can see custom Direct Lake models downstream from the Lakehouse’s SQL analytics endpoint, and from each of these semantic models you can see their downstream reports. This is a great view that lets you quickly see all the artifacts that use your Lakehouse or Warehouse. Learn more with these resources. Direct Lake at https://learn.microsoft.com/power-bi/enterprise/directlake-overview. Creating a new Direct Lake semantic model at https://learn.microsoft.com/power-bi/enterprise/directlake-overview. Microsoft Fabric at https://www.microsoft.com/microsoft-fabric.2.3KViews0likes0Comments