web modeling
10 TopicsDirect Lake Calculated Columns (Preview)
Calculated columns are now available in preview for Direct Lake on OneLake semantic models. This has been one of the most requested capabilities since Direct Lake launched and closes a long-standing gap with Import and DirectQuery storage modes. You can define calculated columns directly in your semantic model using DAX in web modeling and Power BI Desktop, without changing the table storage mode or modifying data upstream. The problem this solves Direct Lake combines Import-like performance with near real-time data freshness by querying Delta tables in OneLake and loading data into memory as needed. But until now, if your model needed a derived column, you had only two options: push the logic upstream into the data source or move the table to a different storage mode. Calculated columns close that gap – you can now define columns directly in the semantic model using DAX without leaving Direct Lake. What you can build Common use cases include: Derived values, such as an age calculated from a birth date. Concatenating fields, such as city and region into a single field for slicers. Formatted dates like Month-Year for grouping in visuals. Multilingual reports using data translations with USERCULTURE(). Personalized content based on functions like USERPRINCIPALNAME(). Examples 1. Age = DATEDIFF( DimCustomer[BirthDate], TODAY(), YEAR ) 2. Customer Location = DimCustomer[CityName] & ", " & DimCustomer[ContinentName] 3. Month Name = FORMAT( DimDate[FirstOfMonth], "mmmm", USERCULTURE() ) The first two return the same value for every user unless security context differs. The third adapts to the language of the person viewing the report – see Month Name. Calculated columns now have a new Expression Context property. Direct Lake calculated columns support User Context expression context only. With User Context: The expression is evaluated when a user queries the model. Evaluation respects row-level security (RLS) and object-level security (OLS). Expressions that do not reference user-aware DAX expressions or secured columns typically return the same value for every user. Considerations: Cannot be used in relationships. Direct Lake calculated columns are evaluated at query time and do not materialize. Because of this, they cannot be used as relationship keys. Build relationship keys in the Delta table when needed. Do not observe filter context. Calculated columns return a fixed value for each row and do not respond to report filters or slicers. Use a measure when the result must change based on report interactions. Unlike standard calculated columns, Direct Lake calculated columns are evaluated in the current user's security context. This means calculations automatically respect RLS and OLS. Security behavior across expression contexts The security difference is easiest to see with a column that references a protected value. Consider a model where OLS hides DimCustomer[Education] from a "NoEducationOLS" role, and a calculated column derived from it: Is Graduate = IF( DimCustomer[Education] = "Graduate Degree", "Yes", "No" ) The result depends on the expression context: Import - Standard Import - User Context Direct Lake - User Context Observes OLS No Yes Yes Result for a restricted user "Yes" or "No", derived from the hidden value Column not available Column not available With Standard, a restricted user still sees the derived answer and the protection is effectively bypassed. With User Context in both Import and Direct Lake, the reference to the secured column is evaluated within the user's security context, so the restricted user does not see the derived column. The sensitive value is never exposed. Import – Standard Expression Context Import – User Context Expression Context Getting Started Calculated columns for Direct Lake are available in preview. Open a Direct Lake on OneLake semantic model in the web or Desktop, create a calculated column, and begin modeling directly in DAX. To learn more, see the Create calculated columns in Power BI Desktop documentation.1KViews0likes0CommentsTMDL View on the web: Edit semantic models as code in your browser (Preview)
TMDL View on the Web is a 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.2.2KViews4likes2CommentsTMDL 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.4KViews1like4CommentsLeveraging pure Direct Lake mode for maximum query performance
Co-authored with Kay Unkroth We are happy to announce a new Direct Lake semantic model property to control Direct Lake behavior. Direct Lake, by default, will transparently fallback to DirectQuery whenever a DAX query exceeds the limits on a SKU or uses features not supported by Direct Lake mode, such as SQL views from the Warehouse. This makes sure your reports show data, but it could be at the cost of performance. Now you can choose what happens instead. This property can be viewed or set when you open the data model in the Fabric workspace. In the Data pane navigate to the Model Explorer, click on Semantic model, and then in the Properties pane choose the Direct Lake behavior on your custom Direct Lake semantic model. Automatic will allow Direct Lake with fallback to DirectQuery. This is the default behavior. Direct Lake only will ensure no fallback. DirectQuery only will always fallback to DirectQuery, running all DAX queries as SQL queries through the Warehouse. Advanced BI pros working with Direct Lake models using third-party tools or custom solutions based on Tabular Object Model (TOM) or Tabular Model Scripting Language (TMSL) can also use this property to control query processing. Specifically, BI pros can now configure their semantic models to use pure Direct Lake mode. The new property is called DirectLakeBehavior. It can be configured to allow Direct Lake and DirectQuery mode (Automatic), Direct Lake-only mode, or DirectQuery-only mode, as in the following code listing. The default setting for DirectLakeBehavior is Automatic, which means Direct Lake models read delta tables directly from OneLake — unless they encounter an issue that prevents efficient loading of data into memory. Reasons include delta tables that exceed the SKU-based max number of parquet files or row groups, memory pressure, and feature limitations, such as model tables based on Data Warehouse views. The presence of Row-level security (RLS) or Object-level security (OLS) at the source also falls into the category of feature limitations. Another frequently encountered reason is an unprocessed table in the Direct Lake model. If you programmatically add a table to a model by using a third-party tool, TOM, or TMSL, don’t forget to process (refresh) the table so that Direct Lake mode can load the columns into memory when a DAX query needs them. Otherwise, if a column needed for a DAX query can’t be loaded, Direct Lake mode falls back to DirectQuery mode to process the DAX query, which can impact DAX query performance. For more details, check out the Fallback and Known issues and limitations sections in the Direct Lake overview article in the product documentation. Fallback to DirectQuery mode ensures that reports built on top of a Direct Lake model show results despite any Direct Lake-impacting issues. On the flip side, this fallback can also hide critical problems. Perhaps your delta tables require optimization to keep the number of parquet files and row groups at reasonable levels. Perhaps, the data volume necessitates a higher Fabric SKU to leverage Direct Lake model more consistently. Or perhaps you would just like a reminder that you need to process your tables after schema changes. With fallback enabled, how can you be sure that your semantic models really leverage Direct Lake mode? Up until now, you had to analyze the query processing in Performance analyzer or by using SQL Server Profiler to discover fallbacks to DirectQuery mode. But the new DirectLakeBehavior property greatly simplifies this. Just set the DirectLakeBehavior property to DirectLakeOnly and your DAX queries will fail when the data can’t be loaded. The error message conveniently reveals the reasons. Or put another way, if your DAX queries succeed in pure Direct Lake mode, you can rest assured that your semantic model can load the columns. Moreover, did you notice the DirectQueryOnly option? Yes, you can now configure a Direct Lake model to always operate in DirectQuery mode. This can make sense for performance measurements. If you test query perf in DirectQueryOnly mode, you can reliably evaluate the impact of fallback. If DirectQueryOnly perf is acceptable, it makes sense to enable fallback for your semantic model in production. If it isn’t, DirectLakeOnly might be the better option. As a best practice, we recommend that you work with your Direct Lake models in pure Direct Lake mode during the model authoring phase and then evaluate fallback performance in pure DirectQuery mode to determine the best DirectLakeBehavior configuration when deploying your solution to production. Fabric is redefining how customers can build their BI solutions for faster performance at big-data scale while at the same time reducing Total Cost of Ownership (TCO) and infrastructure complexity, and Direct Lake models are a key to delivering actionable insights with the speed of thought on top of your Fabric investment. So, don’t delay and leverage pure Direct Lake mode in your model authoring. We hope this new level of control helps you streamline your Direct Lake model authoring processes. And as always, please provide us with feedback if you want to help deliver additional enhancements. We hope you are as excited about Fabric and semantic models in Direct Lake mode as we are. We think this is a massive innovation and are looking forward to hearing from you!3.5KViews0likes0CommentsMicrosoft Fabric Copilot to write DAX queries in Power BI update
We are excited to announce that writing DAX queries with Copilot can utilize semantic model descriptions, synonyms, and sample values from columns. Microsoft Fabric Copilot helps you with DAX queries in Power BI Desktop or the browser. In DAX query view, select the Copilot button to open an inline Copilot where you can enter your request for writing or explaining a DAX query. Your request will include the context of where you are, using metadata from tables, columns, and measures, such as names and data types. With this update, additional information is included to help Copilot understand the semantic model. Descriptions are a property on the model where you provide additional information about a column, table, or measure to help model consumers when building reports. This is great for spelling out acronyms. For example, for a measure called 'YOY Growth' the description could be 'Year over year growth in sales, based on same range starting 12 months prior.' To keep Copilot response fast, Copilot can only see the first 200 characters. Descriptions can be added in the Properties pane of any table, object, or measure selected in the Model explorer, available in the Data pane of Model view or in the new TMDL view. There is also a Copilot to help write descriptions of measures in a model, which is highly recommended as consumers of the model, with or without Copilot, can only see name and description and do not see the DAX formula itself. Synonyms can be added to provide alternative names or how others may reference this column. This can help Copilot identify the right column to use if the user request uses a synonym. For example, to keep the axis label shorter the column is named 'YOY Growth', the synonyms could include 'Yearly growth', 'YOY Change', and 'Year over year delta'. Learn more about how to add synonyms. Synonyms can also be added in the Properties pane of any table, column, or measure selected in the Model explorer, available in the Data pane of Model view and there is a Copilot to help you add these synonyms. Sample values include the minimum and maximum values of a column. This gives the context of the numerical or date range and text examples. For example, the range of quantities ordered could be from 1 to 10 or 10 to 100, and a column of state names may be entered as 'WA' or 'Washington'. You do not have to add these, we will do this automatically for you. Here I have a semantic model where I have added in synonyms and descriptions. Let’s see the power of descriptions. The model includes a calculated table with information about the semantic model’s tables, which is a self-documenting technique. The table is called 'xTables' which does not convey that purpose well but does put it at the bottom of the table list, which was why it was named that way. The description for this table can give more context with 'This is information about this semantic model's tables.' Now when I ask Copilot to tell me more about the tables in this semantic model, the DAX query returned utilizes that table. Note, the DAX function INFO.VIEW.TABLES() was used in the calculated table, which can also be run as a DAX query if you have permission to edit the model. If you only have permission to view and run queries, you cannot run that DAX function and would only be able to get the information from this table. And in the case of column name using an acronym, the description can remove ambiguity on what it may mean, and Copilot can find the correct measure to use. Here I have a measure abbreviated to 'S/O', which I provide additional context for with the description, 'Calculates the average sales per order by dividing the total sales by the total number of orders.' Now when I request 'Write a DAX query to show average sales per order', Copilot can find the correct measure to use. Let’s see how synonyms can help. The model has a measure called [Costs] but it has a synonym of 'expenses'. I can now ask Copilot using the synonym and I get the data I was expecting from the DAX query. Finally, let’s see how sample values can help. In my model, I can see the minimum and maximum values using the Column statistics quick query, available from the Data pane. The values for states in this model are spelled out instead of using abbreviations. When I ask Copilot for a DAX query, I may not know this and use the abbreviation. With the sample values included with the request to Copilot, Copilot generates a query using the correct filter value, in this case, using 'Alabama' instead of 'AL' from the request I sent. It also used 'USA' instead of 'America' as that was also in the sample values for the Country column. _DAX_queries_in_Power_BI_update When I run this query, I get the results I am looking for. For more guidance on best practices in semantic modeling to give your model consumers the best experience whether they are creating reports or using Copilot, check out Optimization for Power BI guide at power bi optimization - Optimizing for report authors and model consumers Copilot to write and explain DAX queries in DAX query view is also using the new Azure OpenAI model. You may notice some changes from previous interactions with Copilot and an overall faster experience. Learn more about Microsoft Fabric and Copilot for Power BI with these resources. What is Microsoft Fabric - Microsoft Fabric | Microsoft Learn Overview of Copilot in Fabric - Microsoft Fabric | Microsoft Learn Overview of Copilot for Power BI - Power BI | Microsoft Learn Write DAX queries with Copilot - DAX | Microsoft Learn Use Copilot to create measure descriptions (Preview) - Power BI | Microsoft Learn Enhance Q&A with Copilot for Power BI - Power BI | Microsoft Learn4.1KViews0likes0CommentsDeep dive into Direct Lake on OneLake and creating Direct Lake semantic models in Power BI Desktop
In March 2025, we announced the public preview of creating Direct Lake semantic models in Power BI Desktop. Microsoft Fabric’s OneLake data is visualized in Power BI without duplicating data using the new Direct Lake storage mode. Power BI semantic models with Direct Lake tables can give you the latest data from the OneLake to visualize insights quickly and dynamically in Power BI reports and provide the right context for success with Copilot. Now, it’s even easier than ever, as you can create and edit Direct Lake semantic models in Power BI Desktop. And, for the first time with Direct Lake models, you can add tables from multiple data sources, giving you the full flexibility to use the OneLake data in Power BI. Let's get started by demonstrating how to create these Direct Lake semantic models in just a few clicks. First, if you haven't done so already, in the Preview features of Options select Create semantic models in Direct Lake storage mode from one or more Fabric artifacts. Then, in a new Power BI Desktop instance, select a Lakehouse or Warehouse from the OneLake catalog, then Connect. Give the semantic model a name, pick a workspace, and select the tables you want to include then OK. The semantic model is created in the service, accessing the data from the OneLake storage and now you are live editing the semantic model in Desktop, easy as that! To bring in other tables from another Lakehouse or Warehouse, return to the OneLake catalog. ke_and_creating_Direct_Lake_semantic_models_i Like when you created the semantic model, just pick a Lakehouse or Warehouse and click Connect. This time you are already in a semantic model, so the name and workspace options are removed, just pick the tables and click OK. And it’s added to the semantic model! From here you can continue data modeling: add relationships, measures, calculation groups, hierarchies, and more. DAX query view is available to view data in the tables and to try out calculations. TMDL (Tabular Model Definition Language) view is also available to make changes using code. The tables are all stored in the same OneLake, so regular relationships can be created between the tables, similar to the import experience. To create a report, go to File > Blank report and then live connect to the semantic model you are also editing. To find it, go to OneLake catalog > Power BI semantic models and it should be at the top of that list as you were just editing it, then click Connect. This gives you two instances of Power BI Desktop, one live editing the model and the other editing the report with a live connection. If you have multiple monitors, or a single large monitor, you can now edit them side by side. to_Direct_Lake_on_OneLake_and_creating_Direct_Lake_semantic_models_i You can save the report PBIX as you would any live connected report and publish when ready. For the model being live edited in Power BI Desktop, there is no local PBIX file created as the semantic model is already in the workspace. You can choose to export to Power BI Project to have a local copy of the metadata. When created in Desktop, these Direct Lake tables are the new flavor of Direct Lake, called Direct Lake on OneLake. The existing Direct Lake, now called Direct Lake on SQL, behaves just like Direct Lake on OneLake when accessing data from the OneLake delta tables. The difference is what they can do in addition to Direct Lake mode. Direct Lake on OneLake never uses DirectQuery to access data. Direct Lake on SQL also can talk to the SQL endpoint using DirectQuery. Views are accessed using DirectQuery mode, not Direct Lake, unless they materialized as delta tables. Direct Lake on OneLake is multi-source. You can use multiple Lakehouse or Warehouse tables in the same semantic model. Direct Lake on SQL is single source. Direct Lake on OneLake permission is only dependent on each source itself. Currently, this is either a Lakehouse or Warehouse. Use the 'ReadAll' permission to enable access to the delta tables. Shortcut tables can only be accessed with OneLake security early access. More information about shortcut tables is described below. Direct Lake on SQL permission is dependent on the SQL analytics endpoint of the source. Use the 'ReadData' permission to access delta tables through the SQL endpoint. Direct Lake on OneLake semantic models are created and edited in Power BI Desktop. Support for creation and full editing in web is planned. Limited web modeling is supported at the start of the public preview. Direct Lake on SQL semantic models are created from the web in the Lakehouse or Warehouse by clicking New semantic model and can be edited in either web or Power BI Desktop. Direct Lake on SQL does and will continue to have the fallback to DirectQuery option to be able to utilize the SQL endpoint. There is no more fallback to DirectQuery available when you create a Direct Lake on OneLake semantic model in Power BI Desktop. This Direct Lake storage mode only connects to the OneLake tables and is not downstream or impacted by the SQL analytics endpoint. The Direct Lake behavior option, found in Model view > Data pane > Model explorer > Semantic model node properties pane, will be greyed out to indicate this new Direct Lake on OneLake storage mode. Direct Lake on OneLake doesn’t show or allow the use of views in the semantic model, unless they materialized as delta tables. Direct Lake on SQL shows and uses views in DirectQuery mode. During the initial public preview, Direct Lake on OneLake doesn’t support the use of shortcut tables in the semantic model, or using any table in a Lakehouse opted into the public preview of 'Manage OneLake data access (preview)'. Accessing any table, including shortcut tables, is supported if you sign up for early access of the upcoming OneLake security. Migrating an existing Direct Lake on SQL semantic model to Direct Lake on OneLake is possible in Power BI Desktop now TMDL view is available in live edit. Create a test Direct Lake on OneLake semantic model using the same data source in Power BI Desktop. Remember views should be materialized and for shortcut tables, they are not yet supported unless in early access of OneLake security. Go to the OneLake catalog > Pick the Lakehouse or Warehouse > Connect. Navigate to TDML view, and from the Data pane > Model explorer, drag the Semantic model node to the script window to script the entire model. Scroll to the bottom to find the expression, copy the code starting with 'let'. Open a new instance of Power BI Desktop by going to File > Blank report. Then, live edit your existing Direct Lake on SQL semantic model. Go to OneLake catalog > Power BI semantic models. Pick the model, then on the drop-down on Connect choose Edit. Navigate to TDML view, and from the Data pane > Model explorer, drag the Semantic model node to the script window to script the entire model. To give yourself a way to undo the migration, you have two options. The first options are you can create two TMDL scripts of the semantic model so you can apply the un-altered one to return to Direct Lake on SQL. The second option is you can navigate to drop-down below the name to click Version history and create a version to return to. To continue, scroll down to the bottom of the script to find the expression in the Direct Lake on SQL model. Paste in the one you copied from the test Direct Lake on OneLake model. Don’t hit apply just yet! If this is a Lakehouse without schemas or folders, there is one additional step. If you are using a Warehouse or Lakehouse with schemas, you do not need to do this step. Click Replace in the ribbon and look for 'schemaName: dbo', changing 'dbo' with what your schema happens to be. Keep the Replace box empty to remove all these references. Now click apply. If you have calculated tables or calculation groups, you may need to go to Model view and click refresh. You can test out the semantic model by going to DAX query view and running any query. Quick queries are available in the right-click menu of any table, column, or measure in the Data pane to generate a DAX query for you. To recap, you can create semantic models using Direct Lake on OneLake storage mode in Power BI Desktop from one or more Fabric artifacts. At this time, only Lakehouses and Warehouses are available, but other artifacts will be added during the public preview. To create the semantic model with Direct Lake tables, follow these steps. Open Power BI Desktop and turn on the public preview for Create semantic models in Direct Lake storage mode from one or more Fabric artifacts. It is recommended to also turn on Live edit of Power BI semantic models in Direct Lake mode too, if it is not already turned on to edit the model you create later in Power BI Desktop. Go to OneLake catalog in the ribbon. Pick a Lakehouse or Warehouse with the tables you want to add and click Connect. Give your semantic model a name and pick the tables you want to use then click OK. Now the semantic model in Direct Lake mode is created in the service and you are live editing the model in Power BI Desktop. To add tables from other OneLake Fabric artifacts, such as Lakehouses or Warehouses, follow these steps. Go to OneLake catalog again in the ribbon. Pick another Lakehouse or Warehouse with the tables you want to add and click Connect. Pick the tables you want to use then click OK. That’s it! Now you can continue to build your semantic model or add more tables from other Lakehouses or Warehouses. In addition, you can use the Power BI Project by going to File > Export > Power BI Project. To create a report from this newly created semantic model there are many paths, but here is how you can do it in Power BI Desktop to get you started. In Power BI Desktop go to File then select Blank report. This will open a second instance of Power BI Desktop on your machine. If you have multiple monitors, you can then build your semantic model on one screen and build your report on the other screen. Go to OneLake catalog in the ribbon. Pick the semantic model you just created and click Connect. And now you can create fully featured Power BI reports just like you can with any published semantic model in Power BI Desktop. When you are ready you can click the Publish button in the Home ribbon to publish it. As with any published Power BI semantic model, you can create reports, explorations, DAX queries, and paginated reports in the service, as well as connect to the model via Excel. Microsoft Fabric Copilot in Power BI may be available to help you create reports in Power BI Desktop or the web. For more information and any limitations about Direct Lake on OneLake during public preview see the documentation at aka.ms/DirectLake and these resources may also be helpful. Live editing in Power BI Desktop DAX query view in Power BI Desktop TMDL view in Power BI Desktop Power BI Project Version history for web modeling and live editing Lakehouses Warehouses Try it out today and let us know your feedback by commenting below!8.2KViews0likes0CommentsIntelliSense improvements to DAX query view
The latest update to DAX query view introduces a major improvement to IntelliSense, eliminating auto-preselection to enhance efficiency and accuracy. Data Analysis Expressions, or DAX, is the key to accessing and analyzing data in a semantic model. Previously, IntelliSense would automatically preselect options, leading to unintended DAX function insertions when users pressed Tab or Enter. This is a common feedback item – thank you to everyone who provided this feedback! Now, IntelliSense only preselects suggestions after explicit actions, such as arrowing down or typing more specific inputs, ensuring an uninterrupted flow with Tab and Enter to structure the query as you type. By prioritizing user intent, the improved IntelliSense behavior empowers people writing DAX queries to be more productive. This improvement is automatically part of Power BI Desktop starting with the April 2025 release and is available now when using DAX query view in the web. Next steps: Use DAX query view in Power BI Desktop with any semantic model, including live editing a Direct Lake model, and when creating a report with a live connection to a semantic model. Write DAX queries in the web on any published Power BI semantic model Learn about DAX queries at DAX queries. Learn about DAX query view at DAX query view.1.4KViews0likes0CommentsDeep dive into composite semantic models with Direct Lake and import tables
Getting your data job done just got easier with composite semantic models, mixing Direct Lake tables with import tables, now available in public preview. Direct Lake on OneLake table storage mode already could mix tables from other Fabric data sources, such as lakehouses, warehouses, SQL databases in Fabric, and mirrored databases. And with this update, now that flexibility is extended much further with the ability to add in import tables from any data source, from 100s of connectors in Power Query online. The import tables added can also be from the same source as your Direct Lake tables. A small dimension table changed from Direct Lake to import can have a calculated column or the hierarchy usable in Analyze in Excel. Semantic link labs have a function to convert in place. Refer to the Convert a table in Direct Lake mode to import mode code example. A screenshot of Power BI web modeling showing tables in Direct Lake storage mode and import storage mode in the same composite model with options to add more tables. Regular relationships with Direct Lake and import composite models keep the performance of reports as expected. This is an improvement over the traditional DirectQuery and import composite models only supporting limited relationships. Create the Direct Lake and import composite models using Power BI experiences in the web. Power BI Desktop live editing is also available, but without the ability to choose different tables from the OneLake or transform options on import tables. This update also comes with more options to create a new semantic model with Direct Lake on OneLake tables. A screenshot of the create page in the Power BI service showing the OneLake catalog tile used to create semantic models from scratch with Direct Lake tables. On the main Fabric portal page: From the 'Create' button in the left navigation, choose the OneLake catalog tile and select a Fabric item with delta tables, then select 'Connect'. On the workspace page: From the 'New item' button choose 'Semantic model', then select the 'OneLake catalog tile' and a Fabric item with delta tables and 'Connect'. On the Lakehouse page: In the ribbon, choose 'New semantic model'. In addition to the existing path from Power BI Desktop. In Power BI Desktop: In the ribbon, select the 'OneLake catalog' then choose a Fabric item with delta tables and 'Connect'. These all lead to the semantic model with Direct Lake tables dialog. A screenshot of the semantic model creation dialog when creating with Direct Lake tables. There are several ways in web modeling to create a composite model with Direct Lake and import tables. Web modeling includes 4 new buttons when editing any semantic model. A screenshot of Power BI web modeling with the Get data, OneLake catalog, Transform data, and Refresh buttons added to the ribbon. Adding Direct Lake tables to import or import tables to Direct Lake tables is as easy as clicking a button. On an existing Power BI semantic model with tables in Direct Lake on OneLake storage mode: In the ribbon, select the 'OneLake catalog' then choose a Fabric item with delta tables and Connect. On an existing Power BI semantic model with tables in import storage mode: In the ribbon, select 'Get data' or 'Transform data' then choose any source add a table in import mode. You can continue to use Edit tables to change out tables used from Direct Lake sources and continue to use Power Query online through 'Transform data' to edit and bring in new tables in import storage mode. Refresh is also now available to update import tables data and reframe Direct Lake tables and perform a schema sync on all tables to get latest column information from the respective data sources. You can continue semantic modeling in the web, or you can switch to Power BI Desktop and continue to live edit the semantic model there. A screenshot of Power BI web modeling showing how to Edit in Desktop from the Editing drop down. Semantic modeling can include these tasks and many more to get your data ready for reporting. Rename tables and columns, and add descriptions, for easier report creation. Add relationships between tables upfront. Add measures to aggregate data columns and perform data analysis such as % of total or % change. Add calculated columns and tables to extend the data already available, including a common date table. Organize the columns by hiding columns not needed for reporting, grouping in display folders, and adding hierarchies. Add row-level security roles, calculation groups, sort by on columns, and more. In web or live editing in Desktop you can rely on version history snapshots in help if you need to undo a change. And like with any semantic model, you can use Semantic Link Labs in Fabric Notebooks to make edits and TDML view in Power BI Desktop. Let’s look at an example. Goal: I want to get my deliveries data from a SQL database in Fabric using Direct Lake storage mode then add my deliveries target data from an Excel file using import storage mode. This example will work if you have a Fabric capacity or Fabric trial capacity. I’ll create a SQL database for deliveries data and create a CSV with the deliveries target data. I created a workspace, then from 'New item' created a 'SQL database'. I used this query to create and populate the 'Deliveries' table. -- Step 1: Create the Deliveries table CREATE TABLE Deliveries ( DeliveryID INT IDENTITY(1,1) PRIMARY KEY, ItemID INT, QuantityDelivered INT, DeliveryDate DATE, SupplierName VARCHAR(100), DeliveryStatus VARCHAR(20), DeliveryReference VARCHAR(50) ); -- Step 2: Generate 1,000 mock delivery records DECLARE @i INT = 0; WHILE @i < 1000 BEGIN INSERT INTO Deliveries ( ItemID, QuantityDelivered, DeliveryDate, SupplierName, DeliveryStatus, DeliveryReference ) VALUES ( ABS(CHECKSUM(NEWID())) % 1000 + 1, -- Assuming ItemID between 1 and 1000 ABS(CHECKSUM(NEWID())) % 100 + 1, -- Quantity between 1 and 100 DATEADD(DAY, -ABS(CHECKSUM(NEWID())) % 180, GETDATE()), -- Past 6 months CHOOSE(ABS(CHECKSUM(NEWID())) % 5 + 1, 'Acme Inc.', 'SupplyCo', 'Warehouse World', 'BulkBuyers', 'Global Goods'), CHOOSE(ABS(CHECKSUM(NEWID())) % 3 + 1, 'Delivered', 'Pending', 'Delayed'), CONCAT('DEL-', FORMAT(@i + 1, '000000')) ); SET @i = @i + 1; END; And this SQL query to make a Calendar table to group the delivery dates into month also. CREATE TABLE Calendar ( DateID INT PRIMARY KEY, Date DATE NOT NULL, Month DATE NOT NULL ); DECLARE @StartDate DATE = GETDATE()-180; DECLARE @EndDate DATE = GETDATE(); WHILE @StartDate <= @EndDate BEGIN INSERT INTO Calendar (DateID, Date, Month) VALUES ( CAST(FORMAT(@StartDate, 'yyyyMMdd') AS INT), -- e.g., 20250101 @StartDate, DATEFROMPARTS(YEAR(@StartDate), MONTH(@StartDate), 1) ); SET @StartDate = DATEADD(DAY, 1, @StartDate); END; I also created a CSV file and added it to my OneDrive. Depending on when you follow this tutorial, you may need to update the months to be in the last 6 months. Month Deliveries target 1/1/2025 151 2/1/2025 163 3/1/2025 153 4/1/2025 184 5/1/2025 163 6/1/2025 199 7/1/2025 186 8/1/2025 171 9/1/2025 121 10/1/2025 103 11/1/2025 131 12/1/2025 187 Now the data is ready! I now go to the New item again in the workspace and choose semantic model. A screenshot of using new item in the workspace to create a new semantic model with Direct Lake or import storage mode tables. From here I can select the 'OneLake catalog tile' and choose the 'Deliveries SQL database' I created. I named my semantic model Deliveries analysis and chose both tables. A screenshot of the semantic model creation dialog. In a few moments my semantic model is created and I’m in the web modeling experience. From here I can add my import table by going to 'Get data'. A screenshot of Power BI web modeling showing how to add an import storage mode table with the Get data button. I choose Text/CSV connection and navigate to where I saved my CSV file with the targets in my OneDrive. Alternatively, you can choose blank table to paste in the values or upload the file directly. A screenshot of Power Query online in Power BI web modeling to add the import table from different connector options. Then you can do additional transformations, if needed. I had an extra blank row that I was able to remove. A screenshot of the transform data experience in Power Query online in the Power BI web modeling experience. Note: If you hadn’t set up a credential for this data source before you may be prompted to do that in the Power Query online experience. After that, if the load data fails on saving the transformations, go to the schedule refresh page of the semantic model and set the credentials there as well before returning to web modeling and refreshing. Now I have my import and Direct Lake tables in my model! A screenshot of Power BI web modeling with tables in Direct Lake and import table storage modes. Tooltips here on the Direct Lake tables will give details about the source name, source schema, source type, and the name and workspace it’s from. When adding tables from different Fabric data sources, I can quickly see where all my tables are coming from. Now I need to create the relationships and measures. I can do that here but now I am going to edit this in Power BI Desktop and give you a TMDL script to run instead. Go to the 'Editing' drop down in the top right corner and pick 'Edit in Desktop'. A screenshot of Power BI web modeling to show where to continue editing in Desktop from the Editing drop down. After Power BI Desktop loads, I am now live editing this composite semantic model. A screenshot of live editing a composite semantic model in Power BI Desktop with tables in both Direct Lake and import storage modes. I can add in my relationships and measure by running this TMDL script: createOrReplace relationship CalendarAndTarget toCardinality: many fromColumn: 'Deliveries target'.Month toColumn: Calendar.Month relationship CalendarAndDeliveries relyOnReferentialIntegrity fromColumn: Deliveries.DeliveryDate toColumn: Calendar.Date ref table Deliveries /// Calculates the average quantity delivered per delivery by dividing the total quantity delivered by the number of deliveries. measure 'Avg Qty per Delivery' = ``` DIVIDE([Total Quantity Delivered], [Deliveries]) ``` formatString: #,0.00 changedProperty = FormatString changedProperty = Description /// Counts the number of unique delivery records by calculating the distinct count of DeliveryID in the Deliveries table. measure Deliveries = ``` DISTINCTCOUNT('Deliveries'[DeliveryID]) ``` formatString: #,0 changedProperty = FormatString changedProperty = Description /// Calculates the percentage of deliveries achieved relative to the monthly target by dividing the number of deliveries by the monthly target. measure 'Target Attainment %' = ``` DIVIDE([Deliveries], [Monthly Target]) ``` formatString: 0%;-0%;0% changedProperty = FormatString changedProperty = Description /// Calculates the difference between the number of deliveries and the monthly target to show how actual performance compares to the goal. measure 'Target Variance' = ``` [Deliveries] - [Monthly Target] ``` formatString: #,0 changedProperty = FormatString changedProperty = Description /// Calculates the total quantity delivered by summing the 'QuantityDelivered' column in the Deliveries table. measure 'Total Quantity Delivered' = ``` SUM('Deliveries'[QuantityDelivered]) ``` formatString: #,0 changedProperty = FormatString changedProperty = Description ref table 'Deliveries target' /// Calculates the total deliveries target for the month by summing the 'Deliveries target' column. measure 'Monthly Target' = ``` SUM('Deliveries target'[Deliveries target]) ``` formatString: #,0 A screenshot of TMDL view when live editing a composite semantic model in Power BI Desktop to add relationships and measures. And right-click the Calendar and 'Mark as date table'. I also hid the base columns I used in measures. Now I want to create a report. The report view is not included when live editing, so I can open a new instance of Desktop to create a report, or I can go back to web modeling and select 'File' then 'Create new report'. If you had closed the browser window from earlier, you could go to the name of the file in Desktop to open a drop down with link to the semantic model in web. A screenshot of Power BI web modeling showing how to create a new report from the file menu. Now I can drag and drop my fields to create some visuals. I can use Copilot as well to quickly create a report. A screenshot of the Power BI report editing experience in the web. I can now use the new organizational themes to apply a theme used in my organization by going to 'View' then 'Theme'. A screenshot of the Power BI report editing experience in the web to apply a theme. And I even have performance analyzer also available to me when editing a report in the web, previously only available in Power BI Desktop. A screenshot of the Power BI report editing experience in the web to use performance analyzer. There are other ways to create these composite models with Direct Lake and import tables. From an existing semantic model with Direct Lake on OneLake and/or import tables you can simply add in additional Direct Lake tables or import tables. You can learn more about Direct Lake in the Direct Lake overview documentation and try it out today!15KViews0likes0CommentsAnnouncing the New Data Connectors for Excel and CSV for Report Creation in Fabric
We are thrilled to announce the public preview of our new Excel and CSV data connectors for creating Power BI reports in Fabric. This new feature is a significant milestone in our ongoing commitment to providing the most comprehensive, unified, and user-friendly cross-platform experience for Power BI users. By integrating Excel and CSV file support directly into the report creation experience in Fabric, we are streamlining workflows for data analysts and other information workers while making it easier than ever to access, analyze, and collaborate on data. Key Features of the New Data Connectors The new Excel and CSV data connectors are designed with flexibility, efficiency, and ease of use in mind. Here are some of the key features: Direct Import: With just a few clicks, you can now import Excel and CSV files directly from OneDrive or a local computer folder (via OneDrive) into their Fabric workspace. This eliminates the need for intermediate storage or conversion steps, significantly simplifying the data ingestion process. Smart Schema Detection: Our connector automatically detects the schema of your Excel and CSV files, including data types and structure. This smart detection saves time and reduces errors in data preparation, allowing you to focus on analysis and insights. Relationship Detection: While data is being loaded into your report, Power BI automatically detects any existing relationships between tables in your Excel and CSV files and applies those relationships to the semantic model behind your Power BI report. This smart relationship autodetection uncovers hidden connections in your data to ensure that you are getting meaningful insights from their data. With the new connectors, you can quickly import data from your Excel and CSV files for exploratory analysis or full-fledged report creation in Power BI, speeding up the iterative process of deriving valuable insights from your data. Getting Started To get started with the new data Excel and CSV connectors, simply follow the following steps: Navigate to any workspace in Fabric. Select the Create button in the left navigation bar or the New report button Select either the Excel or CSV cards to import data and start building a Power BI report. Select an Excel file to upload to OneDrive, for the best experience. After uploading your Excel file to OneDrive, select Next in the Power Query window to choose tables to be included in your Power BI report. Select Create to load the data into a blank Power BI report so you can start building visualizations and generating insights. You can also use Copilot to autogenerate a report for you in a few clicks. Looking Ahead The launch of the Excel and CSV data connector is just the beginning. We are committed to continuously improving the Power BI report creation experience in Fabric to meet the evolving needs of our users by enabling more data connectors. We welcome feedback on this new feature and look forward to seeing the innovative ways our community will use these data connectors to accelerate their data journey. Stay tuned for more updates and visit Microsoft Fabric Ideas to suggest new ideas or upvote existing ideas.2.6KViews0likes0Comments