У меня есть отчет Power BI с несколькими строками (это отчет P и L), отображаемый в визуализации списка.Список отчетов с каждой строкой, показывающей процент одной конкретной строки.
Это заселена с видом на SQL
Одна из линий «Общий доход»
мне нужно каждую строку, чтобы показать свою долю от общего дохода в процентах:
т.е.
LINE MTH %
------------------------
Line1 5 10
Total Revenue 50 100
Line2 20 40
Line3 4 8
Line4 12 24
Обратите внимание, что MTH
не суммирует общий доход, поэтому я не могу просто взять итог, мне нужно взять линию под названием T ОБЩИЙ доход как знаменатель
Вот прекрасный пример того, что я пытаюсь сделать здесь:
https://msdn.microsoft.com/en-us/library/ee634760.aspx
Но когда я пытаюсь этот метод (в первую очередь как раз, чтобы получить знаменатель), я только получить значение в итоговой строке доходов и заготовок на другие линии, как это:
LINE MTH %
------------------------
Line1 5
Total Revenue 50 50
Line2 20
Line3 4
Line4 12
Вот мой DAX:
MTH% =
SUMX(
CALCULATETABLE(
'vw_PandL',
'vw_PandL'[Line]="TOTAL REVENUE"
)
,
[MTH]
)
Насколько я могу судить, единственное различие между моим выражением и примером на веб-странице состоит в том, что на веб-странице используется размер отдельно для фильтрации строки, тогда как выражение может использовать столбец в таблица для фильтрации строк
Пример Дано на веб-странице:
=SUMX(CALCULATETABLE(
'InternetSales_USD',
'DateTime'[CalendarYear]=2006
)
, [SalesAmount_USD])
Основываясь на комментариях ниже это должно работать, но это не работает для меня
Я п ой также пытался:
CALCULATE(
SUM([MTH]),
FILTER(ALL('vw_PandL'),
[Line]="TOTAL REVENUE")
)
который получает мне итог по всем направлениям для ИТОГО ДОХОДОВ, но игнорирует фильтры отчета. Это ближе.
Функция ALLEXCEPT
предназначена для того, чтобы отфильтровывать все, кроме указанных столбцов, однако, когда я пытаюсь это сделать, я получаю тот же результат.Он по-прежнему не принимает к сведению моих дат и сайта фильтров:
CALCULATE(
SUM([MTH]),
FILTER(ALLEXCEPT('vw_PandL','vw_PandL'[DateKey],'vw_PandL'[DimSiteKey]),
[Line]="TOTAL REVENUE")
)
Update 1:
мне удалось воспроизвести это в простых моделях
Среди многих вещей, что я Жду» Следует отметить, что колонка LINE
сортируется по другому столбцу SortZZ
Вычисление, заданное в ответе @Foxan Ng, отлично работает, но как только я сортирую строку Cola mn, он показывает поведение, о котором я упомянул: показатель общей выручки появляется только на линии общего дохода
После дальнейшего расследования: мне даже не нужно сортировать его, я могу просто поместить столбец SortZZ в список, и это сломает calc.
Решение
Окончательное функционирование известково было:
Total Revenue =
CALCULATE(
SUM([MTH]),
FILTER(
ALLEXCEPT('vw_PandL','vw_DimPeriod'[Period],'DimSite'[Site]),
'vw_PandL'[Line] = "Total Revenue")
)
Хитрость заключается в ALLEXCEPT
Мои отношения и ломтерезки настроены следующим образом:
vw_PandL
является таблицаvw_DimPeriod
факт присоединился к нему наPeriodCode
DimSite
также присоединился к нему наSiteKey
При использовании любого из следующих ALLEXCEPT
выражений, вычисление не выполнил свои ломтерезки. То есть, этот показатель был общий итог по линии во всех периодов и сайтов:
Ссылаясь присоединиться ключей в таблице фактов:
ALLEXCEPT('vw_PandL','vw_PandL'[PeriodCode],'vw_PandL'[SiteKey])
со ссылкой присоединиться ключей в размерах:
ALLEXCEPT('vw_PandL','vw_DimPeriod'[PeriodCode],'DimSite'[SiteKey])
Единственный способ, которым я мог бы получить известково в честь моих ломтерезки было использовать реальное поле, которое я физически, используя в своей ломтерезки, другими словами, метка
ALLEXCEPT('vw_PandL','vw_DimPeriod'[Period],'DimSite'[SiteName])
Главное, чтобы извлечь из этого это а не только реляционная база данных, в которой вы присоединяетесь к ключу, тогда фильтрация на ярлыке будет работать. Столбцы и таблицы, упомянутые в этих функциях, очень важны.
В приведенном выше примере (таблица с столбцами LINE и MTH и соответствующий DAX) столбец MTH% вычисляет, как вы ожидаете (50 для всех строк). Я не могу воспроизвести ситуацию, которую вы описываете, где 50 отображается только в строке «Общий доход». – Leonard
Спасибо за ваш ответ - хорошо, что дает мне что-то, чтобы пойти –
Я сделал некоторые изменения. Теперь я нашел что-то, что дает мне результат в каждой строке, но у меня есть фильтры, и они не применяются. –