数据是一系列嵌套层次结构。循环内是子记录。数据是组件和子组件的列表。子组件本身可能有子组件。
循环的顶部是这些嵌套子记录的父记录。这些循环可以互相嵌套。
对数据集进行排序,使记录按正确顺序排列。
下面是它如何显示为缩进的分层文本文件的屏幕截图。
基本上需要识别每个循环的顶层,以便我可以从中获取其他列信息以与嵌套的子值进行比较。嵌套子属性应与父级相同。我需要检查是否是这种情况。
我没有要显示的代码。不知道如何继续。 Group By似乎很有希望,但需要找出将层次结构备份到当前循环顶部的方法,并将其与每个子记录相关联,以便我可以比较它们的属性。
示例数据,第一列索引只是行号,第二列级别号是层次结构级别。
行号和层次结构级别的唯一组合可识别每个级别的父级"索引级别"。我想将此父级索引级别与其每个子级别相关联。
数据是文本格式,但会进入Power Query,必须进行分析。
Index Level Number Parent Index-Level
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
15 14
16 14
17 14
18 14
19 14
20 14
21 13
22 13
23 13
24 14
25 14
26 14
27 11
28 9
29 9
30 9
31 9
32 9
33 9
34 9
35 8
36 9
37 10
38 11
39 11
40 12
41 12
42 13
43 13
44 13
45 11
46 12
47 13
48 14
49 14
50 14
答案 0 :(得分:0)
我在Microsoft TechNet论坛上找到了answer,虽然它的运行速度非常慢,但它正在寻找我正在寻找的东西。对于30k记录,在i7 cpu,16 GB RAM,64位Excel / Power Query机器上完成需要30多分钟。这是Power Query限制。
let
Source = Excel.CurrentWorkbook(){[Name="Tabelle3"]}[Content],
ParentIndex = Table.AddColumn(Source, "ParentIndex", each let Index=[Index], LN=[Level Number] in List.Max(Table.SelectRows(Source, each _[Index] < Index and _[Level Number]=LN-1)[Index])),
#"Merged Queries" = Table.NestedJoin(ParentIndex,{"ParentIndex"},ParentIndex,{"Index"},"NewColumn",JoinKind.LeftOuter),
#"Expanded NewColumn" = Table.ExpandTableColumn(#"Merged Queries", "NewColumn", {"Level Number"}, {"Level Number.1"})
in
#"Expanded NewColumn"
如果其他人对其他解决方案感兴趣以超越此性能限制,我是exploring VBA / ADO SQL解决方案,但还没有到达那里。
同时考虑将Python xlWings用作potential solution。