Power BI:将项目分组在一列中,具有不同值的其他列显示为几列
Posted
技术标签:
【中文标题】Power BI:将项目分组在一列中,具有不同值的其他列显示为几列【英文标题】:Power BI: grouping items in one colum, other columns that have different values appear as several columns 【发布时间】:2021-09-29 09:50:26 【问题描述】:我有一个关于 Power BI 的表格的问题。事实上,我有第一列是进程的名称或 ID,第二列是进程的步骤编号,第三列是步骤的时间。示例:
第 1 列:[A、A、B、A、C、B、C]
第 2 列:[1、2、1、3、1、2、2]
第 3 列:[8、9、6、10、18、7、19]
我希望它显示为一个表格,其中包含流程的第一列(不重复),以及包含步骤和相关小时数的新列,例如:
第 1 列:[A、B、C]
第 2 列:[8, 6, 18] #每个流程第 1 步的小时数
第 3 列:[9, 7, 19] #每个流程第 2 步的小时数
第 4 列:[10, Nan, Nan] #每个流程第 3 步的小时数
这是否可以直接在 Power BI 上执行,或者我需要通过其他工具(例如 python)传递? 谢谢,
【问题讨论】:
【参考方案1】:您可以通过以下措施实现这一目标
_1 = MINX(FILTER(tbl,tbl[colB]=1),tbl[colC])
_2 = MINX(FILTER(tbl,tbl[colB]=2),tbl[colC])
_3 = MINX(FILTER(tbl,tbl[colB]=3),tbl[colC])
以下是电源查询解决方案
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WclTSUTIEYgulWB0IzwiILeE8Y5C8AZjrBFVqBueBlJqDec5QOUMLOBckaQg0KBYA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [colA = _t, colB = _t, colC = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,"colA", type text, "colB", Int64.Type, "colC", Int64.Type),
#"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Changed Type", "colB", type text, "en-US"), List.Distinct(Table.TransformColumnTypes(#"Changed Type", "colB", type text, "en-US")[colB]), "colB", "colC", List.Min)
in
#"Pivoted Column"
【讨论】:
感谢您的回答。我尝试了 minx 函数,但得到了 MINX(与 MIN 相同)的错误无法识别。我不知道是不是因为我在 Power BI 桌面而不是 Power BI 上工作(我忘记精确了)。是否有一个解决方案,即对第一列(使用 A、B、C)使用 GROUP BY,对第二列使用 if,例如,如果列 step = 1 因此输入列小时的值,否则为 null? (抱歉,我是 Power BI 新手) 在 power bi 中加载您的表格。在建模选项卡上,单击新建度量并创建使用MINX
编写的所有度量以上是关于Power BI:将项目分组在一列中,具有不同值的其他列显示为几列的主要内容,如果未能解决你的问题,请参考以下文章
Power Query / Power BI - 用另一列中的值替换空值