Microsoft Power BI DAX - 将具有两列整数值范围的表转换为新表,该表中的每个值都有一行

问题描述

我遇到了使用 Microsoft Power BI 的情况。我有一个源表(称为 Couriers),其中包含任何给定的 Courier 和 Country 组合的权重范围(MinWeight 到 MaxWeight)以及运费值。

enter image description here

我需要在 Power BI 中开发一个新表(称为 Couriers_FlattenedData),其中,我为 MinWeight 和 MaxWeight 之间的每个值获取一行。

enter image description here

例如,如果 FedEx Australia 的最小重量到最大重量分别为 0 和 5,则我需要从 1 到 5 的 5 行。

我需要新 Couriers_FlattenedData 表中的这些 4 列 - Courier、Country、Weight、Freight。权重列根据源表中的范围转换为行。

我正在尝试在 DAX 以及使用后端 Power Query 编辑器(使用 M 语言)中派生新表。我想要两种方法来开发这个新表。

我在 DAX 中尝试过类似的方法,但无法找到解决方案。

Couriers_FlattenedData = SELECTCOLUMNS (
    
                                         GENERATE (

                                                    'Couriers',GENERATESERIES (

                                                                                CALculaTE(disTINCT(Couriers[MinWeight])+1),CALculaTE(disTINCT(Couriers[MaxWeight]))

                                                                              )

                                                  ),"Courier",Couriers[Courier],"Country",Couriers[Country],"Freight",Couriers[Freight]

                                        )

有人可以更正上面缺少权重列的 DAX 表达式吗?或者甚至提供使用变量的解决方案?

以及使用 Power BI 的 Power Query 编辑器的分步解决方案?

解决方法

DAX 解决方案:

Couriers_FlattenedData = SELECTCOLUMNS (

                                         GENERATE (
                                                     Couriers,GENERATESERIES(Couriers[MinWeight] + 1,Couriers[MaxWeight])

                                                  ),"Courier",Couriers[Courier],"Country",Couriers[Country],"Weight",[Value],"Freight",Couriers[Freight]

                                        )

查询编辑器解决方案:

复制 Couriers 表(在查询编辑器中),然后转到查询编辑器的高级编辑器,然后粘贴:

let
    Source = Couriers,WeightList = Table.CombineColumns(Source,{"MinWeight","MaxWeight"},each {_{0}+1.._{1}},"Weight"),ExpandWeightList = Table.ExpandListColumn(WeightList,ChangedType = Table.TransformColumnTypes(ExpandWeightList,{{"Weight",Int64.Type}})
in
    ChangedType

将表重命名为 Couriers_FlattenedData

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...