Power BI Rank в матричном представлении - PullRequest
0 голосов
/ 12 октября 2018

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

Следующий код возвращает мне таблицу данных, которая мне нужна.Тем не менее, я хочу только значение «ранг», и я хочу его для каждой строки в матрице визуального.

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

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

VAR tblCountrySales =
    SUMMARIZE (
        FILTER(
            tblSalesUnits,
            RELATED(tblProducts[Country])="US"
        ),
        tblProducts[ProdID],
        "Total Sales", SUM ( tblSalesUnits[Units] )
    )
RETURN
    ADDCOLUMNS (
        tblCountrySales,
        "ProductRank", RANKX ( tblCountrySales, [Total Sales] )
    )

Есть ли способ либо получить только оценку для одного продукта из приведенного выше кода, либо, еще лучше,Шаблон DAX, который даст мне ранг по объему продаж каждого варианта продукта в соответствующей стране?

Я использую эти операторы для успешного получения идентификатора продукта и страны для каждой строки в визуальном элементе.

VAR ProdSales = SUM(tblSales[Units])
VAR ProdCountry = SELECTEDVALUE(tblProducts[Country])

Любая помощь с благодарностью.Я предполагаю, что мне не хватает чего-то с контекстом строки в визуальном элементе, так как простые COUNTROWS в приведенных выше выражениях таблицы всегда возвращают «1».Будучи новичком в PowerBI и DAX, я все еще пытаюсь понять нюансы фильтра и контекстов строк.

Таблица продуктов содержит данные типа ...
ProdID ..... BaseID.... Имя ... Страна
7190 ........... 7190 ..... xxxx ..... US
150207190 ...... 7190..... XXXX .... Панама
241807190 ...... 7190 ..... xxxx ..... Испания

Таблица продаж содержит такие данные, как ...
ProdID ...... SalesMonth ...... Единицы ..... USD
7190 ........ Июль 2010 .......4563 .... $ 23491,00
150207190 ... июль 2010 ....... 2543 ... $ 16235,00
241807190 ... июль 2010 ....... 1263 .... $ 8125,00

Существует также таблица дат, которая связывает SalesMonth с обычным выбором форматов отображения даты.Две вышеупомянутые таблицы связаны через ProdID, хотя визуальные элементы разрезаны по BaseID.Я бы прикрепил картинку, но у меня не было на это разрешения.

1 Ответ

0 голосов
/ 29 октября 2018

Еще немного повозившись, я нашел это решение.

Country Rank = 
VAR ProdSales = SUM(tblSales[Units])
VAR ProdCountry = SELECTEDVALUE(tblProducts[Country])
VAR tblCountrySales =
    SUMMARIZE (
        FILTER(
            ALLEXCEPT(tblProducts,tblProducts[BaseID]),
            tblProducts[Country]=ProdCountry
        ),
        tblProducts[ProdID],
        "Total Sales", SUM ( tblSales[Units] )
    )
RETURN
    IF(ProdSales>0,COUNTROWS(FILTER(tblCountrySales,[Total Sales]>ProdSales))+1,BLANK())
...