Power BI中Group By合并字段按数字升序排序异常求助
Power BI Group By 拼接字段排序问题解决思路
问题原因
你当前的公式直接将数字类型的Field1与文本类型的Field2拼接,拼接结果会被自动转为文本格式。List.Sort默认按文本规则排序,文本排序时"10"会因为首字符"1"小于"2"而排在"2"前面,导致不符合预期的排序结果。
解决方法
方法一:先按数字字段排序,再拼接合并
先对分组内的行按Field1(数字类型)升序排序,再生成拼接后的文本列表并合并。修改后的公式如下:
= Table.Group(#"customized column", {"FactorA", "FactorB"}, { {"Combined value", let sortedRows = Table.Sort(_, {"Field1", Order.Ascending}) in Text.Combine(sortedRows[Field1] & sortedRows[Field2], "#(lf)"), type nullable text } })
这里通过let...in先处理分组内的排序,再基于排序后的行生成拼接内容,确保是按数字大小排序。
方法二:自定义排序规则,基于数字字段排序
在List.Sort中指定排序依据为Field1的数值,而非拼接后的文本。修改后的公式如下:
= Table.Group(#"customized column", {"FactorA", "FactorB"}, { {"Combined value", Text.Combine( List.Sort(Table.ToRecords(_), (a, b) => Value.Compare(a[Field1], b[Field1])) |> List.Transform((r) => r[Field1] & r[Field2]), "#(lf)"), type nullable text } })
该方法先将分组内的表转为记录列表,再通过自定义比较函数Value.Compare(a[Field1], b[Field1])按数字大小排序,最后提取拼接内容合并。
内容的提问来源于stack exchange,提问作者Betty888
相关产品推荐
相关产品推荐

