【问题标题】:Ordering Matrix by Specific Column in Power BIPower BI 中按特定列排序矩阵
【发布时间】:2018-09-20 11:04:55
【问题描述】:

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

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

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

使用表格视觉对象,我将鼠标悬停在列标题上,然后可以按该列排序,但该功能不会出现在矩阵中。

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

【问题讨论】:

  • 棘手,你为什么不能只用一张桌子?
  • @StelioK 因为在真实报告中我使用顶部日历表中的月份列
  • 你可以破解它。为该蓝色列创建一个排名,确保它从一个大于所有列中最大值的数字开始并按此排序,您必须隐藏该列,但它可能会起作用。
  • @StelioK 我认为这行不通
  • 它会起作用的 :) 你必须相信

标签: powerbi dax


【解决方案1】:

您需要在表格中添加一个排序列,其中包含该特定水果的蓝色数量的总和。像这样。

您不能在 DAX(计算列)中执行此操作,因为您无法按 [Sort] 对 [Fruit] 进行排序,因为 [Sort] 已经按 [Fruit] 间接排序。

所以你需要使用查询编辑器。我在 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"

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

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

【讨论】:

  • 这很有趣 - 它不会是动态的,即如果用户点击切片器等,但总比没有好。我使用 SQL-Server 作为我的来源,所以我将在该来源而不是 M
  • 对这种方法感到满意 - 希望矩阵的未来迭代将包含此功能
猜你喜欢
  • 2020-05-20
  • 1970-01-01
  • 2021-05-18
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
  • 2019-11-12
相关资源
最近更新 更多