Xtract: Am Beispiel einer existierenden und bereits eingebundenen simplen PQ-UDF wird die Anwendung schrittweise demonstriert.
Wissensstand: Level 3 ⇒ Excel GUT!, mindestens Basis-Kenntnisse in Power Query
In diesem Beitrag unseres Blogs wurde Ihnen aufgezeigt, wie eine einfache Benutzerdefinierte PQ-Funktion (PQ-UDF) in Ihr Projekt integrieren, einbinden. Die Funktion hat den Namen Multiplikation 2 Zahlen und multipliziert 2 als Argument übergebene numerische Werte. Sie haben in dem Beitrag erkannt, dass Sie beispielsweise zu Prüfzwecken im entsprechenden Dialog beliebige Zahlen eingeben und das Ergebnis dann überprüfen können. Typischerweise werden Sie aber solch eine Funktion direkt in der Abfrage einsetzen und sich auf Werte in existierenden Spalten beziehen.
Vorbereitung
Bevor Sie mit ihren eigenen, realen Daten experimentieren werden Sie vielleicht mit einer von mir zur Verfügung gestellten Datei bessere (und auf jeden Fall risikolosere) Vergleichsmöglichkeiten haben. Falls Sie das Einbinden einer solchen PQ-UDF noch einmal üben wollen, bietet sich dieses File an. Möchten Sie mit der eingebundenen PQ-UDF gleich loslegen, dann laden Sie diese Datei von unserem Server herunter; dort ist schon eine Abfrage erstellt und die benutzerdefinierte Funktion bereits eingebunden.
Die folgende Beschreibung geht davon aus, dass Sie sich im Abfrage-Editor befinden, die Query Abfrage1 geöffnet ist und die Funktion Multiplikation 2 Zahlen bereits eingebunden ist.
Der Test-Dialog
Wie eben beschrieben, stellt sich das Fenster mit ihrer Abfrage so dar:
Da es hier ja nur um den Test der Funktion und eine kurze, logische Überprüfung des Ergebnisses geht, ist die hierüber dargestellte Abfrage nicht relevant. Natürlich können Sie 2 Werte aus der Abfrage verwenden, aber ich persönlich ziehe 2 bis 3 ganz simple Tests wie beispielsweise 3 × 3, 4 × 2,5 oder 3,3 × 3,3 vor. Das in Excel als auch ein Power Query das Multiplikationszeichen nicht das × ist sondern der *, das versteht sich von alleine. 😉 Aber sie werden gleich erkennen, dass Sie keinen Rechenoperator eingeben müssen (und auch nicht dürfen), sondern nur Multiplikator und Multiplikand.
Klicken Sie in diesem Stadium einfach einmal im linken Seitenfenster auf die Zeile mit der Funktion. Ihr Bildschirm wird sich nun so zeigen:
Nachdem Sie ihre beiden Testwerte eingegeben haben Klicken Sie auf die Schaltfläche Aufrufen und das Ergebnis wird Ihnen sofort angezeigt. Es ist bemerkenswert, dass Sie die Eingabe von Dezimalzahlen landestypisch (hier in Deutschland also mit einem Dezimalkomma) vornehmen. Wenn Sie sich das Ergebnis dieses Funktionsaufrufs ansehen, erkennen Sie in der Editierzeile dass PQ automatisch den Dezimalpunkt verwendet; und beim Ergebnis kommt (wieder einmal) die Fließkomma-Problematik zum Tragen. Sie hätten zurecht das Ergebnis 10,89 erwartet:
Wenn Sie dieses Ergebnis in irgend einer Form noch weiter verwenden wollen, dann können Sie diese Abfrage bestehen lassen oder in eine Liste konvertieren. Ich lösche sie wieder, denn die Funktion soll ja letztendlich wie eine in PQ integrierte Funktion verwendet werden.
Ich will Ihnen aber auch eine weitere Möglichkeit nicht verheimlichen:
Wenn Sie sich im Excel-Arbeitsblatt befinden und im rechten Seitenfenster einen Doppelklick auf die Funktion durchführen, wird ein „schlanker“ Dialog eingeblendet, wo Sie die beiden Zahlenwerte eingeben können und nach einem Klick auf OK erstellt Excel das gleiche Ergebnis wie zuvor als Power Query-Abfrage, aber auf direktem Wege.
Typischer Einsatz der (prinzipiell jeder) PQ-UDF
Aktivieren Sie nun die Query Abfrage1, wo ja mittels der PQ-UDF die Fläche aus Länge und Breite berechnet werden soll. Und natürlich sollen die Berechnungen in der Spalte Fläche (cm²) durchgeführt bzw. ausgegeben werden. Da tut sich aber schon das erste Problem auf, denn im Gegensatz zu einer tabellarischen Aufstellung (nicht „Formatierte”/„Intelligente” Tabelle) in Excel können Sie in Power Query nicht einfach den Inhalt einer Zelle durch eine Formel oder Funktion ersetzen. Also erstellen Sie eine neue, Benutzerdefinierte Spalte, wo automatisch in jeder Zeile die Funktion-Berechnung durchgeführt wird.
Aber da gibt es ein Problem. Die Überschrift der neuen Spalte soll natürlich Fläche (cm²) sein und ihnen ist bekannt, dass in einer Tabelle keine zwei Spalten mit identischem Namen (Überschrift) existieren können. Da ich grundsätzlich faul bin, gehe ich so vor: Ich kopiere den Text der entsprechende Überschrift in die Zwischenablage, lösche diese Spalte, erstelle die neue Spalte und füge dann den Inhalt der Zwischenablage als Überschrift (Neuer Spaltenname) für die neue Spalte ein. Anschließend trage ich (und tragen auch Sie) in den Bereich Benutzerdefinierte Spaltenformel diese Formel ein:
= #"Multiplikation 2 Zahlen"([#"Länge (cm)"],
[#"Breite (cm)"])
Nach dem bereits vorgegebenen Gleichheitszeichen kommt die korrekte Schreibweise der selbst erstellten Funktion. Danach eine öffnende runde Klammer, gefolgt von den beiden erforderlichen Argumenten (Parametern). Wobei Sie natürlich die Spaltennamen aus dem Bereich Verfügbare Spalten per Doppelklick übernehmen können.Abschließend folgt dann noch die schließende runde Klammer. Ich habe die Formel mehrzeilig eingegeben, damit sie übersichtlicher und somit besser lesbar ist.
Ach ja, dass der Funktionsname mit einer Raute (#) beginnt und in Gänsefüßchen (""
) eingefasst ist liegt daran, dass im Funktionsnamen Leerzeichen enthalten sind. Wäre es bei Abfrag1 geblieben, dann würde der exakte und nicht durch # und Klammern erweiterte Name ausreichen. – Und nach einem Klick auf OK wird die Berechnung der Flächen ruck zuck für jede Zeile der Abfrage durchgeführt. Bleibt in dieser Situation prinzipiell nur noch, die Spalte mit der Flächenberechnung an die korrekte Position zu verschieben.
Hinweis: In manchen Fällen haben Sie eine PQ-UDF vorliegen, welche ohne Argumente genutzt wird. Denken Sie beim Aufruf daran, dass Sie auch hier die öffnende und schließende Klammer verwenden müssen.
Epilog
Dieses oder jenes ließe sich noch verändern oder anpassen. Probieren Sie beispielsweise einmal, diese eben verwendete Funktion so anzupassen, dass das Ergebnis in der Einheit m² (statt cm²) ausgegeben wird; natürlich muss dann auch die Überschrift angepasst werden. 😉 Und dass Sie die Spalte mit der berechneten Fläche (egal in welcher Maßeinheit) als Argument für die Volumenberechnung mit exakt dieser PQ-UDF nutzen können, wird Ihnen bewusst sein. Die fertige Lösung können Sie übrigens hier von unserem Server herunterladen.
Ein Hinweis ist mir hier noch wichtig: Die vorgestellte Funktion ist prinzipiell unvollständig und nicht „kunstgerecht”. Im Normalfall ist mindestens eine Fehlerprüfung erforderlich, ob in beiden Argumenten auch ein numerischer Wert enthalten und auch nicht leer ist. Aber DAS war und ist ja nicht der zu vermittelnde Lernstoff dieser beiden Blog-Beiträge.
Hat Ihnen der Beitrag gefallen?
Erleichtert dieser Beitrag Ihre Arbeit?
Dann würde ich mich über einen Beitrag Ihrerseits z.B. 2,00 € freuen … (← Klick mich!)