Как анализировать данные между двумя таблицами фактов? - PullRequest
0 голосов
/ 12 февраля 2020

У меня есть две таблицы фактов, которые я хочу проанализировать вместе, но нет прямой связи между ними. Я должен использовать несколько измерений, чтобы связать их. Итак, у меня есть более прямой пример, скажем, у меня есть таблица заказов и таблица рефералов:

  • Orders

    • OrderId
    • OrderLineNumber
    • SalesRepresenlativeId
    • OrderDate
    • CustomerId
    • ProductId
  • Реферал

    • ReferralId
    • ReferralDate
    • ExpirationDate
    • CustomerId
    • SalesRepresenlativeId

Эти два таблицы расположены в двух разных областях, что затрудняет их совместный анализ. Пока что я решил, что эти две таблицы - мои факты. И попытайтесь связать их, используя размеры, которые они разделяют.

Но я не могу гарантировать, что у каждого заказа есть только один реферал или наоборот. Правило, которое мне нужно применить, - это найти первый элемент заказа между датой реферала и датой истечения срока, где все другие измерения совпадают. Но я также должен принять во внимание, что если заказ уже был назначен другому рефералу, он должен взять следующую доступную позицию заказа, если это возможно.

То, что я хочу в конечном итоге рассчитать, это возраст реферала или возраст на сегодняшний день, если заказ не найден.

Я могу найти способ сделать это в Python или C#. Но возможно ли сделать это в DAX, используя меру или вычисляемое поле? Есть ли смысл делать это? Если бы я рассчитывал это заранее в более раннем сценарии Python, например, объединю ли я свои факты в одну таблицу?

1 Ответ

1 голос
/ 12 февраля 2020

Это возможно сделать в Power BI DAX. Но я бы сказал, что это проще сделать в модели данных, чем в DAX. Если вы хорошо разбираетесь в сценариях Python, вы можете использовать их для создания единой таблицы фактов. Это значительно упростит создание всех ваших дальнейших расчетов и показателей.

Если вы все еще хотите использовать DAX для этого, выполните следующие шаги:

Шаг 1: Создайте связь между заказами и Реферал на основе идентификатора клиента и SalesRepID (вам нужно объединить поля для создания отношения)

Шаг 2. Затем вам нужно будет создать столбец фильтра, который проверяет, находится ли дата заказа между датой реферала. и срок годности. Что-то вроде:

 FILTER_FLAG = IF(Orders[OrderDate]>=RELATED(Referral[ReferralDate]) &&
                  Orders[OrderDate]<=RELATED(Referral[ExpirationDate]),1,0)

Шаг 3: Теперь вам нужно будет создать переменную ранга, чтобы выбрать минимальную дату заказа для каждого элемента заказа. Вы также должны убедиться, что для расчета FILTER_FLAG = 1. Следующая ссылка должна помочь в достижении этого:

https://community.powerbi.com/t5/Desktop/Summarize-and-Rank-by-multiple-columns-and-rows/td-p/330108

После того, как это будет создано, вы можете просто использовать записи с рангом = 1 для своего анализа. Как упоминалось ранее, это может быть немного сложным для достижения этого, поэтому я бы предложил использовать сценарии Python для создания одной таблицы до этого. Надеюсь, это поможет.

...