Matrix Visual中的Power BI排名

时间:2018-10-11 22:17:13

标签: powerbi dax rank

我花了很多周的时间尝试使它生效,包括在另一个站点上发布。没运气。不确定我缺少什么。

以下代码为我提供了我需要的数据表。但是,我只需要“ rank”值,并且希望在矩阵可视化中的每一行使用它。

首先,在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模式获得我所在国家/地区中每种产品变体的单位销量排名?

我已经使用这些语句成功获取了视觉范围内每一行的产品ID和国家/地区。

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

任何帮助将不胜感激。我假设我在视觉中缺少行上下文,因为上面的表表达式上的简单COUNTROWS总是返回“ 1”。作为PowerBI和DAX的新手,我仍在尝试掌握过滤器和行上下文的细微差别。

products表包含类似...的数据
     ProdID ..... BaseID .... Name ... Country
    7190 ........... 7190 ..... xxxx ..... US
    150207190 ...... 7190 ..... XXXX ....巴拿马
    241807190 ...... 7190 ..... xxxx .....西班牙

销售表包含类似...的数据
     ProdID ...... SalesMonth ......单位..... USD
       7190 ........ 2010年7月....... 4563 .... $ 23491.00
       150207190 ... 2010年7月......... 2543 .... $ 16235.00
       241807190 ... 2010年7月....... 1263 .... $ 8125.00

还有一个日期表,该表将SalesMonth链接到通常选择的日期显示格式。上面的两个表通过ProdID链接,尽管视觉效果由BaseID切片。我会附上图片,但没有权限这样做。

1 个答案:

答案 0 :(得分:0)

通过进一步修改,我找到了这个解决方案。

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())