2016-04-11 11 views
0

Die Daten sind eine Reihe verschachtelter Hierarchien. Innerhalb der Schleifen sind Kinderaufzeichnungen. Die Daten sind eine Liste von Komponenten und Unterkomponenten. Die Unterkomponenten können selbst Unterkomponenten haben.Power Query identifiziert übergeordnete Datensätze in hierarchischen verschachtelten Schleifen.

Der Anfang der Schleifen sind übergeordnete Datensätze für diese verschachtelten untergeordneten Datensätze. Diese Schleifen können ineinander verschachtelt sein.

Der Datensatz ist so geordnet, dass die Datensätze in der richtigen Reihenfolge vorliegen.

Unten ist ein Screenshot, wie es als eingerückte hierarchische Textdatei erscheint.

Grundsätzlich muss die oberste Ebene jeder Schleife zu identifizieren, damit ich andere Spalteninformationen von ihnen erhalten, um mit geschachtelten untergeordneten Werten zu vergleichen. Geschachtelte untergeordnete Eigenschaften sollten dieselben wie übergeordnete sein. Ich muss prüfen, ob das der Fall ist.

Ich habe keinen Code zu zeigen. Ich bin mir nicht sicher, wie es weitergehen soll. Group By scheint vielversprechend zu sein, aber Sie müssen herausfinden, wie Sie die Hierarchie an den Anfang der aktuellen Schleife zurückversetzen und diese mit jedem seiner untergeordneten Datensätze verknüpfen können, damit ich ihre Eigenschaften vergleichen kann.

enter image description here

Abtastdaten ersten Spaltenindex ist einfach die Zeilennummer, und die zweite Spalte Stufe Zahl ist die Hierarchieebene.

Es gibt eine eindeutige Kombination aus Zeilennummer und Hierarchiestufe, die den übergeordneten "Index-Level" jeder Ebene identifizieren würde. Ich möchte diese übergeordnete Indexebene mit jeder ihrer untergeordneten Ebenen verknüpfen.

Die Daten sind Textformat, werden aber in Power Query gebracht, wo die Analyse stattfinden muss.

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

Können Sie ein Datenbeispiel anzeigen? – teylyn

+0

Die relevanten Daten sind im Grunde genommen nur die Zeilen-/Zeilennummer und die Hierarchiestufe, wie im obigen Screenshot dargestellt. Ich könnte 3. Spalte hinzufügen, um Komponentennamen anzuzeigen. Elternkomponente könnte "Auto" sein. Es könnte Unterkomponenten "Engine" sein. Motor-Unterkomponenten könnten Vergaser sein, die ihre eigenen Unterkomponenten usw. haben könnten. – curtisp

+0

Nachdem die Unterkomponenten-Kette der Maschine erschöpft ist, könnte sie zur nächsten Komponente wie Übertragung, sie zum Inneren usw. gehen. Bis hinunter zu den kleinsten Unterkomponenten. Alles nachvollziehbar bis durch verschachtelte Hierarchie zum Auto. Ich möchte die Eigenschaften aller Unterkomponenten anhand der Eigenschaften der übergeordneten Komponente überprüfen – curtisp

Antwort

0

fand ich answer auf Microsoft TechNet Forum, das tut, was ich suchte, obwohl es sehr langsam ausgeführt wird. Für 30k Datensätze dauerte mehr als 30 Minuten auf i7 CPU, 16 GB RAM, 64bit Excel/Power Query-Maschine abzuschließen. Dies ist eine Beschränkung für 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" 

Bei anderen sind in anderen Lösungen interessiert diese Leistungsbegrenzung zu bekommen Vergangenheit I exploring VBA/ADO SQL-Lösung bin haben, aber noch nicht so weit kam.

Auch mit Python xlWings als potential solution zu betrachten.

Verwandte Themen