2017-09-04 1 views
0

Ich versuche, das MAX-Datum von einer Tabelle auf ein anderes Datum mit Leistungsabfrage zu bekommen. Im Moment stecke ich fest und alles, was ich bekomme, ist ein Tisch, der auf einer Bedingung basiert. Ich bin mir nicht sicher, ob das klar ist, also erkläre ich es mit dem Code. Dies ist mein Code im Moment:Power Query MAX Wert aus einer Tabelle

let 
    Source = Table.NestedJoin(Table.NestedJoin(SKU,{"SKU"},q_UltColh_NEW,{"SKU"},"qUltColh_NEW",JoinKind.LeftOuter),{"SKU"},r_STK,{"SKU"},"Rep_Stk", JoinKind.LeftOuter), 
. 
. 
. 
#"Expanded Origem" = ... 
    #"Expanded Origem" = Table.ExpandTableColumn(#"Merged Queries", "Origem", {"Desc_ORI", "Parent_ORI"}, {"Origem.Desc_ORI", "Origem.Parent_ORI"}), 
    #"Added Last_Rec" = Table.AddColumn(#"Expanded Origem", "Last_Rec", each 
                  let SKU = [SKU] 
                  in Table.SelectRows(r_GOODSREC,each [SKU]=SKU) 
) 
in 
    #"Added Last_Rec" 

Ich habe zwei Tabellen:

SKU  Desc 
46_24_ ABC 
103_5_ DEF 

doc_DATE RowNo SKU  Cod_ART  QTT 
10/01/2017 1  46_24_ 46.24  50 
14/01/2017 1  46_24_ 46.24  100 
14/01/2017 1  103_5_ 103.5  50 
16/01/2017 1  103_5_ 103.5  100 

Und ich will bekommen:

SKU  Desc Last_Entry Qtt 
46_24_ ABC  14/01/2017 50 
103_5_ DEF  16/01/2017 100 

mein Code eine Tabelle mit verschiedenen Spalten zurückgibt: Artikelnummer Beschreibung Letzter Eintrag
46_24_ ABC Tabelle
103_5_ DEF Tabelle

Ich glaube, sobald ich den maximalen Wert habe, kann ich den Tisch einfach erweitern, es sei denn, Sie sagen mir, dass das eine schlechte Idee ist.

Vielen Dank,

Antwort

0

Ich habe dies mit dem folgenden Code:

enter image description here

Hinweise:

1. Mein Datumsformat ist Monat/Tag/Jahr während Ihres war Tag/Monat/Jahr.

2. Auch in Ihrer Frage zeigen Sie eine erwartete QTT von 50 für SKU 46_24_; aber Ihre Quelltabelle hat 100 als QTT für das späteste Datum von SKU 46_24_, deshalb hat meine Tabelle 100 anstelle von 50.

Ich benutzte die gleichen zwei Anfangstabellen wie Sie. Ich nannte sie Table1 und Table2. (Tabelle1 ist die mit den Spalten SKU und Desc.)

Dann habe ich diese beiden Tabellen in eine neue Tabelle mit dem Namen Merge1 zusammengeführt, die einen Links-Outer-Join verwendet.

Ich denke, die wichtigsten Punkte sind:

I „Gruppierung“, die von jeder SKU (dh Table.Group) zu gruppieren und seinen max Datumswert erhalten in einer Spalte I Last_Entry genannt, und ich schloss alle Zeilendaten in einer Spalte namens AllData. Hier ist die Gruppe von Pop-up-Fenster:

enter image description here

Dann, nach der Gruppierung, I erweiterte die eingebettete Tabelle in AllData und hinzugefügt, um eine neue Spalte zu markieren und ausfiltern die Zeilen, in denen die DOC_DATE war nicht gleich zu Last_Entry.

let 
Source = Table.NestedJoin(Table1,{"SKU"},Table2,{"SKU"},"Table2",JoinKind.LeftOuter), 
#"Expanded Table2" = Table.ExpandTableColumn(Source, "Table2", {"doc_Date", "RowNo", "SKU", "Cod_ART", "QTT"}, {"doc_Date", "RowNo", "SKU.1", "Cod_ART", "QTT"}), 
#"Changed Type" = Table.TransformColumnTypes(#"Expanded Table2",{{"doc_Date", type date}}), 
#"Grouped Rows" = Table.Group(#"Changed Type", {"SKU"}, {{"Last_Entry", each List.Max([doc_Date]), type datetime}, {"AllData", each _, type table}}), 
#"Expanded AllData1" = Table.ExpandTableColumn(#"Grouped Rows", "AllData", {"Desc", "doc_Date", "QTT"}, {"Desc", "doc_Date", "QTT"}), 
#"Added Custom" = Table.AddColumn(#"Expanded AllData1", "Custom", each if[Last_Entry]=[doc_Date] then "Last_Entry" else "NotLast_Entry"), 
#"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = "Last_Entry")), 
#"Removed Columns" = Table.RemoveColumns(#"Filtered Rows",{"Custom", "doc_Date"}), 
#"Reordered Columns" = Table.ReorderColumns(#"Removed Columns",{"SKU", "Desc", "Last_Entry", "QTT"}) 
in 
#"Reordered Columns" 
+0

Vielen Dank für die Antwort. In Bezug auf die Notizen: 1. Das hat normalerweise mit der PC-Konfiguration zu tun, ich habe dieses Problem nicht gefunden, aber ich werde tun, dass es daran erinnert, da Termine normalerweise Kopfschmerzen sind; 2. Sie haben Recht, mein Fehler, ich entschuldige mich; In Bezug auf die Antwort könnte ich es replizieren, vielleicht weil ich versucht habe, es zu vereinfachen und viele Spalten aus der ersten Tabelle entfernt.Ich werde es weiter versuchen, weil es auf diese Weise ein Fehler sein könnte. Ich bearbeite deine Antwort (plus, so lernst du). Vielen Dank – BrunoR

+0

Wenn Sie mit Ihrer ersten Tabelle (die mit SKU und Desc) als Tabelle1 geladen und Ihre zweite Tabelle als Tabelle2 geladen, dann erstellen Sie eine neue leere Abfrage und ersetzen Sie die neue leere Abfrage Code mit meinem Code, Dinge sollten Arbeit in Ordnung; und Sie sollten in der Lage sein, auf die verschiedenen angewendeten Abfrageschritte doppelt zu klicken, um zu sehen, wie ich tat, was ich mit der GUI tat. Wenn Sie immer noch Schwierigkeiten haben, es zum Laufen zu bringen, kann ich später Schritt-für-Schritt-Bildschirmclips bereitstellen. Lass es mich wissen, wenn du sie brauchst. –

Verwandte Themen