$Syn tables (automatic)
Synthetic keys and associative linking in Power BI
Qlik links tables automatically on every field with the same name and builds synthetic keys when they share several fields. Power BI never links by name. Relationships are explicit, use a single column and have a direction, so migrations usually remodel to a star schema.
What it does in Qlik
In Qlik, any two tables that share a field name are associated. If they share more than one field, the engine creates a synthetic key table ($Syn 1) that holds the combinations. That is usually a modeling warning sign. Loops (circular references) are broken by making some tables loosely coupled.
Qlik example
Sales: LOAD Year, CustomerID, Amount FROM [lib://Data/sales.qvd] (qvd);
Budget: LOAD Year, CustomerID, Budget FROM [lib://Data/budget.qvd] (qvd);
// -> $Syn 1 = Year + CustomerID links Sales and Budget
// usual Qlik fix: explicit key
// Year & '|' & CustomerID AS %SalesBudgetKeyPower BI equivalent
Star schema (preferred)
Create Customer and Date (or Year) dimensions. Relate Sales[CustomerID] and Budget[CustomerID] to Customer[CustomerID], and both year columns to the date dimension. Measures from both facts then work together through the shared dimensions, without the fact tables being linked to each other.
Budget variance = [Sales] - [Budget] -- slices by Customer and Year from the dimensionsComposite key column (when you really need a direct link)
= Table.AddColumn(Sales, "SalesBudgetKey", each Text.From([Year]) & "|" & [CustomerID], type text)Role-playing dates
-- Orders[ShipDate] -> 'Date'[Date] is an inactive relationship
Sales by ship date = CALCULATE ( [Sales], USERELATIONSHIP ( Orders[ShipDate], 'Date'[Date] ) )Gotchas and behaviour differences
- Qlik's associative "grey values" (excluded, but still shown) have no built-in equivalent. Visuals show only related data unless you use Show items with no data or measures designed for it.
- Power BI allows only one active path between two tables. Ambiguous paths (which Qlik would call loops) are blocked or made inactive.
- Bidirectional relationships can mimic Qlik's selection propagation, but they slow models and create ambiguity. Use them sparingly.
Official documentation
- Synthetic keys (Qlik Help)
- Understand star schema and the importance for Power BI (Microsoft Learn)
- Model relationships in Power BI Desktop (Microsoft Learn)
- USERELATIONSHIP function (DAX) (Microsoft Learn)
Related pages
[Inner|Left|Right|Outer] Join / Keep
Join and Keep
Qlik joins on all fields with the same name, and a plain Join is a full outer join. Power Query merges need explicit key columns and a join kind. Keep filters a table without merging, which maps to a semi-join filter or an inner merge you don't expand.
Partial / different approach
LOAD ... AUTOGENERATE ... WHILE ... IterNo()
Master calendar (date table)
The Qlik master calendar script maps to a date table built in Power Query (List.Dates) or DAX (CALENDAR), marked as a date table and related to the fact date. It is essential for every time-intelligence function.
Direct equivalent
Sum({StateName} Sales)
Alternate states (comparative analysis)
Alternate states give objects independent selection sets, for example comparing two groups of regions side by side. Power BI has one filter context per visual, plus disconnected tables and measures that apply them with TREATAS. There is no built-in "state" concept.
Partial / different approach
IntervalMatch(value) LOAD start, end ...
IntervalMatch
IntervalMatch links values (dates or numbers) to the intervals that contain them. Power BI relationships only match equal values. Do it in Power Query, in a DAX calculated column, or by expanding intervals into one row per day.
Partial / different approach
Spotted an error or a better pattern? QlikToDax is maintained by a working BI consultant; corrections are welcome via the About page. Last reviewed 2026-10-25.