DAX and Data Modeling
Written By: Sajagan Thirugnanam
Last Updated on September 23, 2026
There are two main ways to create a table from another table in Power BI. In Power BI Desktop, select New table and write a DAX expression such as Sales_2025 = FILTER ( Sales, Sales[Year] = 2025 ), which builds a calculated table from data already in the model. Or open Power Query, right-click the original query and select Reference, then filter or group the new query before it loads.
Use DAX when the new table depends on other model tables or on DAX logic. Use Power Query when the new table is a reshaped version of source data. A third option, Enter data, covers small tables you type by hand.
Why Create a Table from Another Table in Power BI?
The common reasons:
A dimension built from a fact table. A Customer or Product list taken from the distinct values in Sales, so the model can have a proper star schema.
A summary table. Sales by region and month, when a large detail table is not needed at that grain in a visual.
A subset. Only one year, or only active customers, without changing the original table.
A mapping or grouping table. Labels such as region groups that sit beside the original table and relate to it.
A summary table is not a performance fix by default. If the summary only feeds a visual, a measure on the detail table is usually simpler and follows every slicer. A summary table helps when the detail table is too large to keep, or when you need the summary rows themselves for relationships or slicers. The star vs snowflake schema post covers the model shape these tables usually fit into.
Creating Calculated Tables
A calculated table is a table defined by a DAX expression instead of a query to a source. Power BI calculates it from tables already in the model and stores the result like any other table. You can relate it to other tables, add measures to it and use its columns in visuals.
Two facts decide whether it is the right tool:
It is recalculated when the model refreshes, not when a reader clicks a slicer. A calculated table does not respond to report filters.
It takes memory like any imported table, so copying a large fact table doubles its footprint.
Functions you will use most:
Function | Returns | Typical use |
|---|---|---|
| Rows of a table that meet a condition | A subset of a table |
| A table under modified filters | A subset using Boolean filters |
| Unique values of a column | A dimension from a fact table |
| Chosen columns, optionally renamed | A narrower copy of a table |
| Grouped rows with aggregated columns | A summary table |
| A table with extra calculated columns | Adding a value to each row |
Method 1: Create a Table Using DAX
In Power BI Desktop, open Table view and select New table on the Table tools ribbon. It is also on the Modeling ribbon.
Type the table name, an equals sign and the DAX expression in the formula bar.
Press Enter. The table appears in the Data pane.
Example 1: Duplicate a Table
This creates a full copy of the Sales table. The copy has no relationships until you create them. Because it doubles the memory used, copy a table only when you need a second role for it. Copying a fact table such as Sales, as in the example above, is rarely needed. The usual case is a dimension, for example a second date table for ship date.
Example 2: Create a Filtered Table
The same result with CALCULATETABLE, which uses a Boolean filter like CALCULATE does:
Example 3: Create a Summary Table
This returns one row per region with two aggregated columns. The CALCULATE guide explains how filters work inside expressions like these.
Example 4: Create a Dimension from a Fact Table
This returns one row per distinct customer ID and name pair. Relate Customers[CustomerID] to Sales[CustomerID] in Model view. If a customer ID appears with two different names in Sales, the table has two rows for that ID, and the relationship cannot be one-to-many until the source is cleaned.
A date table is a special case of this method. The date table guide shows the DAX for it.
Method 2: Create a Table in Power Query
On the Home ribbon, select Transform data to open Power Query Editor.
In the Queries pane, right-click the query you want to start from.
Select Reference to create a query whose first step is the output of the original. Select Duplicate instead to copy all of the original's steps into an independent query.
Rename the new query and apply your changes: filter rows, remove columns, or use Group By on the Transform ribbon to summarize.
Select Close & Apply.
Reference and Duplicate behave differently later. A change to the original query flows into a referencing query. A duplicate does not change when the original does.
Referencing does not mean the source is read only once. Power BI evaluates each loaded query on its own during refresh, so a referencing query can query the source again. For a staging query you only use as a starting point, right-click it and clear Enable load so it is not also loaded into the model.
Power Query is the better choice when the new table is a cleaned or reshaped version of source data. The Power Query guide covers the transformations.
Method 3: Use "Enter Data" and Relationships
Enter data suits a small table you maintain by hand, such as a mapping of countries to sales regions.
On the Home ribbon, select Enter data.
Type the values or paste them from Excel, name the table and select Load.
In Model view, create a relationship from the new table's key column to the matching column in the main table.
The values live in the report file, so changing them means editing the table in Power BI Desktop and republishing.
Best Practices When Creating Tables in Power BI
Situation | Use |
|---|---|
The new table is a filtered, trimmed or grouped version of source data | Power Query reference |
The new table depends on other model tables or DAX logic | DAX calculated table |
A small list of values you type or paste | Enter data |
The result should change when a reader uses a slicer | A measure, not a table |
Give every table a descriptive name, such as
Sales Summaryrather thanTable1.Remove tables no report uses. Each one adds memory and refresh time.
For per-row values inside an existing table, a column may be enough. The measures vs calculated columns post compares the options.
FAQs
What is the difference between a calculated table and a calculated column in Power BI?
A calculated table is a whole new table defined by a DAX expression that returns a table. A calculated column adds one column to an existing table, with a DAX expression evaluated once per row. Both are calculated at refresh and stored in the model.
Can I create a table in Power BI without using DAX?
Yes. Use Power Query to reference or duplicate an existing query and transform it, as in Method 2, or use Enter data to type a table by hand, as in Method 3.
Do calculated tables update automatically when the data refreshes?
Yes, for import tables. A calculated table is recalculated whenever the tables it uses are refreshed. When it uses DirectQuery tables, it reflects changes only after the semantic model itself is refreshed. It never changes in response to slicers or filters in a report.
Sources
Use calculated tables in Power BI Desktop - Microsoft Learn
SUMMARIZECOLUMNS function (DAX) - Microsoft Learn
SELECTCOLUMNS function (DAX) - Microsoft Learn
Related to DAX and Data Modeling