Запись DAX в Power BI для фактов и измерений

#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] )
)
 

вот dax.do ссылка на этот последний фрагмент кода

Ответ №2:

Создайте показатель, который учитывает отдельных клиентов в f_orders. Если вы используете эту меру в визуальном представлении, которое группирует / фильтрует по дате, то эта мера покажет правильные значения.

Например, диаграмма с датой по оси X и отдельным количеством клиентов в качестве значения будет отображать отдельное количество для каждого дня.

В Power BI / DAX вам не нужно предварительно вычислять все виды сценариев, потому что мера всегда будет оцениваться в контексте фильтров страницы / визуального.

Комментарии:

1. По сути, моя цель не столько получить результат, каким-то образом изменив Power BI, сколько продемонстрировать простой пример того, каково это — работать с несколькими таблицами в простом выражении dax, чтобы получить что-то из обеих таблиц.