Вопрос или проблема
Я бы оценил помощь в создании меры DAX, которая вычисляет разницу в весах ценных бумаг нескольких портфелей относительно эталонного портфеля (который является одним из портфелей, оцениваемых и выбираемых через срез). Конечный пользователь сможет выбрать, какой портфель он хочет использовать в качестве эталонного.
У меня есть таблица данных (Факт) под названием “Holdings”, в которой есть следующие поля: Дата, Название портфеля, Тикер ценной бумаги и Вес портфеля.
С таблицей “Holdings” связаны три таблицы справочников (DIM), но я считаю, что для этой конкретной ситуации мне нужна только таблица Календарь: Таблица Календарь, Ценная бумага и Название портфеля.
Если я выбираю “Портфель A” в срезе, я хотел бы видеть следующее для каждой ценной бумаги:
Для Портфеля A: вес ценной бумаги в Портфеле A минус вес ценной бумаги в Портфеле A
Для Портфеля B: вес ценной бумаги в Портфеле B минус вес ценной бумаги в Портфеле A
Для Портфеля C: вес ценной бумаги в Портфеле C минус вес ценной бумаги в Портфеле A
и т.д.
Ответ или решение
Для решения вашей задачи по созданию DAX-меры, которая будет вычислять разницу в весах активов между различными портфелями и референтным портфелем, нам необходимо учитывать следующее:
Структура данных
У вас есть следующая таблица фактов "Holdings" с полями:
- Date
- Portfolio Name
- Security Ticker
- Portfolio Weight
Дополнительно, вы используете таблицу календаря и другие таблицы справочников, но в данном случае это не критично.
Задача
Создать меру, которая будет рассчитывать разницу весов активов различных портфелей относительно выбранного в слайсере референтного портфеля.
Решение
- Создание меры для весов выбранного портфеля:
Создадим меру, которая будет находить вес активов выбранного портфеля:
Selected Portfolio Weight =
VAR SelectedPortfolio = SELECTEDVALUE('Portfolios'[Portfolio Name]) -- Получаем выбранный портфель из слайсера
RETURN
SUMX(
FILTER(
Holdings,
Holdings[Portfolio Name] = SelectedPortfolio
),
Holdings[Portfolio Weight]
)
- Создание меры для весов каждого портфеля:
Нам нужно создать общую меру для расчета разницы весов активов других портфелей относительно референтного портфеля:
Weight Difference =
VAR SelectedPortfolioWeight = [Selected Portfolio Weight] -- Вычисляем вес выбранного портфеля
VAR CurrentPortfolioWeight = SUM(Holdings[Portfolio Weight]) -- Вычисляем вес текущего портфеля (в контексте строки)
RETURN
CurrentPortfolioWeight - SelectedPortfolioWeight
- Добавление в таблицу визуализации:
Для окончательной таблицы визуализации, у вас будет:Security Ticker
Portfolio Name
- Мера
Weight Difference
Использование
- Поместите поле "Portfolio Name" в слайсер, чтобы пользователь мог выбирать желаемый портфель в качестве референтного.
- Отобразите в вашей таблице визуализации "Security Ticker", "Portfolio Name" и меру
Weight Difference
.
Теперь ваша таблица будет показывать разницу весов между активами каждого портфеля и весами выбранного референтного портфеля. Если пользователь выберет "Portfolio A", то для каждого актива вы отобразите разницу его веса в других портфелях относительно веса в "Portfolio A".
Заключение
Данное решение должно полностью удовлетворить ваши требования. Убедитесь, что связи между таблицами установлены корректно, чтобы DAX выражения работали правильно. Если возникнут дополнительные вопросы, не стесняйтесь обращаться!