Добрый вечер, уважаемые форумчане. В модели данных power pivot установлены две связи м/у таблицами продаж и календарем, естественно активной является только одна. В таблице делаю расчеты по договорам, у которых есть две даты: дата подписания и дата вступления в силу (по первой дате оплаты). Использую функцию USERELATIONSHIP для расчетов по неактивной связи. С простыми расчетами проблем нет (например, суммы по договорам) - проблема возникла, когда решил посчитать кол-во уникальных договоров/клиентов по неактивной связи. Дело в том, что в одной мере одновременно использую функции FILTER и USERELATIONSHIP, а функция FILTER упорно игнорирует действие второй. как решить данную проблему, я не знаю - не нашел ответа даже в зоне .com. Может кто-то сталкивался с подобными проблемами, прошу совета помочь? Заранее спасибо.
Доброе время суток. Как то всё же несколько странно вы подходите к понятию новый клиент/договор. Самое лучшее было бы сделать в PQ отдельную таблицы по договорам/клиентам и функциями агрегации по соответствующей минимальной дате, а уже их вязать с календарём. Меры в этом случае будут элементарными. А так. Сделал в Power BI Desktop по шагам, собственно с реализации определения нового клиента, как клиента у которого минимум соответствующего типа даты (первая дата) попадает в текущий интервал календаря. Файл не помещается, положил на яндекс диск. Успехов.
Андрей VG, благодарю за помощь, но нужный результат, к сожалению, пока не получен. Посмотрите, Ваши формулы так же считают по активной связи (столбец "дата подписания договора") и результат аналогичен моим мерам расчетов, а мне нужен расчет по неактивной ("дата оплаты"). Дело в том, что мне нужно в одной сводной одновременно видеть результаты вычислений по двум датам. И тут вопрос не в том, что считать новым договором или клиентом (здесь я просто не очень точно выразился), а в том как посчитать кол-во значений, встречающихся в первый раз, по неактивной связи.
П.С. может Вы мой комментарий у сводной таблицы не увидели, просто Ваша мера "новых договоров по дате оплаты" повторила мой ошибочный результат!
Vladimir Chebykin написал: в одной мере одновременно использую функции FILTER и USERELATIONSHIP, а функция FILTER упорно игнорирует действие второй
Потому что FILTER в вашем случае работает в начальном контексте, а не модифицированном. Честно, не разбирался в логике самого расчета (на первый взгляд кажется избыточной), но самое лобовое решение работает:
Код
=
CALCULATE (
CALCULATE (
DISTINCTCOUNT ( 'договор и оплата'[договор] );
'договор и оплата'[новый или пост] = "новый";
FILTER (
ADDCOLUMNS (
VALUES ( 'договор и оплата'[договор] );
"123"; CALCULATE (
COUNTROWS ( 'договор и оплата' );
FILTER (
ALL ( 'календарь' );
'календарь'[порядковый № месяца] < MIN ( 'календарь'[порядковый № месяца] )
)
)
);
[123] = 0
)
);
USERELATIONSHIP ( 'договор и оплата'[Дата оплаты]; 'календарь'[дата] )
)
Vladimir Chebykin написал: а мне нужен расчет по неактивной ("дата оплаты").
Приношу свои извинения, пропустил момент по "дате оплаты". Если построить таблицу "Новых договоров", то считает правильно. В мере у меня связь не принципиальна. Можно было бы и без установки связей это посчитать Скорее всего есть проблема другого плана, связанная как раз с существованием этих связей. Может завтра Максим со своим докладом "Меры DAX с нестандартными реакциями на фильтры и срезы в отчетах Power BI" и прояснит этот момент. Ссылка на файл. В общем бы порекомендовал создавать дополнительные таблицы на Power Query, чтобы избегать проблем, да и меры становятся проще, и скорость вычисления будет лучше.