Создайте меру DAX, которая рассчитывает разницу между весами различных активов портфеля и весами эталонного портфеля.

Вопрос или проблема

Я бы оценил помощь в создании меры DAX, которая вычисляет разницу в весах ценных бумаг нескольких портфелей относительно эталонного портфеля (который является одним из портфелей, оцениваемых и выбираемых через срез). Конечный пользователь сможет выбрать, какой портфель он хочет использовать в качестве эталонного.

У меня есть таблица данных (Факт) под названием “Holdings”, в которой есть следующие поля: Дата, Название портфеля, Тикер ценной бумаги и Вес портфеля.

С таблицей “Holdings” связаны три таблицы справочников (DIM), но я считаю, что для этой конкретной ситуации мне нужна только таблица Календарь: Таблица Календарь, Ценная бумага и Название портфеля.

Если я выбираю “Портфель A” в срезе, я хотел бы видеть следующее для каждой ценной бумаги:
Для Портфеля A: вес ценной бумаги в Портфеле A минус вес ценной бумаги в Портфеле A
Для Портфеля B: вес ценной бумаги в Портфеле B минус вес ценной бумаги в Портфеле A
Для Портфеля C: вес ценной бумаги в Портфеле C минус вес ценной бумаги в Портфеле A
и т.д.

Таблица Holdings

Таблица веса ценной бумаги и таблица разницы весов

Ответ или решение

Для решения вашей задачи по созданию DAX-меры, которая будет вычислять разницу в весах активов между различными портфелями и референтным портфелем, нам необходимо учитывать следующее:

Структура данных

У вас есть следующая таблица фактов "Holdings" с полями:

  • Date
  • Portfolio Name
  • Security Ticker
  • Portfolio Weight

Дополнительно, вы используете таблицу календаря и другие таблицы справочников, но в данном случае это не критично.

Задача

Создать меру, которая будет рассчитывать разницу весов активов различных портфелей относительно выбранного в слайсере референтного портфеля.

Решение

  1. Создание меры для весов выбранного портфеля:
    Создадим меру, которая будет находить вес активов выбранного портфеля:
Selected Portfolio Weight = 
VAR SelectedPortfolio = SELECTEDVALUE('Portfolios'[Portfolio Name]) -- Получаем выбранный портфель из слайсера
RETURN
SUMX(
    FILTER(
        Holdings,
        Holdings[Portfolio Name] = SelectedPortfolio
    ),
    Holdings[Portfolio Weight]
)
  1. Создание меры для весов каждого портфеля:
    Нам нужно создать общую меру для расчета разницы весов активов других портфелей относительно референтного портфеля:
Weight Difference = 
VAR SelectedPortfolioWeight = [Selected Portfolio Weight] -- Вычисляем вес выбранного портфеля
VAR CurrentPortfolioWeight = SUM(Holdings[Portfolio Weight]) -- Вычисляем вес текущего портфеля (в контексте строки)
RETURN
CurrentPortfolioWeight - SelectedPortfolioWeight
  1. Добавление в таблицу визуализации:
    Для окончательной таблицы визуализации, у вас будет:

    • Security Ticker
    • Portfolio Name
    • Мера Weight Difference

Использование

  • Поместите поле "Portfolio Name" в слайсер, чтобы пользователь мог выбирать желаемый портфель в качестве референтного.
  • Отобразите в вашей таблице визуализации "Security Ticker", "Portfolio Name" и меру Weight Difference.

Теперь ваша таблица будет показывать разницу весов между активами каждого портфеля и весами выбранного референтного портфеля. Если пользователь выберет "Portfolio A", то для каждого актива вы отобразите разницу его веса в других портфелях относительно веса в "Portfolio A".

Заключение

Данное решение должно полностью удовлетворить ваши требования. Убедитесь, что связи между таблицами установлены корректно, чтобы DAX выражения работали правильно. Если возникнут дополнительные вопросы, не стесняйтесь обращаться!

Оцените материал
Добавить комментарий

Капча загружается...