I’ve found my own solution:
SelectedAttribute =
VAR __SelectedAttribute =
SELECTCOLUMNS (
SUMMARIZE ( Attributes, Attributes[Attributes], Attributes[Dimensions Fields], Attributes[Dimensions Order] ),
Attributes[Attributes]
)
RETURN IF ( COUNTROWS ( __SelectedAttribute ) = 1, __SelectedAttribute )
SelectedMetric =
VAR __SelectedMetric =
SELECTCOLUMNS (
SUMMARIZE ( Metrics, Metrics[Metrics], Metrics[Measures Fields], Metrics[Measures Order] ),
Metrics[Metrics]
)
RETURN IF ( COUNTROWS ( __SelectedMetric ) = 1, __SelectedMetric )
Rank =
SWITCH(
TRUE(),
[SelectedAttribute] = “Customer” && [SelectedMetric] = “Total Sales”, RANKX(ALLSELECTED(Customer[Customer]), [Total Sales], DESC),
[SelectedAttribute] = “Customer” && [SelectedMetric] = “Total Cost”, RANKX(ALLSELECTED(Customer[Customer]), [Total Cost], DESC),
[SelectedAttribute] = “Customer” && [SelectedMetric] = “Total Order Quantity”, RANKX(ALLSELECTED(Customer[Customer]), [Total Order Quantity], DESC),
[SelectedAttribute] = “Customer” && [SelectedMetric] = “Total Orderlines”, RANKX(ALLSELECTED(Customer[Customer]), [Total Orderlines], DESC),
[SelectedAttribute] = “Product” && [SelectedMetric] = “Total Sales”, RANKX(ALLSELECTED(‘Product’[Product]), [Total Sales], DESC),
[SelectedAttribute] = “Product” && [SelectedMetric] = “Total Cost”, RANKX(ALLSELECTED(‘Product’[Product]), [Total Cost], DESC),
[SelectedAttribute] = “Product” && [SelectedMetric] = “Total Order Quantity”, RANKX(ALLSELECTED(‘Product’[Product]), [Total Order Quantity], DESC),
[SelectedAttribute] = “Product” && [SelectedMetric] = “Total Orderlines”, RANKX(ALLSELECTED(‘Product’[Product]), [Total Orderlines], DESC),
[SelectedAttribute] = “Category” && [SelectedMetric] = “Total Sales”, RANKX(ALLSELECTED(Categories[Category]), [Total Sales], DESC),
[SelectedAttribute] = “Category” && [SelectedMetric] = “Total Cost”, RANKX(ALLSELECTED(Categories[Category]), [Total Cost], DESC),
[SelectedAttribute] = “Category” && [SelectedMetric] = “Total Order Quantity”, RANKX(ALLSELECTED(Categories[Category]), [Total Order Quantity], DESC),
[SelectedAttribute] = “Category” && [SelectedMetric] = “Total Orderlines”, RANKX(ALLSELECTED(Categories[Category]), [Total Orderlines], DESC),
[SelectedAttribute] = “Subcategory” && [SelectedMetric] = “Total Sales”, RANKX(ALLSELECTED(‘Product’[Subcategory]), [Total Sales], DESC),
[SelectedAttribute] = “Subcategory” && [SelectedMetric] = “Total Cost”, RANKX(ALLSELECTED(‘Product’[Subcategory]), [Total Cost], DESC),
[SelectedAttribute] = “Subcategory” && [SelectedMetric] = “Total Order Quantity”, RANKX(ALLSELECTED(‘Product’[Subcategory]), [Total Order Quantity], DESC),
[SelectedAttribute] = “Subcategory” && [SelectedMetric] = “Total Orderlines”, RANKX(ALLSELECTED(‘Product’[Subcategory]), [Total Orderlines], DESC),
[SelectedAttribute] = “Reseller” && [SelectedMetric] = “Total Sales”, RANKX(ALLSELECTED(Reseller[Reseller]), [Total Sales], DESC),
[SelectedAttribute] = “Reseller” && [SelectedMetric] = “Total Cost”, RANKX(ALLSELECTED(Reseller[Reseller]), [Total Cost], DESC),
[SelectedAttribute] = “Reseller” && [SelectedMetric] = “Total Order Quantity”, RANKX(ALLSELECTED(Reseller[Reseller]), [Total Order Quantity], DESC),
[SelectedAttribute] = “Reseller” && [SelectedMetric] = “Total Orderlines”, RANKX(ALLSELECTED(Reseller[Reseller]), [Total Orderlines], DESC),
[SelectedAttribute] = “Business Type” && [SelectedMetric] = “Total Sales”, RANKX(ALLSELECTED(Reseller[Business Type]), [Total Sales], DESC),
[SelectedAttribute] = “Business Type” && [SelectedMetric] = “Total Cost”, RANKX(ALLSELECTED(Reseller[Business Type]), [Total Cost], DESC),
[SelectedAttribute] = “Business Type” && [SelectedMetric] = “Total Order Quantity”, RANKX(ALLSELECTED(Reseller[Business Type]), [Total Order Quantity], DESC),
[SelectedAttribute] = “Business Type” && [SelectedMetric] = “Total Orderlines”, RANKX(ALLSELECTED(Reseller[Business Type]), [Total Orderlines], DESC),
[SelectedAttribute] = “Country” && [SelectedMetric] = “Total Sales”, RANKX(ALLSELECTED(‘Sales Territory’[Country]), [Total Sales], DESC),
[SelectedAttribute] = “Country” && [SelectedMetric] = “Total Cost”, RANKX(ALLSELECTED(‘Sales Territory’[Country]), [Total Cost], DESC),
[SelectedAttribute] = “Country” && [SelectedMetric] = “Total Order Quantity”, RANKX(ALLSELECTED(‘Sales Territory’[Country]), [Total Order Quantity], DESC),
[SelectedAttribute] = “Country” && [SelectedMetric] = “Total Orderlines”, RANKX(ALLSELECTED(‘Sales Territory’[Country]), [Total Orderlines], DESC),
[SelectedAttribute] = “Region” && [SelectedMetric] = “Total Sales”, RANKX(ALLSELECTED(‘Sales Territory’[Region]), [Total Sales], DESC),
[SelectedAttribute] = “Region” && [SelectedMetric] = “Total Cost”, RANKX(ALLSELECTED(‘Sales Territory’[Region]), [Total Cost], DESC),
[SelectedAttribute] = “Region” && [SelectedMetric] = “Total Order Quantity”, RANKX(ALLSELECTED(‘Sales Territory’[Region]), [Total Order Quantity], DESC),
[SelectedAttribute] = “Region” && [SelectedMetric] = “Total Orderlines”, RANKX(ALLSELECTED(‘Sales Territory’[Region]), [Total Orderlines], DESC)
)
Dynamic TopNFilter =
VAR SelectedTop = SELECTEDVALUE(‘TopN’[TopN])
RETURN
IF(ISFILTERED(‘TopN’),
INT([Rank] <= SelectedTop), 1)
Rows Matrix = Attributes
Values = Metrics
Filter pane matrix: Dynamic TopNFilter = 1