Power Query Tabelle erweitern
#1
Question 
Hallo,

mit Excel kenne ich mich zwar gut aus, jetzt brauche ich aber fundiertes Wissen von Power Query und M-Code, was ich noch nicht habe.
Ich lasse derzeit eine ODATA-Quelle laden, expandieren und danach filtern.
Dieses möchte ich gerne beschleunigen und die Filter direkt beim laden berücksichtigen und nicht erst alles laden und dann die Filter anwenden.
Bisher steht im erweiterten Editor folgendes:

let
Quelle = OData.Feed('https://test.com:1234/TEST/OData/Company('TEST')/', null, [Implementation='2.0']),
GebEinkaufsrechnung = Quelle[GebEinkaufsrechnung],
#'Erweiterte GebEinkaufsrechnungPurchInvLines' = Table.ExpandTableColumn(Quelle, 'GebEinkaufsrechnungPurchInvLines', {'Document_No', 'No', 'Quantity', 'Line_Amount'}, {'GebEinkaufsrechnungPurchInvLines.Document_No', 'GebEinkaufsrechnungPurchInvLines.No', 'GebEinkaufsrechnungPurchInvLines.Quantity', 'GebEinkaufsrechnungPurchInvLines.Line_Amount'}),
#'Gefilterte Zeilen' = Table.SelectRows(#'Erweiterte GebEinkaufsrechnungPurchInvLines', each ([GebEinkaufsrechnungPurchInvLines.Quantity] <> 0)),
#'Gefilterte Zeilen1' = Table.SelectRows(#'Gefilterte Zeilen', each [GebEinkaufsrechnungPurchInvLines.Line_Amount] > 0)
in
#'Gefilterte Zeilen1'

Mein derzeitiger, nicht funktionierender Ansatz ist dieser:

let
Quelle = OData.Feed('https://test.com:1234/TEST/OData/Company('TEST')/GebEinkaufsrechnung
?$expand=GebEinkaufsrechnungPurchInvLines, {'Document_No', 'No', 'Quantity', 'Line_Amount'}, {'GebEinkaufsrechnungPurchInvLines.Document_No', 'GebEinkaufsrechnungPurchInvLines.No', 'GebEinkaufsrechnungPurchInvLines.Quantity', 'GebEinkaufsrechnungPurchInvLines.Line_Amount'})
&$filter=
GebEinkaufsrechnungPurchInvLines.Quantity ne '0'
AND (GebEinkaufsrechnungPurchInvLines.Line_Amount gt '0')
'
, null, [Implementation='2.0'])
in
Quelle

Kann mir jemand helfen wie ich meinen falschen Code in korrekten JSON M-Code ändern kann?

Aufgrund der Komplexität der Frage habe ich diese auch in diesen Foren gestellt:
https://www.herber.de/forum/messages/1937486.html
https://www.clever-excel-forum.de/Thread...-erweitern
https://www.ms-office-forum.net/forum/sh...?p=2113401
https://office-fragen.de/thread-28869.html
https://www.gutefrage.net/frage/excel-po...-erweitern
Sobald eine passende Antwort vorliegt werde ich diese auch in allen Foren posten.
Antworten Top
#2
Hola,
Crossposting
bitte in jedem Forum nachholen.
Danke.
Gruß,
steve1da
Antworten Top
#3
(27.07.2023, 15:17)JensH schrieb: Dieses möchte ich gerne beschleunigen und die Filter direkt beim laden berücksichtigen und nicht erst alles laden und dann die Filter anwenden.
Bisher steht im erweiterten Editor folgendes:

let
Quelle = OData.Feed('https://test.com:1234/TEST/OData/Company('TEST')/', null, [Implementation='2.0']),
GebEinkaufsrechnung = Quelle[GebEinkaufsrechnung],
#'Erweiterte GebEinkaufsrechnungPurchInvLines' = Table.ExpandTableColumn(Quelle, 'GebEinkaufsrechnungPurchInvLines', {'Document_No', 'No', 'Quantity', 'Line_Amount'}, {'GebEinkaufsrechnungPurchInvLines.Document_No', 'GebEinkaufsrechnungPurchInvLines.No', 'GebEinkaufsrechnungPurchInvLines.Quantity', 'GebEinkaufsrechnungPurchInvLines.Line_Amount'}),
#'Gefilterte Zeilen' = Table.SelectRows(#'Erweiterte GebEinkaufsrechnungPurchInvLines', each ([GebEinkaufsrechnungPurchInvLines.Quantity] <> 0)),
#'Gefilterte Zeilen1' = Table.SelectRows(#'Gefilterte Zeilen', each [GebEinkaufsrechnungPurchInvLines.Line_Amount] > 0)
in
#'Gefilterte Zeilen1'

Hi, 

das ist zwar möglich, indem Du die ersten Schritte zu einem zusammenfasst, allerdings dürfte es kaum Einfluß auf die Performance haben, da ja trotzdem alle Schritte ausgeführt werden müssen um zum gewünschten Ergebnis zu kommen.

Probier mal:
PHP-Code:
Quelle OData.Feed('https://test.com:1234/TEST/OData/Company('TEST')/'null, [Implementation='2.0']) [GebEinkaufsrechnung], 
Result=  Table.SelectRowsQuelleeach  [GebEinkaufsrechnung] > 0

...oder was auch immer Du filtern willst... wie gesagt... läuft lediglich auf eine Zusammenfassung der vorangegangenen Schritte hinaus. Deshalb würde ich, der Übersichtlichkeit wegen, alles so lassen wie gehabt...
Der sicherste Ansatz für einen Irrtum ist der Glaube, alles im Griff zu haben.
Nur, weil ich den Recorder bedienen kann, macht mich das noch lange nicht zum Musiker.

Ciao, Ralf

Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste