После полезного ответа на мой предыдущий вопрос DAX я столкнулся с новой, другой проблемой, для которой я прошу вашей помощи в этом новом вопросе:
1. Сценарий:
У нас есть модель, состоящая из одной таблицы фактов (F_Visits
) и одного измерения D_Calendar
. F_Visits
является таблицей фактов и содержит все посещения клиентов в магазине одежды. Его поля:
Visit Id
: инкрементный уникальный номер, который является естественным ключом таблицы
Customer Key
: уникальный идентификатор для клиента Calendar Fk
: внешний ключ измерения D_Calendar
в таблице фактов
+----------+--------------+-------------+
| Visit Id | Customer Key | Calendar FK |
+----------+--------------+-------------+
| 1 | John | 20170101 |
| 2 | John | 20180101 |
| 3 | John | 20180101 |
| 4 | John | 20190101 |
| 5 | Mark | 20170101 |
| 6 | Mark | 20180101 |
| 7 | Jack | 20190101 |
+----------+--------------+-------------+
2. Цель:
Создать меру Time-Intelligence Year-To-Date, которая: - независимо от выбора срезов в календаре измерений - подсчитывает количество отдельных пациентов, которые посетили магазин в Year-To-Date - сохраняет взаимодействиес D_Calendar
, чтобы я мог правильно включить в атрибут матрицы из этого измерения
3. Ожидаемый результат:
Независимо от фильтров срезов на D_Calendar
(например, D_Calendar [Year] = 2017) мы получаем следующий результат:
+----------+-------------+-------------+-------------+------------------+
| Visit Id | Customer Key| Calendar FK | Measure YTD | D_Calendar[Year] |
+----------+-------------+-------------+-------------+------------------+
| 4 | John | 20190101 | 1 | 2019 |
| 7 | Jack | 20190101 | 1 | 2019 |
+----------+-------------+-------------+-------------+------------------+
4. Текущая ситуация
+----------+-------------+-------------+-------------+------------------+
| Visit Id | Customer Key| Calendar FK | Measure YTD | D_Calendar[Year] |
+----------+-------------+-------------+-------------+------------------+
| 4 | John | 20190101 | 1 | 2017 |
| 7 | Jack | 20190101 | 1 | 2017 |
+----------+-------------+-------------+-------------+------------------+
Проблема заключается в том, что D_Calendar[Year]
в матрице принимает значение среза, а не значение, связанное с F_Visits[Calendar FK]
.
Где Мера YTD определяется как:
Measure YTD =
VAR vDateFrom = 20190101
VAR vDateTo = VALUE ( FORMAT ( ( TODAY () ), "YYYYMMDD" ) )
RETURN
CALCULATE (
DISTINCTCOUNT ( 'F_Visits'[Customer Key] ),
ALL ( D_Calendar ),
KEEPFILTERS ( D_Calendar[Year] ),
FILTER (
ALL ( 'F_Visits'[Calendar FK] ),
'F_Visits'[Calendar FK] >= vDateFrom
&& 'F_Visits'[Calendar FK] <= vDateTo
)
)