PowerBI считает строки в несвязанной таблице, включая фильтрацию и несоответствия

У меня есть две таблицы в PowerBI и слайсер, представленные ниже в абстрактном виде.

Макет таблицы

Я хочу знать количество заказов, размещенных для клиента в заданном диапазоне дат. Эти данные являются образцом для иллюстрации - на самом деле существует около 10 000 клиентов и 500 000 заказов, и в обеих таблицах есть много других полей, идентификаторов и т. Д.

Моя задача. Хотя это достаточно легко сделать, связав таблицы и проведя подсчет, трудности возникают, когда я все еще хочу видеть клиентов с 0 заказами, и, кроме того, я хочу, чтобы это работало внутри диапазон дат. Другими словами, вместо того, чтобы клиенты без заказов исчезали из списка, я хочу, чтобы они отображались в списке, но со значением 0, в зависимости от диапазона дат. Также было бы хорошо, если бы это могло служить мерой, чтобы я мог видеть общее количество клиентов, которые не заказали, по месяцам. Я пробовал внешние соединения, запросы на слияние, перекрестные соединения и поиск, и, похоже, не могу его взломать.

Пример 1: Если я установил срез даты заказа на: 02.01.2017 - 01.01.2018, я хочу получить следующие результаты

Ex1

Пример 2. Если я установил срез даты заказа: с 01.03.2017 по 01.06.2017, я хочу получить следующие результаты

Ex2

Любая помощь приветствуется!

Спасибо


person Murray Foxcroft    schedule 05.10.2017    source источник
comment
Если бы я показал все попытки, были бы еще несколько страниц снимков экрана, которые запутали бы вопрос. Ваше предложение не сработает, поскольку в заказах установлен фильтр даты, и он будет исключать элементы 0 вместо того, чтобы отображать их со значением 0.   -  person Murray Foxcroft    schedule 05.10.2017


Ответы (1)


Это вполне возможно с помощью меры. Когда вы используете поле «Заказ» для подсчета строк для каждого покупателя, вам необходимо выполнить COUNTROWS() функцию.

Пока ваши отношения все еще активны, мы можем сделать это префиксом, чтобы проверить наличие пробелов, и в этих случаях вернуть 0. что-то вроде этого сработает.

Measure = IF(ISBLANK(COUNTROWS(Orders)),0,COUNTROWS(Orders))

В данном случае 'Orders' - это таблица, содержащая поля Order и Order Date.

person Rob Brown    schedule 05.10.2017
comment
После того, как я несколько минут пнул себя за то, что не рассмотрел ISBLANK (), я пришел к выводу, что вы гений :) - спасибо! Теперь определим, как представить это в виде ежемесячной стоимости (клиенты, которые ни разу не заказывали в течение месяца). - person Murray Foxcroft; 05.10.2017