Предполагая, что ваши данные выглядят так:
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 ) )