【问题标题】:Power BI: How to custom sortPower BI:如何自定义排序
【发布时间】:2020-11-29 00:14:50
【问题描述】:

我有一个 Power BI 自定义排序问题。我需要将我的原始数据分组,然后分组。我正在努力为这些组和子组进行自定义排序。

让我用我的示例 T 恤销售数据来解释一下。

  1. 这是我添加了唯一键列的原始数据:Gender_Size_Sleeve_OrganicOrNot
ProductID  Gender  Size   Sleeve  OrganicOrNot  UnitPrice  UnitsSold  Sales Gender_Size_Sleeve_OrganicOrNot 
    
#123456    Male    110cm  Long    Organic       $25        1          $25   Male_110cm_Long_Organic
#234567    Male    Small  Short   NonOrganic    $40        1          $40   Male_Small_Short_NonOrganic
#345678    Male    Medium Short   NonOrganic    $30        2          $60   Male_Medium_Short_NonOrganic
#456789    Female  Large  Long    NonOrganic    $55        1          $55   Female_Large_Long_NonOrganic
#567890    Female  120cm  Short   Organic       $35        1          $35   Female_120cm_Short_Organic
#678901    Female  100cm  Long    Organic       $37        1          $37   Female_100cm_Long_Organic
...
  1. 我的目标是按以下方式对这些数据按“类别”分组并按“产品类型”分组,并显示汇总的销售额:
Category  ProductType           Sales
Women     Long Sleeve           $8,250
          Organic Long Sleeve   $9,300
          Short Sleeve          $7,500
          Organic Short Sleeve  $4,200
Men       Long Sleeve           $6,000
          Organic Long Sleeve   $3,800
          Short Sleeve          $1,800
          Organic Short Sleeve  $3,250
Girls     Long Sleeve           $3,805
          Organic Long Sleeve   $6,660
          Short Sleeve          $8,805
          Organic Short Sleeve  $4,250
Boys      Long Sleeve           $3,570
          Organic Long Sleeve   $8,000
          Short Sleeve          $7,770
          Organic short Sleeve  $9,000
  1. 上述“Category”和“ProductType”由以下映射表定义到原始数据:
