DAX - справочные столбцы в виртуальной таблице - PullRequest
2 голосов
/ 07 августа 2020

Как я могу ссылаться на столбцы таблицы, хранящиеся в переменной DAX? Включая мой код ниже - спасибо!

measure = 

VAR min_dates = 

//get the min order date for each customer
SUMMARIZECOLUMNS(Orders[Customer ID],"min_date",MIN(Orders[Order Date]))

RETURN

min_dates

// what I want to do here is take the table I created above (min_dates) and do the following: 
// 1) group_by min_date
// 2) count(distinct) Customer ID

// What I'm struggling with is how to reference the columns created in the min_dates table above. 

1 Ответ

0 голосов
/ 08 августа 2020

Предполагая, что ваши данные выглядят так:

Orders
+------------+---------+------------+
| CustomerID | OrderID | Order Date |
+------------+---------+------------+
| 1          | 1       | 25/07/2020 |
+------------+---------+------------+
| 2          | 2       | 26/07/2020 |
+------------+---------+------------+
| 3          | 3       | 27/07/2020 |
+------------+---------+------------+
| 4          | 4       | 28/07/2020 |
+------------+---------+------------+
| 4          | 5       | 29/07/2020 |
+------------+---------+------------+
| 5          | 6       | 30/07/2020 |
+------------+---------+------------+
| 6          | 7       | 31/07/2020 |
+------------+---------+------------+
| 6          | 8       | 01/08/2020 |
+------------+---------+------------+
| 7          | 9       | 01/08/2020 |
+------------+---------+------------+
| 7          | 10      | 03/08/2020 |
+------------+---------+------------+
| 8          | 11      | 03/08/2020 |
+------------+---------+------------+
| 9          | 12      | 04/08/2020 |
+------------+---------+------------+
| 10         | 13      | 05/08/2020 |
+------------+---------+------------+
| 11         | 14      | 05/08/2020 |
+------------+---------+------------+
| 11         | 15      | 06/08/2020 |
+------------+---------+------------+
| 12         | 16      | 06/08/2020 |
+------------+---------+------------+
| 12         | 17      | 06/08/2020 |
+------------+---------+------------+

Я предположил, что вы хотите подсчитать новых клиентов. Я создал меру, которая решает проблему, используя RANKX. Из пары значений CustomerID и Order Date при вычислении берется первая дата для каждого CustomerID. Другими словами, при использовании номенклатуры SQL, RANKX - это разделение по CUSTOMERID и OrderBy Order Date. Мера создаст таблицу на лету, добавив столбец для ранжирования каждой пары CustomerID и даты заказа. Ранг будет подсчитывать количество заказов для каждого клиента. На втором этапе в качестве идентификатора клиента используется DISTINCTCOUNT, если ранг, созданный в таблице, равен 1.

UniqueCustomers =
VAR t1 =
    ADDCOLUMNS (
        orders,
        "Rank", RANKX (
            FILTER ( ALL ( Orders ), [CustomerID] = EARLIER ( Orders[CustomerID] ) ),
            [Order Date],
            ,
            ASC,
            DENSE
        )
    )
RETURN
    CALCULATE ( DISTINCTCOUNT ( Orders[CustomerID] ), FILTER ( t1, [Rank] = 1 ) )
...