首页 文章

在Power BI中按特定列排序矩阵

提问于
浏览
1

我正在使用相对较新版本的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

我想按蓝色列中的金额订购此矩阵,即水果橙应位于列表的顶部 .

使用表格可视化,我将鼠标悬停在列 Headers 上,然后可以按该列排序,但该功能不会出现在Matrix中 .

我该如何解决这个问题? [使用表格不是解决方案]

1 回答

  • 2

    您需要在表格中添加一个sortcolumn,它包含该特定水果的蓝色金额总和 . 像这样 .

    table

    您无法在DAX(计算列)中执行此操作,因为您无法按[排序]对[水果]进行排序,因为[排序]已全部按[水果]间接排序 .

    所以你需要使用查询编辑器 . 我在excel-workbook中重新创建了表来导入它 . 然后我使用了以下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

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

    enter image description here

相关问题