Можно ли воспроизвести ПРАВИЛЬНОЕ НАРУЖНОЕ СОЕДИНЕНИЕ в DAX? - PullRequest
0 голосов
/ 19 октября 2019

У меня есть факт продаж, измерение клиента и измерение продавца. Соединения следующие:

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 для группировки фактов продаж, а также для агрегирования некоторых фактов, которые будут отфильтрованылевым внешним соединением, которое происходит в силу этих отношений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...