Меры, в отличие от столбцов, вычисляются только во время использования визуализации, в то время как значения нового столбца вычисляются моментально после его создания. Также вычисляемый столбец сохраняется вместе со всей моделью и его значения рассчитываются во время загрузки данных в модель, в то время как для меры хранится только формула, по которой она вычисляется.
Таким образом, меры представляют собой агрегаты, вычисляемые при каждом визуальном взаимодействии, столбцы же — выражения на уровне строк, которые оцениваются во время загрузки и обновления данных.
Чтобы выбрать между столбцом и мерой, нужно понимать суть нашего вычисления. Желательно создавать меры для коэффициентов и агрегаций (суммы, процента, и т.д.), а также для выражений, которые реагируют на контекст указанного фильтра. Столбцы же больше подходят для статических и строковых выражений, атрибутов и категорий.
Она состоит из следующих элементов:
A: Название новой меры.
B: Оператор (=). Как и в Excel он указывает на начало вычисляемого высказывания.
C: SUM - это функция DAX. С ее помощью можно найти сумму значений.
D: В круглых скобках указывают аргумент функции (те значения, которые участвуют в расчетах). Каждая функция должна иметь хотя бы один аргумент.
E: Название таблицы, из которой берется поле или столбец.
F: Название поля, из которого формула будет брать значения.
У нас создается новая мера «План продаж», которая будет равна сумме значений столбца [Quantity] из таблицы [Sales].
G: Оператор умножения.
Проще говоря, эта формула DAX дает команду системе рассчитать произведение суммы значений Quantity и 1,5 и сохранить значение в новом поле или столбце, называемом «План продаж».
Чтобы проще было понять формулу, можно разбить ее на элементы и проговорить их.
В таблице Sales для каждой строки в мере «План продаж» рассчитай результат, умножая значения из столбца [Quantity] на 1,5.
Все просто!
Cost of sales = SUMX ( Sales; Sales[Quantity] * Sales[Net Price] )
Gross Margin :=
SUMX (
Sales;
Sales[Quantity] * ( Sales[Net Price] - Sales[Unit Cost] )
)
CALCULATE (
SUM(Sales[SalesAmount]),
FILTER (
'Sales',
AND ( 'Sales'[DateKey] > DATE ( 2012, 1, 1 ), 'Sales'[DateKey] < DATE ( 2012, 12, 31 ) )
)
)
SUMX
Для чего нужна формула SUMX? Она позволяет суммировать значения выражения по строкам.продажи =
SUMX (
'продажи',
'продажи'[количество] * 'продажи'[цена] )
SUMX(factonlinesales, factonlinesales[unitprice]*factonlinesales[salesquantity] - factonlinesales[discountamount])
1. CALCULATE
CALCULATE рассчитывает выражение с учетом измененного контекста фильтра.2.FILTER
FILTER выбирает данные в таблице или в выражении по заданному критерию. Результат ее вычисления — таблица.3.REMOVEFILTERS
REMOVEFILTERS очищает фильтры в указанной таблице или столбце.SUM ( factonlinesales[salesamount] )
/ CALCULATE (
SUM ( factonlinesales[salesamount] ),
REMOVEFILTERS ( dimcustomer )
)
CALCULATE (
SUM ( factonlinesales[salesamount] ),
REMOVEFILTERS ( dimproduct ),
SUMMARIZE (
dimproduct,
dimproduct[colorname]
)
)
'Таблица'[Столбец]
[Мера]
Сумма Прибыли =
...
код DAX
...
= 2 * 3 / 4
=
Функция 1
+ Функция 2
=
Функция (
Параметр 1;
Параметр 2
)
=
Функция 1(
Функция 2()
)
= Функция (Значение)
=
'Таблица'[Столбец]
+ [Мера 1]
- [Мера 2]
=
Функция (
Параметр 1;
Параметр 2 )
=
Функция (
Параметр 1;
Параметр 2
)
=
Функция (
Параметр 1;
Параметр 2
)
=
Функция (
Параметр 1;
Параметр 2
)