Dax Pro Solutions – Telegram
Dax Pro Solutions
2.46K subscribers
36 photos
3 videos
22 links
Dax, Power BI, Data Modelling and Architecture
Download Telegram
📈 Управляемые столбцы на RS

Если хочется функционала Fields Parameters или группировать измерения без написания больших SWITCH () функций, то вы можете воспользоваться Calculation Groups механизмом.

‼️ Наиболее важные ограничения и предостережения:

🔴 это Группы расчета (Calculation Groups или CG) и создание/включения их в модели автоматически отключит встроенные механизмы агрегирования по столбцам таблиц (т.е. все меры нужно будет в дальнейшем писать руками);

🔴 CG влияют на вычисления в отчетах или замещают их, если их применять/использовать в модели неверно;

🔴 В дальнейшем, после создания, вы можете использовать только 2х уровневые иерархии расчетов в своих таблицах. Не больше.

🔴 Сворачивание иерархии до верхнего уровня в матрицах и визуалах с механизмом Drill-Down в полях с Calculation Groups также не будет отрабатывать.


👉🏻PBIX для разбора внутри👈🏻

Замена FP на RS may 22 +
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥294
📈 Имитация Field Parameters на PBI Report Server с неравными периодами.

Ограничения:
1. Если в таблицах источников осей есть пустые строки, при создании справочника для осей методом Unpivot в PQ они будут удалены. Требуется перезаполнять пустоту на любое текстовое значение.
2. Такой подход "раздувает" модель и не рекомендуется в проектах с большим количеством уникальных в справочниках.

=============================
Задача:
Дать возможность выбора конечному пользователю требуемой для анализа временной гранулярности с учетом следующих условий:

год – показывать все доступные годы;
квартал – только кварталы 2х последних лет от текущей (сегодня) даты;
месяц – последние 12 месяцев от текущей даты.
=============================

🔧 Порядок решения:
1. Создание вычисляемой таблицы с разной гранулярностью год-квартал-месяц в одном столбце.
2. Сортировка поля выбора гранулярности периодов по дополнительному целочисленному столбцу.
3. Создание связи 'Calendar' [Date] 1 <> * 'Periods For Select' [Date].
'Calendar' на стороне 1, наша 'Periods For Select' на стороне многие, но связь двунаправленная и неактивная (чтобы избежать массы проблем с другими расчетами сдвигов во времени по основному календарю).
В облачной версии можно было бы просто сделать связь многие ко многим и направление фильтра от 'Periods For Select' к 'Calendar', но версии RS не поддерживают такой тип связей в стандартной версии.

4. Написание меры для визуализаций с переключаемой осью, чтобы активировать связь:
Calculate (
....,
Userelationship(
'Calendar' [Date],
'Periods For Select' [Date]
)
)
👉🏻PBIX во вложении👈🏻

RS May 2022+
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥72
This media is not supported in your browser
VIEW IN TELEGRAM
📈 Переключение неравных периодов
с помощью Field Parameters.

Довольно часто для решения UXUI задач требуется автоматически переключать оси графиков, минуя встроенный механизм Drill-down.

ЗАДАЧА
Автоматическое изменение гранулярности оси по условиям:

🔶 если выбран 1 месяц, то выводить ось по датам;
🔶 если выбрано несколько месяцев, изменить грануляцию оси на месяцы;
🔶 если выбрано несколько лет, изменить грануляцию оси на года.

======================================
Последовательность решения:
1. Формируем необходимую таблицу параметров через Новый параметр и выбираем поля из Календаря (Год-Месяц-Дата)

2. Помещаем поле [Month_Date_Axys] в ось нашего графика, а в Slicer поместим год и месяц из таблицы Calendar.

3. Пишем меру, которая будет проверять какой период выбран:
Filter = 
VAR _countmonths = CALCULATE(COUNTROWS(VALUES('Calendar'[Month])),ALLSELECTED('Calendar'))
VAR _filter =
SWITCH(
TRUE(),
_countmonths=1,0,
_countmonths<13,1,
2
)
RETURN
COUNTROWS(
FILTER(
VALUES('Month_Date_Axys'[Month_Date Order]),
'Month_Date_Axys'[Month_Date Order]=_filter
)
)

4. Помещаем меру в панель фильтров на уровень визуального элемента и применяем TOPN =1 фильтрацию.

👉🏻PBIX с подробным описанием внутри👈🏻
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28👍91
📈 Переключение неравных периодов с помощью Field Parameters V2

Основная задача:

При выборе месяца в слайсере, показать в матрице:
· факт за весь прошлый год,
· план на весь текущий год,
· поквартально факт текущего года, но со сдвигом в -1 квартал от текущего выбранного и обнулением в новом году (поступление данных с запозданием в квартал).

Дополнительные требования:
Выбор периода осуществляется по месяцу. В заголовках столбцов матрицы должны так же автоматически меняться названия, в зависимости от выбора в календаре.


Порядок решения:

1. Пишем основные меры, которые будут участвовать в расчетах Field Parameters;
2. Формируем несколько таблиц FP, так как они будут выступать в роли столбцов в матрице.
Для Sales PY меняем имя параметра следующей конструкцией:
Sales PY = 
GENERATE(
ALLNOBLANKROW('Calendar'[Year]),
{
(FORMAT([Year]-1,"yyyy"), NAMEOF('_Measures'[Amount PY]), 0)
}
)

3. Plan CY. Принцип такой же как был описан ранее;
4. Создаём последний параметр, который будет служить для расчета показателей поквартально. Для этого помещаем в FP сразу три меры : [Amount Q1], [Amount Q2], [Amount Q3].
5. Меняем DAX последнего параметра:
FC = 
FILTER(
GENERATE(
FILTER(
CROSSJOIN(
SELECTCOLUMNS(ALLNOBLANKROW('Calendar'[Quarter]),"CurentQuarter",[Quarter]),
ALLNOBLANKROW('Calendar'[Quarter])
),
DAY([CurentQuarter])>DAY([Quarter])
&&YEAR([CurentQuarter])=YEAR([Quarter])
),
{
("FC1 "&YEAR([Quarter]), NAMEOF('_Measures'[Amount Q1]), 0),
("FC2 "&YEAR([Quarter]), NAMEOF('_Measures'[Amount Q2]), 1),
("FC3 "&YEAR([Quarter]), NAMEOF('_Measures'[Amount Q3]), 2)
}
),
[Value3]=INT(DAY([Quarter]))-1
)


👉🏻Скачать PBIX👈🏻

Только для облака
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥21
Media is too big
VIEW IN TELEGRAM
🌟 Настройка вывода недель по параметрам. Какие решения существуют?

Основная задача:

При выборе недели в срезе, показать в матрице:
· переключаемое значение за выбранную неделю,
· переключаемое значение за Х недель вперед,
· дать возможность выбрать значение ячеек матрицы.


Я подготовил для вас 4 способа решения этой задачи при помощи:
+ Field Parameters ( 2 варианта )
+ Calculation Groups
+ Field Parameters + Calculation Groups

👉🏻PBIX во вложении👈🏻

// Буду рад вашим комментариям. Кто хочет, может предложить еще способы реализации и мы оценим их оптимальность и быстродействие.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👍15
🤘 Как проверить, какие данные попали в вычисление?

Довольно часто результат выполнения меры может вас удивлять или вовсе выдавать пустоту там, где должны быть данные. Вы проверили связи, наличие данных в таблице ( например, с помощью COUNTROWS( ) ), но контекст запроса визуального элемента все равно "серая лошадка?"

Я подготовил для вас два способа проверки данных, которые попадают в вычисление с помощью функций CONCATENATEX ( ), COMBINEVALUES ( ). И подробно описал работу на каждом уровне иерархии дат при смещении периодов.

Попробуйте проанализировать с помощью этих вариантов все, что вы делали ранее и где результат вас ставил в ступор. Такой подход поможет взглянуть иначе на расчеты, контексты вычисления и их понимание.

👉🏻PBIX во вложении👈🏻

RS May 22+, PBI Service
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥73👍85👀3
This media is not supported in your browser
VIEW IN TELEGRAM
🔝 Исследование TOPN( ) верхних, нижних и средних продуктов во времени.

Основная логика расчетов вывода TOPN продуктов заключается в выборе месяца, в котором будут оцениваться проданные продукты и выборка из них по условию в пользовательском параметре N верхних, средних или нижних.

Ключевые моменты:
1. Для того, чтобы выбирать месяц и не оказывать влияния на график динамики, мы создадим таблицу для выбора периода оценки TOP продуктов и соединим с фактами неактивной связью 1—>* ;

2. Для обеспечения изменения пользователем количества продуктов, входящих в топ, мы создадим таблицу через числовой параметр;

3. Создадим таблицу-справочник с порядком TOPN - Upper, Middle, Lower для управления пользователем через функционал "Введите данные";

4. Напишем три меры под каждый порядок TOPN - Upper, Middle, Lower, а затем объединим в одну меру [TOP] через SWITCH ( ), обращающийся к справочнику из предыдущего пункта;

5. Помещаем меру [TOP], наименование продуктов и даты из календаря в график и радуемся результатам =)

RS May 2023 +, PBI service.
👉🏻PBIX в комментариях👈🏻
👍34🔥165