У меня есть факт продаж, измерение клиента и измерение продавца. Соединения следующие:
Sales Fact * <----- 1 Customer Dimension (based on Customer ID)
Customer Dimension * <----- 1 Sales Person Dimension (based on Sales Person ID)
Идентификатор продавца существует во всех таблицах. Одна из особенностей данных заключается в том, что продавец может быть связан с отдельными продажами напрямую, в факте продаж или с продажами клиента, путем ассоциации с клиентами, которые ему принадлежат, как записано в измерении клиентов.
Моя цель состоит в том, чтобы написать DAX для захвата обеих ассоциаций по отдельности:
Продажи, ориентированные на клиента = Продажи клиентов, принадлежащих конкретному продавцу
Продажи, управляемые представителем = Продажи, которые были сделанынепосредственно продавцом, даже для клиентов, принадлежащих другому продавцу
Другое ограничение заключается в том, что я хочу использовать атрибуты измерения продавца в качестве измерений, с помощью которых можно представить и нарезать все этоданные в Power BI, а также в качестве основы безопасности на уровне строк.
Продажи, ориентированные на клиента, просты;отношение по умолчанию между таблицами обрабатывает это естественно. Тем не менее, я не смог заставить меру продаж, основанную на репутации, работать в рамках ВСЕХ моих ограничений.
Например, я пытался использовать неактивные отношения напрямую между отделом продаж и продажами, например
CALCULATE (
SUM[Sales],
USERELATIONSHIP ( 'Sales Person'[Sales Person ID], 'Sales'[Sales Person ID] )
)
, но при применении фильтров безопасности на уровне строк к таблице Sales Rep произошла ошибкабудет происходить при просмотре с точки зрения торгового представителя, потому что будут задействованы сразу два объединения.
Я немного изменил эту первую попытку, поместив вместо этого фильтр уровня строки в измерение Customer, но это позволяетпродавец, так что посмотрите других продавцов, которые занимались продажами для клиентов продавца, и это нежелательно с точки зрения RLS.
Затем я изменил функцию USERELATIONSHIP на функцию RELATED и вернул фильтр RLS вИзмерение продавца. Однако при помещении поля «Имя торгового представителя» из «Торгового представителя» в таблицу с таким показателем в нем отображались только продажи, совершенные торговым представителем для своих клиентов, без учета продаж, совершенных для других покупателей. Я полагаю, что это должно быть потому, что отношения между продавцом и клиентом и отделом продаж отфильтровывают клиентов, не связанных с продавцом.
Вот почему мне интересно, есть ли способ имитировать правильное внешнее объединение, чтобы я мог использовать поля измерения Sales Person для группировки фактов продаж, а также для агрегирования некоторых фактов, которые будут отфильтрованылевым внешним соединением, которое происходит в силу этих отношений.