Определите степень детализации дня при расчете NumOfDays?

При подсчете средних продаж в день я использую следующую меру для NumOfDays:

NumOfDays = IF (
    [Sales Amount] > 0; 
    COUNTROWS ( Date )
)

Это удаляет количество дней для тех дат, когда нет продаж.

Таким образом, у меня есть такой наглядный вид:

Визуальный

Как видите, сумма неверна. Это связано с тем, что в базе данных больше лет, чем указано в матрице. Как я могу определить степень детализации "дня" при расчете NumOfDays? То есть как я могу посчитать строки только за те дни, когда были распродажи?

Спасибо!


person Community    schedule 21.12.2016    source источник


Ответы (1)


Я рекомендую две вещи:

  1. Используйте CALCULATE () вместо IF, который является правильным способом DAX для определения мер с помощью фильтров.
  2. Используйте DISTINCTCOUNT () вместо COUNTROWS (), чтобы избежать двойного подсчета (на случай, если ваши данные когда-либо станут более детализированными)

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

NumOfDays = CALCULATE(DISTINCTCOUNT(Date[Date]),FILTER(SalesTable,[Sales Amount] > 0))

Если проблема не в этом, дайте мне знать, что именно вы ожидаете увидеть в своей матрице.

person RedVII    schedule 21.12.2016
comment
Привет, я получаю сообщение об ошибке: функция «CALCULATE» использовалась в выражении «истина-ложь», которое используется в качестве выражения фильтра таблицы. Это не разрешено. - person ; 21.12.2016
comment
Я понимаю, я удивлен, что это здесь происходит, потому что это базовое выражение, но я думаю, что знаю решение. Вам просто нужно добавить внутрь функцию FILTER (): NumOfDays = CALCULATE(DISTINCTCOUNT(Date[Date]),FILTER(SalesTable,[Sales Amount] > 0)). Не забудьте заменить ссылку на SalesTable на то, что называется вашей основной таблицей. - person RedVII; 21.12.2016
comment
Обновил мой исходный пост, чтобы показать правильный расчет - person RedVII; 22.12.2016