Power BI

时间:2018-09-20 11:04:56

标签: powerbi dax

我正在使用相对较新的Power BI for Report Server。

我有这个简化的数据:

ImaginaryData = 
DATATABLE (
    "Fruit", STRING,
    "Colour", STRING, 
    "Amount", INTEGER, 
    { 
        { "Apple", "Red", 10 }, 
        { "Apple", "Green", 5 },
        { "Apple", "Blue", 17 },
        { "Pear", "Red", 100 },
        { "Pear", "Green", 65 },
        { "Pear", "Blue", 5 },
        { "Orange", "Red", 12 },
        { "Orange", "Green", 8 },
        { "Orange", "Blue", 38 }
    } )

然后我创建一个数据矩阵:

enter image description here

我想按“蓝色”列中的数量对这个矩阵进行排序,即“水果橙”应该在列表的顶部。

使用Table外观时,我将鼠标悬停在列标题上,然后可以按该列进行排序,但是该功能对于Matrix而言不会出现。

如何解决此问题? [使用表不是解决方案]

1 个答案:

答案 0 :(得分:2)

您需要在表中添加一个排序列,其中包含该特定水果的蓝色金额之和。这样。

table

您无法在DAX(计算列)中执行此操作,因为那样您就无法通过[排序]对[水果]进行排序,因为[排序]已经可以通过[水果]间接进行排序。

因此,您需要使用查询编辑器。我在excel工作簿中重新创建了表格以将其导入。然后我使用了以下M脚本

let
    SortColour = "Blue",

    Source = Excel.Workbook(File.Contents("C:\Users\XXXXX\Documents\ImaginaryData.xlsx"), null, true),
    ImaginaryData_Table = Source{[Item="ImaginaryData",Kind="Table"]}[Data],
    #"Changed Type" = Table.TransformColumnTypes(ImaginaryData_Table,{{"Fruit", type text}, {"Colour", type text}, {"Amount", Int64.Type}}),
    JoinTable = Table.SelectRows(Table.Group(#"Changed Type", {"Fruit", "Colour"}, {{"Count", each List.Sum([Amount]), Int64.Type}}), each ([Colour] = SortColour)),
    #"Merged Queries" = Table.NestedJoin(#"Changed Type",{"Fruit"},JoinTable,{"Fruit"},"SortTable",JoinKind.LeftOuter),
    #"Expanded SortTable" = Table.ExpandTableColumn(#"Merged Queries", "SortTable", {"Count"}, {"Sort"})
in
    #"Expanded SortTable"

加载此查询后,您可以在“数据”视图中(“建模”选项卡上的“按列排序”)对[水果]按[排序]进行排序。然后重新创建矩阵视觉对象,并通过单击视觉对象中的三角形对水果列进行降序排序。

enter image description here

在excel中将行{Pear / Blue / 50}添加到表中并在PowerBI中刷新时,矩阵将更改为:

enter image description here