Страницы: 1
RSS
power pivot: расчет меры по неактивной связи, с применением функции FILTER и USERELATIONSHIP
 
Добрый вечер, уважаемые форумчане. В модели данных power pivot установлены две связи м/у таблицами продаж и календарем, естественно активной является только одна. В таблице делаю расчеты по договорам, у которых есть две даты: дата подписания и дата вступления в силу (по первой дате оплаты). Использую функцию USERELATIONSHIP для расчетов по неактивной связи. С простыми расчетами проблем нет (например, суммы по договорам) - проблема возникла, когда решил посчитать кол-во уникальных договоров/клиентов по неактивной связи. Дело в том, что в одной мере одновременно использую функции FILTER  и USERELATIONSHIP, а функция FILTER упорно игнорирует действие второй. как решить данную проблему, я не знаю - не нашел ответа даже в зоне .com.
Может кто-то сталкивался с подобными проблемами, прошу совета помочь? Заранее спасибо.

П.С. т.к. файл с моделью данных, то он никак не сжимается менее 100 кб, поэтому делюсь ссылкой на файл:
https://drive.google.com/file/d/0B2QI2cll1GVBYkJIMHlVSWthUjA/view?usp=sharing
 
Доброе время суток.
Как то всё же несколько странно вы подходите к понятию новый клиент/договор. Самое лучшее было бы сделать в PQ отдельную таблицы по договорам/клиентам и функциями агрегации по соответствующей минимальной дате, а уже их вязать с календарём. Меры в этом случае будут элементарными. А так. Сделал в Power BI Desktop по шагам, собственно с реализации определения нового клиента, как клиента у которого минимум соответствующего типа даты (первая дата) попадает в текущий интервал календаря.
Файл не помещается, положил на яндекс диск.
Успехов.
 
Андрей VG, благодарю за помощь, но нужный результат, к сожалению, пока не получен. Посмотрите, Ваши формулы так же считают по активной связи (столбец "дата подписания договора") и результат аналогичен моим мерам расчетов, а мне нужен расчет по неактивной ("дата оплаты").
Дело в том, что мне нужно в одной сводной одновременно видеть результаты вычислений по двум датам. И тут вопрос не в том, что считать новым договором или клиентом (здесь я просто не очень точно выразился), а в том как посчитать кол-во значений, встречающихся в первый раз, по неактивной связи.

П.С. может Вы мой комментарий у сводной таблицы не увидели, просто Ваша мера "новых договоров по дате оплаты" повторила мой ошибочный результат!
Изменено: Vladimir Chebykin - 22.08.2017 12:26:14
 
Цитата
Vladimir Chebykin написал:
в одной мере одновременно использую функции FILTER  и USERELATIONSHIP, а функция FILTER упорно игнорирует действие второй
Потому что FILTER в вашем случае работает в начальном контексте, а не модифицированном.
Честно, не разбирался в логике самого расчета (на первый взгляд кажется избыточной), но самое лобовое решение работает:
Код
=
CALCULATE (
    CALCULATE (
        DISTINCTCOUNT ( 'договор и оплата'[договор] );
        'договор и оплата'[новый или пост] = "новый";
        FILTER (
            ADDCOLUMNS (
                VALUES ( 'договор и оплата'[договор] );
                "123"; CALCULATE (
                    COUNTROWS ( 'договор и оплата' );
                    FILTER (
                        ALL ( 'календарь' );
                        'календарь'[порядковый № месяца] < MIN ( 'календарь'[порядковый № месяца] )
                    )
                )
            );
            [123] = 0
        )
    );
    USERELATIONSHIP ( 'договор и оплата'[Дата оплаты]; 'календарь'[дата] )
)
F1 творит чудеса
 
Максим Зеленский, браво! Именно то, что я хотел!!
Цитата
Максим Зеленский написал:
FILTER в вашем случае работает в начальном контексте, а не модифицированном.
логически понимал, что нужно копать в данном направлении, но моих знаний не хватило на такую модификацию! Еще раз спасибо!
 
Цитата
Vladimir Chebykin написал:
а мне нужен расчет по неактивной ("дата оплаты").
Приношу свои извинения, пропустил момент по "дате оплаты". Если построить таблицу "Новых договоров", то считает правильно. В мере у меня связь не принципиальна. Можно было бы и без установки связей это посчитать :)  Скорее всего есть проблема другого плана, связанная как раз с существованием этих связей. Может завтра Максим со своим докладом "Меры DAX с нестандартными реакциями на фильтры и срезы в отчетах Power BI" и прояснит этот момент. Ссылка на файл.
В общем бы порекомендовал создавать дополнительные таблицы на Power Query, чтобы избегать проблем, да и меры становятся проще, и скорость вычисления будет лучше.
Изменено: Андрей VG - 22.08.2017 14:36:55
 
Разобрался с причиной. Не там фильтр сбрасывал :) Ссылка
Страницы: 1
Читают тему
Наверх