#powerbi #dax #data-warehouse #powerbi-desktop
#powerbi #dax #хранилище данных #powerbi-рабочий стол
Вопрос:
Допустим, в Power BI у меня есть следующая настройка:
d_date (this is a date dimension)
d_customers (this is a customer dimension)
f_orders (this is a fact table)
f_orders
подключается к d_date
on date_id
и подключается к d_customers
on customer_id
.
Я хочу создать показатель dax, который показывает список отдельных клиентов вместе с их именем для каждой даты.
Как я мог это сделать?
(Я новичок в Dax и немного новичок в Power BI)
Ожидаемый результат
Table 1
order date Customer Name
2020-01-01 John Doe
2020-01-01 James Simpson
2020-01-03 Emilia Clarke
...
2020-12-31 Jamie Lanister
Table 2
order date distinct_customer_count
2020-01-01 2
2020-01-03 1
...
2020-12-31 1
Моя цель — не столько получить выходные данные, сколько увидеть простой пример использования DAX для получения выходных данных из 2 таблиц.
Комментарии:
1. Можете ли вы опубликовать пример того, как должен выглядеть ожидаемый результат? Количество вместе с именем клиента в качестве меры??? Скажем, отдельное количество клиентов за день равно 120, где будет указано имя клиента?
2. Готово, как это выглядит?
3. По сути, я просто ищу любой простой пример использования нескольких таблиц в операторе dax. Может быть супер-пупер просто, если нужно, просто нужен пример.
4. Таблица 1 может быть выполнена полностью без какого-либо DAX, просто создайте таблицу и внесите в нее дату и имя клиента. Вторая таблица — это то, что я объясняю в своем ответе.
Ответ №1:
Вы запрашиваете меру, возвращающую список. Это невозможно сделать напрямую, поскольку меры должны возвращать скаляр, если только вы не собираетесь создавать строку со всеми клиентами. (это можно было бы сделать с помощью CONCATENATEX(), но это плохо работает, когда требуется показать более нескольких клиентов)
Из вашего желаемого результата я вижу, что вы хотели бы видеть визуальную таблицу с датой и клиентом, который разместил заказ на эту дату. Для этого достаточно создать показатель количества клиентов следующим образом
# Customers = DISTINCTCOUNT( f_orderes[customer_id] )
и для создания визуальной таблицы с d_date[дата], d_customer[имя] и [# Customers]
используя только d_date[дата] и [# Клиенты], вы должны получить таблицу 2
чтобы увидеть некоторый код, использующий обе таблицы, вы можете вычислять вычисляемые таблицы, например, переход к реальному набору данных с клиентами, датой и продажами. простая реализация таблицы 1
SUMMARIZE ( Sales, 'Date'[Date], Customer[Name] )
и вот тот же код, который нужно протестировать dax.do
и для таблицы 2
FILTER (
ADDCOLUMNS (
ALL ( 'Date'[Date] ),
"# Customers", CALCULATE ( DISTINCTCOUNT ( Sales[CustomerKey] ) )
),
NOT ISBLANK ( [# Customers] )
)
ФИЛЬТР NOT ISBLANK() необходим для удаления дат без продаж
вот код для dax.do
также можно использовать SUMMARIZECOLUMNS , но SUMMARIZECOLUMNS — это более продвинутая функция, которую нельзя использовать в измерениях DAX.
SUMMARIZECOLUMNS (
'Date'[Date],
"# Customers", DISTINCTCOUNT ( Sales[CustomerKey] )
)
Ответ №2:
Создайте показатель, который учитывает отдельных клиентов в f_orders. Если вы используете эту меру в визуальном представлении, которое группирует / фильтрует по дате, то эта мера покажет правильные значения.
Например, диаграмма с датой по оси X и отдельным количеством клиентов в качестве значения будет отображать отдельное количество для каждого дня.
В Power BI / DAX вам не нужно предварительно вычислять все виды сценариев, потому что мера всегда будет оцениваться в контексте фильтров страницы / визуального.
Комментарии:
1. По сути, моя цель не столько получить результат, каким-то образом изменив Power BI, сколько продемонстрировать простой пример того, каково это — работать с несколькими таблицами в простом выражении dax, чтобы получить что-то из обеих таблиц.