Clever-Excel-Forum

Normale Version: Power Query Tabelle erweitern
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
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.
Hola,
Crossposting
bitte in jedem Forum nachholen.
Danke.
Gruß,
steve1da
(27.07.2023, 14: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...