Dax Pro Solutions
前往频道在 Telegram
2 053
订阅者
无数据24 小时
无数据7 天
+3230 天
数据加载中...
吸引订阅者
十二月 '24
十二月 '24
+81
在0个频道中
十一月 '24
+60
在0个频道中
Get PRO
十月 '24
+73
在0个频道中
Get PRO
九月 '24
+56
在0个频道中
Get PRO
八月 '24
+62
在0个频道中
Get PRO
七月 '24
+132
在0个频道中
Get PRO
六月 '24
+120
在0个频道中
Get PRO
五月 '24
+93
在0个频道中
Get PRO
四月 '24
+237
在2个频道中
Get PRO
三月 '24
+262
在1个频道中
Get PRO
二月 '24
+283
在1个频道中
Get PRO
一月 '24
+966
在2个频道中
| 日期 | 订阅者增长 | 提及 | 频道 | |
| 21 十二月 | +1 | |||
| 20 十二月 | +5 | |||
| 19 十二月 | +5 | |||
| 18 十二月 | +1 | |||
| 17 十二月 | +35 | |||
| 16 十二月 | +4 | |||
| 15 十二月 | +1 | |||
| 14 十二月 | +2 | |||
| 13 十二月 | +2 | |||
| 12 十二月 | +4 | |||
| 11 十二月 | 0 | |||
| 10 十二月 | 0 | |||
| 09 十二月 | +4 | |||
| 08 十二月 | +11 | |||
| 07 十二月 | +2 | |||
| 06 十二月 | 0 | |||
| 05 十二月 | 0 | |||
| 04 十二月 | 0 | |||
| 03 十二月 | 0 | |||
| 02 十二月 | +2 | |||
| 01 十二月 | +2 |
频道帖子
| 2 | Всем привет!
Теперь вы сможете поддержать нас кружкой кофе с печеньками =) | 1 |
| 3 | 💡 Конкурс от канала DAX Pro Solution
В комментариях находится датасет на 1млн чеков про пиццы =)
Самостоятельная практика:
Задание ★:
Попробуйте повторить расчеты из последнего поста про чеки
Задание ★★★:
Попробуйте придумать ваш вариант решения задачи с выводом сочетаний товаров в чеках
Конкурсная работа:
Задание ★★★★★:
Придумайте и решите с помощью DAX любую задачу, связанную с аналитикой чеков.
Жюри: Администраторы Dax Pro
Сроки сдачи: pbix файл прислать до 12:00 08.05.24
Место сдачи: https://forms.gle/fYN4JMGm5jvaSegq8
Приз: Любая книга про Power BI на выбор в PDF
Желаем всем удачи и готовы к вашим вопросам в нашем чате =) | 8 361 |
| 4 | 🔍 Поиск сочетаний товаров в чеке может помочь магазину оптимизировать свой ассортимент, управлять запасами, разрабатывать маркетинговые стратегии и повышать общую эффективность продаж. Кроме того, анализ может помочь выявить тенденции и предпочтения потребителей.
Порядок анализа:
Выбираем товары --> Получаем список отобранных товаров --> Выводим чеки, в которых есть такое сочетание товаров.
Ход решения:
1. Создаем усеченный дубликат справочника продуктов, который будет содержать только ключ и название. Эта таблица будет служить нам фильтром-слайсером.
2. Создаем неактивную связь 1—>* к таблице продаж.
3. Пишем меру, которая будет подсчитывать сумму всех чеков (которые содержат товары, выбранные в слайсере ) и выводит общую сумму чека при помощи комбинации функций CALCULATETABLE (), FILTER (), GROUPBY(), COUNTX(), USERRELATIONSHIP(), REMOVEFILTERS ()
В заключение скажу, что при тестировании на средних данных (десятки миллионов строк и несколько миллионов уникальных чеков), мера отрабатывает даже в области PRO с ее ограничениями по производительности (их можно найти в документации к продукту).
🤜🏻PBIX в комментариях🤛🏻 | 6 395 |
| 5 | 🔝 Анализ изменения позиций TOPN ( ) продуктов во времени.
Видеть позицию TOPN ( ) товаров в выбранном периоде здорово помогает в анализе текущей ассортиментной матрицы.
А что, если перейти к анализу динамики изменения позиции TOPN ( ) товара? Тогда, мы сможем понять что именно делать с товаром - выводить его или продвигать дальше - на основании пула исторических данных и принимать более грамотные управленческие решения.
В данном примере мы будем использовать 2 календаря для сравнения независимых периодов и отключать взаимодействия визуалов.
Анализ готового решения проходит в пять этапов:
1️⃣ Настраиваем условия отбора,
2️⃣ Проверяем что именно соответствует критериям ( выделено желтым),
3️⃣ Анализируем динамику изменения суммы продаж по отобранным позициям,
4️⃣ Анализируем динамику изменения ранга отобранных позиций на фоне общей суммы продаж,
5️⃣ Проверяем в таблице помесячно изменение ранга каждой позиции. А также присутствие товаров из отсортированной таблицы №2 в столбцах [E],[F] периода сравнения.
Пожалуйста, обратите внимание на цветовые обозначения столбцов, срезов и оси графика, а также пунктирную линию на графиках - это поможет вам понять контексты фильтров, которые применяются в данном расчете.
Благодаря такому подходу к расчетам, мы можем:
✔️ Увидеть динамику изменения позиций Топ товаров;
✔️ Вовремя вычленять товары - аутсайдеры и прокачивать товары-лидеры;
✔️ Видеть тренды быстрорастущих Топов в разрезе рангов по соотношению к общей картине выручки предприятия, а не сравнивать динамику выручки только внутри топовых товаров.
✅RS May2022 +
🤜🏻PBIX в комментариях🤛🏻 | 2 464 |
| 6 | 🔝 Анализ изменения позиций TOPN ( ) продуктов во времени.
Видеть позицию TOPN ( ) товаров в выбранном периоде здорово помогает в анализе текущей ассортиментной матрицы.
А что, если перейти к анализу динамики изменения позиции TOPN ( ) товара? Тогда, мы сможем понять что именно делать с товаром - выводить его или продвигать дальше - на основании пула исторических данных и принимать более грамотные управленческие решения.
В данном примере мы будем использовать 2 календаря для сравнения независимых периодов и отключать взаимодействия визуалов.
Анализ готового решения проходит в пять этапов:
1️⃣ Настраиваем условия отбора,
2️⃣ Проверяем что именно соответствует критериям ( выделено желтым),
3️⃣ Анализируем динамику изменения суммы продаж по отобранным позициям,
4️⃣ Анализируем динамику изменения ранга отобранных позиций на фоне общей суммы продаж,
5️⃣ Проверяем в таблице помесячно изменение ранга каждой позиции. А также присутствие товаров из отсортированной таблицы №2 в столбцах [E],[F] периода сравнения.
Пожалуйста, обратите внимание на цветовые обозначения столбцов, срезов и оси графика, а также пунктирную линию на графиках - это поможет вам понять контексты фильтров, которые применяются в данном расчете.
Благодаря такому подходу к расчетам, мы можем:
✔️ Увидеть динамику изменения позиций Топ товаров;
✔️ Вовремя вычленять товары - аутсайдеры и прокачивать товары-лидеры;
✔️ Видеть тренды быстрорастущих Топов в разрезе рангов по соотношению к общей картине выручки предприятия, а не сравнивать динамику выручки только внутри топовых товаров.
✅RS May2022 +
🤜🏻PBIX в комментариях🤛🏻 | 9 |
| 7 | 🔝 Исследование 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 в комментариях👈🏻 | 2 562 |
| 8 | 🤘 Как проверить, какие данные попали в вычисление?
Довольно часто результат выполнения меры может вас удивлять или вовсе выдавать пустоту там, где должны быть данные. Вы проверили связи, наличие данных в таблице ( например, с помощью COUNTROWS( ) ), но контекст запроса визуального элемента все равно "серая лошадка?"
Я подготовил для вас два способа проверки данных, которые попадают в вычисление с помощью функций CONCATENATEX(), COMBINEVALUES ( ). И подробно описал работу каждого на каждом уровне иерархии дат при смещении периодов.
Попробуйте проанализировать с помощью этих вариантов все, что вы делали ранее и где результат вас ставил в ступор. Такой подход поможет взглянуть иначе на расчеты, контексты вычисления и их понимание.
👉🏻PBIX во вложении👈🏻
✅ RS May 22+, PBI Service | 7 282 |
| 9 | 🌟 Настройка вывода недель по параметрам. Какие решения существуют?
Основная задача:
При выборе недели в срезе, показать в матрице:
· переключаемое значение за выбранную неделю,
· переключаемое значение за Х недель вперед,
· дать возможность выбрать значение ячеек матрицы.
Я подготовил для вас 4 способа решения этой задачи при помощи:
+ Field Parameters ( 2 варианта )
+ Calculation Groups
+ Field Parameters + Calculation Groups
👉🏻PBIX во вложении👈🏻
// Буду рад вашим комментариям. Кто хочет, может предложить еще способы реализации и мы оценим их оптимальность и быстродействие. | 1 873 |
| 10 | 📈 Переключение неравных периодов с помощью 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👈🏻
✅ Только для облака | 1 766 |
| 11 | Коллеги, нам важно вашем мнение!
Как вы относитесь к контенту этого канала: | 1 818 |
| 12 | 📈 Переключение неравных периодов
с помощью 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 с подробным описанием внутри👈🏻 | 6 054 |
| 13 | 📈 Имитация 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+ | 1 978 |
| 14 | 📈 Управляемые столбцы на RS
Если хочется функционала Fields Parameters или группировать измерения без написания больших SWITCH () функций, то вы можете воспользоваться Calculation Group механизмом.
‼️ Наиболее важные ограничения и предостережения:
🔴 это Группы расчета (Calculation Groups или CG) и создание/включения их в модели автоматически отключит встроенные механизмы агрегирования по столбцам таблиц (т.е. все меры нужно будет в дальнейшем писать руками);
🔴 CG влияют на вычисления в отчетах или замещают их, если их применять/использовать в модели неверно;
🔴 В дальнейшем, после создания, вы можете использовать только 2х уровневые иерархии расчетов в своих таблицах. Не больше.
🔴 Сворачивание иерархии до верхнего уровня в матрицах и визуалах с механизмом Drill-Down в полях с Calculation Group также не будет отрабатывать.
👉🏻PBIX для разбора внутри👈🏻
✅ Замена FP на RS may 22 + | 6 656 |
| 15 | 📈 Как из RS или PBI Desktop отправить графики в Power Point без потери качества.
Все просто:
1️⃣ Файл - экспорт - PDF
2️⃣ Открываем PDF в Wondershare PDFelement или аналогичной программе, которая может работать с Power Point
3️⃣ Экспортируем в Power Point
// да, не интерактивные графики, как в облачной версии. Но без потери качества. | 6 664 |
| 16 | Хотите решения вашей задачи? | 549 |
| 17 | Хотите решения вашей задачи? | 1 |
| 18 | 🌠 Сравнение двух рандомных месяцев с динамическим заголовком.
Для обеспечения возможности сравнения различных месяцев по выбору пользователя и подсчета отклонения значений можно применять обычные функции Time Intellegence.
Однако, для отображения выбранного пользователем месяца в заголовке столбца матрицы, мы будем применять функционал Fields Parameters.
В PBIX файле я постарался максимально подробно и пошагово описать процесс разработки. Также, показал как работать с FP нестандартным способом - попробуйте развить это направление =)
👉🏻PBIX во вложении👈🏻
(Только для облачной версии!) | 2 576 |
| 19 | 💡 Расчет накопительного итога со сбросом накопления, когда сумма = 0
Такой расчет часто применяется для расчета текущего количества бонусных баллов клиента, в случае "сгорания" бонусов в определенную дату и начала нового процесса накопления.
```dax
Comulated From 0 =
VAR _LastZerroDate =
-- находим последнюю дату (относительно даты в текущем контексте), на которую значение равно 0
CALCULATE(
MAX('Fact'[date]),
'Fact'[count]=0,
Calendar[Date]<=MAX(Calendar[Date])
)
VAR _Dates =
-- находим список дат между последней датой с 0 результатом и датой в текущем контексте
DATESBETWEEN(
'Calendar'[Date],
_LastZerroDate,
-- последняя дата с 0 неизменна до следующего 0
MAX('Calendar'[Date])
-- дата окончания периода зависит от текущего контекста и нарастает
)
VAR _Result =
-- применяем список дак к нашему расчету
CALCULATE(
SUM('Fact'[count]),
_Dates
)
RETURN
IF(NOT ISBLANK(SUM(Fact[count])),_Result)
-- т.к. между датами с данными есть промежутки и накопительный отобразится для всех дат календаря, мы выводим результат для тех, когда есть данные
👉🏻PBIX во вложении👈🏻 | 2 298 |
| 20 | 🔤 Динамические границы АВС классов по паттерну.
1️⃣ Создаем 2 параметра: «А Class” и «C Сlass” с диапазонами чисел от 0 до 100 включительно.
2️⃣ Создаем таблицу, которая в дальнейшем позволит выбирать нужные параметры без возможности выбрать их неверно, т.е. если мы выбиваем в параметре A Class значение 90, то второй параметр нам не даст выбрать значение менее 90+1 и наоборот.
Filter Table =
VAR gen1 =
SELECTCOLUMNS(
GENERATESERIES(
0,
100,
1
),
"1",
[Value]
)
VAR gen2 =
SELECTCOLUMNS(
GENERATEALL(
gen1,
VAR _1 = [1]
RETURN
GENERATESERIES(
_1+1,
100
)
),
"1",[1],
"2",[Value]
)
RETURN gen2
Суть такой таблицы - для каждого тек значения в первом столбце есть значения от текущее+1 до 100 включительно.
3️⃣ Связываем наши параметры с данной таблицей. A Class со столбцом 1, B Class со столбцом 2. Связи 1 ->* и двунаправленная фильтрация.
4️⃣ Добавляем параметры на страницу отчета и включаем влияние одного параметра на второй и наоборот.
5️⃣ Создаем через «Ввести данные» таблицу-справочник названия классов (текст) и их ID (целочисленные значения), далее включаем сортировку для класса по столбцу ID (но это не обязательно). | 1 723 |
