Native Queries in Power Query ausführen

This post is also available in: en

Aufrufe: 1821

Der Zugriff von Power Query auf sogenannte «native Queries» wird vielfach verweigert. In diesem Kurzbeitrag zeige ich auf, wie diese Limitation überwunden werden kann.

Wenn Du mehr über Power BI lesen willst, so abonniere unseren Newsletter.


†Die Problemstellung

Power BI unterbietet die Ausführung von nativen Queries aus Sicherheitsgründen, um die Datenintegrität auf der Quelldatenbank zu schützen. Trotzdem kann es durchaus sinnvoll sein, dass solche Queries ausgeführt werden können.

Beispiel

In diesem Beispiel versucht ein Benutzer eine Stored Procedure auszuführen. Die Stored Procedure startet ein SSIS-Paket und importiert Daten aus einer beliebigen Quelle in eine SQL Tabelle.

Da bereits im SQL Server eine entsprechende Stored Procedure für diesen Anwendungsfall besteht, ist nicht ersichtlich, warum die Ausführung derselben in Power Query respektive Power BI unterbunden werden soll. Wie mein geschätzter Arbeitskollege Pascal zu Recht konstatiert hat, ist die Sinnhaftigkeit der Ausführung von SSIS Pakete aus Power BI eine andere Frage….. (ausser die Datenbank läuft auf einem SQL Express Server, welcher bekanntlich nicht über die SQL Server Agent Jobs verfügt, aber lassen wir das mal aussen vor………).

Zurück zu unserem Beispiel. Als erstes verbinden wir uns in Power BI Desktop mit der SQL Datenbank, auf welcher das SSIS Paket jeweils ausgeführt wird und erfassen unter «SQL-Anweisung» den Ausführungsbefehl für die Stored Procedure:

SQL Query Stored Procedure
SQL Query Stored Procedure

Als Resultat bekommen wir wie erwartet eine Fehlermeldung zurück:

Fehlermeldung
Fehlermeldung

Power BI mag das nicht. Aber wir haben ja eine Lösung – sonst würde ich ja keinen Artikel dazu schreiben ….😉

Lösung

Das SQL Statement muss wie folgt ergänzt werden:

SELECT 1 as DONE

Durch diese zusätzliche Zeile «merkt» Power BI gar nicht, dass hier ein native Query ausgeführt wird, sondern wird als Resultat die Spalte «Done» mit dem Wert «1» zurückgeben.

angepasstes SQL Statement
angepasstes SQL Statement

Und…. BINGO!

Resultat
Resultat

Wir haben soeben erfolgreich Power Query überlistet und die Stored Procedure ausgeführt. Aber hat es auch wirklich geklappt?

Kontrolle im SQL Server Profiler

Im SQL Server können wir sehen, dass die entsprechende Stored Procedure respektive das SSIS Paket tatsächlich ausgeführt wurde. Öffnet dazu den SQL Server Profiler, lasst die Power Query Abfrage nochmals laufen und ihr solltet folgendes Ergebnis sehen:

Trace in SQL Profiler
Trace in SQL Profiler


Es ist ersichtlich, dass die Mashup Engine (aka Power Query) die Stored Procedure in der Datenbank PBI_Demos gestartet hat und danach in die SSISDB gewechselt ist, wo das entsprechende SSIS Paket ausgeführt wurde.

Schlussfolgerung und Hinweis

Wie gezeigt, können auch native Queries mit Power Query unter Anwendung des Workarounds verwendet werden. Aber es gibt wie gesagt durchaus Gründe, dass Microsoft die Ausführung nativer Queries unterbindet. Daher liegt es in der Verantwortung von Euch als Benutzers zu entscheiden, ob es sinnvoll und zulässig ist, den beschriebenen Workaround auch anzuwenden oder nicht. Bestraft nur nicht mich als den Überbringer der Nachricht.

Welche anderen Methoden kennt ihr, um native Queries in Power Query respektive Power BI auszuführen? Teilt euer Wissen mit uns und hinterlasst einen Kommentar.

Mehr über Power BI könnt ihr hier nachlesen.

Happy Querying!

Wenn Du mehr über Power BI lesen willst, so abonniere unseren Newsletter.


Ein Gedanke zu „Native Queries in Power Query ausführen

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

%d Bloggern gefällt das: