在Power BI中基于列表创建一个包含范围的表格。

3
我在Power BI中工作,有一个像“输入”中呈现的表格数据。我需要对其进行转换,以获得范围(如“目标”中所示)。我能够使用简单的可视化工具获取聚合A和B以及最小值和最大值的范围,但这并不完全是我需要的。不知道如何针对不同的A、B系列获取范围。在Power BI中是否可以实现这一点?
注意:在您的帮助下,我能够使用Python使它正常工作,但不幸的是,这需要完全在Power BI中完成(无需实现Python代码)。
我卡住了,非常感谢任何能让我开始工作的建议。 输入 错误 序号
A 1 A 2 A 3 A 4 A 5 A 6 A 7 A 8 B 9 B 10 B 11 A 12 A 13 A 14 B 15 B 16 B 17 B 18 B 19 B 20 B 21 目标 我需要两个单独的结果,最好是在表格中,但此时我对任何解决方案都持开放态度。
(1)
Cat MIN MAX
A 1 8
A 12 14
B 9 11
B 15 21

(2)

Cat 范围
A 1-8; 12-14
B 9-11; 15-21

我附上了一个已经加载的输入表格和pbix文件,可以在https://github.com/jarsonX/Temp_files中找到。

这是明显的虚拟数据。实际情况下,CSV文件可能会有更多的列和更多的行数,但我只需要上述两个。如果您能给我一些建议或示例,我会尝试自己解决剩余的问题。

1个回答

2
我不知道你需要在模型中保留哪种粒度,但这是一种方法。

enter image description here

在 PQ 中,您需要将最后一个参数分组并添加为 groupkind.local。完整代码。
let
    Source = Csv.Document(File.Contents("C:\Users\Dav\Downloads\file.csv"),[Delimiter=",", Columns=2, Encoding=1252, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"error", type text}, {"seq num", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"error"}, {{"Min", each List.Min([seq num]), type nullable number}, {"Max", each List.Max([seq num]), type nullable number}}, GroupKind.Local)
in
    #"Grouped Rows"

这个表格中的结果:

enter image description here

在Power BI中,创建如下的度量。
Measure = CONCATENATEX(input_data, input_data[Min] &"-"& input_data[Max],";")

将所有内容添加到表格中。

enter image description here


1
使用 GroupKind.Local 时,在分组之前正确地排序非常重要。我会在查询中显式地执行此操作,而不是假设顺序。很棒的解决方案,David! - Marcus
同意,说得好。 - David Bacci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接