$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.

No 1:1 equivalent Modeling Power Query DAX

Short answer: Model a star: facts in the middle, dimensions around them, one single-column relationship per pair. Where Qlik used a multi-field link, build a key column (Text.From([Year]) & "|" & [CustomerID]) or, better, separate dimensions. Use USERELATIONSHIP for role-playing dates.

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

Qlik script
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 %SalesBudgetKey

Power 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.

DAX
Budget variance = [Sales] - [Budget]   -- slices by Customer and Year from the dimensions

Composite key column (when you really need a direct link)

Power Query M
= Table.AddColumn(Sales, "SalesBudgetKey", each Text.From([Year]) & "|" & [CustomerID], type text)

Role-playing dates

DAX
-- 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

Related pages

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.