Заставить функцию Switch вернуть столбец в таблице, а не показатель (PowerBI DAX) - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь изменить показатели с помощью срезов в Power BI Desktop. Я нашел несколько примеров людей, которые это сделали (например, this ).

Они создают таблицу, содержащую имена идентификаторов и показателей. Столбец «Имена мер» этой таблицы будет использоваться в качестве значения поля в фильтре визуализации. Затем они создают функцию переключения, которая, учитывая определенное значение в фильтре, переключает значение в фильтре на меру. Вы можете увидеть пример ниже:

Measure Value = SWITCH(
                            MIN('Dynamic'[Measure ID]) ,
                            1,[Max Temp],
                            2,[Min Temp],
                            3,[Air Pressure],
                            4,[Rainfall],
                            5,[Wind Speed],
                            6,[Humidity]
                            )

Где Dynami c - это группа, содержащая идентификатор меры и имя меры:

Dynami c:

Measure ID | Measure Name
1          |  Max Temp
2          |  Min Temp
3          |  Air Pressure
4          |  Rainfall
5          |  Wind Speed
6          |  Humidity

Все «Имя меры» также являются мерами.

Моя проблема: у меня слишком много столбцов (400!), И я не могу преобразовать их в меры один за другим. На это уйдут дни. Я подумал, что, возможно, я мог бы использовать функцию переключения, чтобы она возвращала столбец в таблице, а НЕ соответствующую меру. Однако я не могу просто вставить 'Name of the table'['Name of the column'] в функцию переключения в качестве параметра результата.

Кто-нибудь знает, как заставить функцию Switch возвращать столбец, а не меру? (Или любое другое предложение)

1 Ответ

1 голос
/ 18 июня 2020

DAX не работает для большого количества таких столбцов, поэтому я бы предложил изменить форму ваших данных (в редакторе запросов), отключив все те столбцы, с которыми вы хотите работать, чтобы вместо таблицы, которая выглядит так

ID | Max Temp | Min Temp | Air Pressure | Rainfall | Wind Speed | Humidity
---+----------+----------+--------------+----------+------------+----------
1  |          |          |              |          |            |
...

вы бы развернули все эти столбцы данных, чтобы он выглядел примерно так:

ID | ColumnName   | Value
---+--------------+-------
1  | Max Temp     |
1  | Min Temp     |
1  | Air Pressure |
1  | Rainfall     |
1  | Wind Speed   |
1  | Humidity     |
...

Затем вы можете создать вычисляемую таблицу Dynamic для использования в качестве среза :

Dynamic = DISTINCT ( Unpivoted[ColumnName] )

Теперь вы можете написать меру переключения следующим образом:

SwitchingMeasure = 
VAR ColName = SELECTEDVALUE ( Dynamic[ColumnName] )
RETURN
    CALCULATE ( [BaseMeasure], Unpivoted[ColumnName] = ColName )

где [BaseMeasure] - это любое агрегирование, которое вам нужно, например SUM ( TableName[Value] ).

...