Gender_Size_Sleeve_OrganicOrNot Category  ProductType           NumCategory  NumProductType
Female_Large_Long_NonOrganic    Women     Long Sleeve           1            1
Female_Midium_Long_NonOrganic   Women     Long Sleeve           1            1
Female_Small_Long_NonOrganic    Women     Long Sleeve           1            1
Female_Large_Long_Organic       Women     Organic Long Sleeve   1            2
Female_Midium_Long_Organic      Women     Organic Long Sleeve   1            2
Female_Small_Long_Organic       Women     Organic Long Sleeve   1            2
Female_Large_Short_NonOrganic   Women     Short Sleeve          1            3
Female_Midium_Short_NonOrganic  Women     Short Sleeve          1            3
Female_Small_Short_NonOrganic   Women     Short Sleeve          1            3
Female_Large_Short_Organic      Women     Organic Short Sleeve  1            4
Female_Midium_Short_Organic     Women     Organic Short Sleeve  1            4
Female_Small_Short_Organic      Women     Organic Short Sleeve  1            4
Male_Large_Long_NonOrganic      Men       Long Sleeve           2            5
Male_Midium_Long_NonOrganic     Men       Long Sleeve           2            5
Male_Small_Long_NonOrganic      Men       Long Sleeve           2            5
Male_Large_Long_Organic         Men       Organic Long Sleeve   2            6
Male_Midium_Long_Organic        Men       Organic Long Sleeve   2            6
Male_Small_Long_Organic         Men       Organic Long Sleeve   2            6
Male_Large_Short_NonOrganic     Men       Short Sleeve          2            7
Male_Midium_Short_NonOrganic    Men       Short Sleeve          2            7
Male_Small_Short_NonOrganic     Men       Short Sleeve          2            7
Male_Large_Short_Organic        Men       Organic Short Sleeve  2            8
Male_Midium_Short_Organic       Men       Organic Short Sleeve  2            8
Male_Small_Short_Organic        Men       Organic Short Sleeve  2            8
Female_100cm_Long_NonOrganic    Girls     Long Sleeve           3            9
Female_110cm_Long_NonOrganic    Girls     Long Sleeve           3            9
Female_120cm_Long_NonOrganic    Girls     Long Sleeve           3            9
Female_100cm_Long_Organic       Girls     Organic Long Sleeve   3            10
Female_110cm_Long_Organic       Girls     Organic Long Sleeve   3            10
Female_120cm_Long_Organic       Girls     Organic Long Sleeve   3            10
Female_100cm_Short_NonOrganic   Girls     Short Sleeve          3            11
Female_110cm_Short_NonOrganic   Girls     Short Sleeve          3            11
Female_120cm_Short_NonOrganic   Girls     Short Sleeve          3            11
Female_100cm_Short_Organic      Girls     Organic Short Sleeve  3            12
Female_110cm_Short_Organic      Girls     Organic Short Sleeve  3            12
Female_120cm_Short_Organic      Girls     Organic Short Sleeve  3            12
Male_100cm_Long_NonOrganic      Boys      Long Sleeve           4            13
Male_110cm_Long_NonOrganic      Boys      Long Sleeve           4            13
Male_120cm_Long_NonOrganic      Boys      Long Sleeve           4            13
Male_100cm_Long_Organic         Boys      Organic Long Sleeve   4            14
Male_110cm_Long_Organic         Boys      Organic Long Sleeve   4            14
Male_120cm_Long_Organic         Boys      Organic Long Sleeve   4            14
Male_100cm_Short_NonOrganic     Boys      Short Sleeve          4            15
Male_110cm_Short_NonOrganic     Boys      Short Sleeve          4            15
Male_120cm_Short_NonOrganic     Boys      Short Sleeve          4            15
Male_100cm_Short_Organic        Boys      Organic Short Sleeve  4            16
Male_110cm_Short_Organic        Boys      Organic Short Sleeve  4            16
Male_120cm_Short_Organic        Boys      Organic Short Sleeve  4            16
  1. 我可以用我的原始数据表和映射表创建一个矩阵:

  1. 此外,我可以使“类别”列按“NumCategory”列排序并从矩阵中删除“NumCategory”列:

  1. 我想从表中删除“NumProductType”,但想保留“ProductType”的顺序。但是,不允许将“ProductType”按“NumProductType”排序,因为“ProductType”中的相同值在“NumProductType”中有多个值:

保持这个“ProductType”顺序对我来说至关重要。您能建议绕行吗?

感谢和问候, 京都

【问题讨论】:

    标签: powerbi powerbi-desktop


    【解决方案1】:

    好的,您的主要问题是同一产品类型有多个值。

    我就是这样解决的。

    首先,使用电源查询复制 ProductType 列。这非常重要,否则你仍然会得到同样的错误。

    然后使用以下 dax 公式创建一个新列:

    Order = 
       VAR __prodType = 'sample'[ProductCopy]
       VAR __subTable = 
           FILTER( 'sample', 'sample'[ProductCopy] = __prodType )
       VAR __minValue =
           CALCULATE( MIN( 'sample'[NumProductType] ), __subTable )
    
    Return __minValue
    

    这个 dax 公式创建了我们的排序列,其中包含每个产品类型的唯一值。请注意,我们使用的是重复的产品列,而不是原来的列。

    然后选择原始的 ProductType 列并使用 Order 列对其进行排序。

    我的 power bi 版本是西班牙语,但你会明白的。

    现在使用类别和产品类型列创建矩阵,并按类别

    对其进行排序

    这是最终结果:

    【讨论】:

    • 嗨奥古斯丁。非常感谢您发布一个漂亮的解决方案。它当然也适用于我。这确实是一个很酷的解决方案,可以适用于许多其他问题。非常感谢!
    猜你喜欢
    • 2020-05-20
    • 2021-05-18
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2015-07-19
    • 1970-01-01
    相关资源
    最近更新 更多