Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

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, 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...
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