ExcelizedFree consultation
ALL INSIGHTS
Power BIPower QueryDatenwelt

Native Abfragen in Power BI: So schreiben Sie SQL direkt für Ihre Datenquelle

Einführung Die meisten Power BI-Nutzer verbinden sich mit einer Datenbank, wählen eine Tabelle aus und überlassen den Rest Power Query. Das funktioniert in der Regel gut – bis es eben nicht mehr funktioniert. Große Tabellen, komplexe Joins, langsame Aktualisierungen und bestehende SQL-Logik, die in Ihrer Datenbank bereits einwandfrei läuft, können Sie dazu bewegen, einen besseren Ansatz zu wählen: die native Abfrage. Mit einer nativen Abfrage können Sie SQL-Code direkt in Power BI schreiben...

Native Query in Power BI

Einführung

Die meisten Power BI-Nutzer verbinden sich mit einer Datenbank, wählen eine Tabelle aus und überlassen den Rest Power Query. Das funktioniert in der Regel gut – bis es eben nicht mehr funktioniert. Große Tabellen, komplexe Joins, langsame Aktualisierungen und bestehende SQL-Logik, die in Ihrer Datenbank bereits einwandfrei läuft, können Sie dazu bewegen, einen besseren Ansatz zu wählen: die native Abfrage.

Mit einer nativen Abfrage können Sie SQL-Code direkt in Power BI schreiben und an Ihre Datenquelle senden. Das Ergebnis: schnellere Datenladezeiten, übersichtlichere Abfragen und volle Kontrolle darüber, welche Daten abgerufen werden. Diese Anleitung führt Sie Schritt für Schritt durch die Vorgehensweise.


Warum es native Abfragen gibt – und wann man sie tatsächlich braucht

Wenn Sie Power BI mit einem SQL Server verbinden, generiert Power Query im Hintergrund M-Code. In vielen Fällen übersetzt es diesen M-Code auch wieder in SQL – mithilfe eines Mechanismus namens Query Folding. Dabei wird die eigentliche Arbeit in die Datenbank verlagert, wo sie hingehört.

Das Problem besteht darin, dass die Abfragefaltung nicht immer gewährleistet ist. Komplexe Transformationen, nicht unterstützte Funktionen oder ein einfacher Zusammenführungsschritt können die Faltung unbemerkt unterbrechen. In diesem Fall lädt Power BI die gesamte Tabelle in den Arbeitsspeicher und filtert sie lokal. Bei einer Tabelle mit 50 Millionen Zeilen führt dies zu erheblichen Leistungseinbußen.

Eine native Abfrage umgeht dieses Problem vollständig. Anstatt Power Query raten zu lassen, welche SQL-Anweisung ausgeführt werden soll, schreiben Sie die SQL-Anweisung selbst und übergeben sie direkt an die Datenbank-Engine.

Verwenden Sie eine native Abfrage, wenn:

  • Ihre Datenbank enthält bereits optimiertes SQL für einen bestimmten Bericht.

  • Sie benötigen komplexe Joins, Fensterfunktionen oder CTEs, die sich in der Power Query-Benutzeroberfläche nur umständlich erstellen lassen.

  • Sie möchten eine große Tabelle bereits in der Quelle filtern, bevor die Daten in Power BI geladen werden.

  • Sie müssen die datenbankspezifische Syntax verwenden (z. B. GETDATE(), DATEADD, QUALIFY in Snowflake).

  • Die Abfragefaltung funktioniert nicht ohne Grund, und Sie benötigen volle Transparenz darüber, was an die Datenbank gesendet wird.

Verwenden Sie den visuellen Power Query-Editor, wenn:

  • Ihr Datensatz ist klein oder mittelgroß.

  • Teammitglieder ohne SQL-Kenntnisse müssen die Abfragen pflegen.

  • Die Transformationslogik ist einfach – filtern, Spalten entfernen, umbenennen


Infografik zum Schreiben nativer SQL-Abfragen in Power BI. Enthält Schritte, Vorteile, Konnektoren, Sicherheitstipps und Beispiele. Blau-gelbes Design.
Native Query + SQL in Power BI

Konnektoren, die native Abfragen unterstützen

Nicht jeder Konnektor unterstützt native Datenbankabfragen. Zu denjenigen, die dies tun, gehören die gängigsten relationalen Datenbanken: SQL Server, Azure SQL Database, Azure Synapse Analytics, PostgreSQL, MySQL, Snowflake, Oracle, Google BigQuery, Amazon Redshift, IBM Db2, SAP HANA und Azure Analysis Services (MDX oder DAX).

Datenquellen wie Excel, CSV, einfache Textdateien und die meisten Streaming- oder Online-Konnektoren unterstützen keine nativen Abfragen. Wenn die Datenquelle keine benutzerdefinierten SQL-Abfragen zulässt, wird die entsprechende Option im Konnektordialog nicht angezeigt.


Schritt für Schritt: So verwenden Sie eine native Abfrage in Power BI Desktop

Schritt 1 – Power BI Desktop öffnen und eine neue Verbindung herstellen

Öffnen Sie Power BI Desktop. Klicken Sie im Menüband „Start“ auf „Daten abrufen“ und wählen Sie Ihren Datenbankkonnektor aus. In diesem Beispiel wird eine SQL Server-Datenbank verwendet, die Vorgehensweise ist jedoch für alle unterstützten Konnektoren identisch.

Schritt 2 – Server- und Datenbankdetails eingeben

Geben Sie im Verbindungsdialog Ihren Servernamen oder Ihre IP-Adresse (z. B. localhost oder myserver.database.windows.net) und Ihren Datenbanknamen ein. Klicken Sie noch nicht auf OK.

Schritt 3 – Erweiterte Optionen erweitern und SQL-Abfrage eingeben

Klicken Sie unterhalb der Felder „Server“ und „Datenbank“, um die erweiterten Optionen anzuzeigen. Dort finden Sie ein Feld mit der Bezeichnung „SQL-Anweisung“. Hier fügen Sie Ihre native Abfrage ein. Zum Beispiel:

SELECT
    o.OrderID,
    o.OrderDate,
    c.CustomerName,
    c.Country,
    SUM(oi.Quantity * oi.UnitPrice) AS TotalOrderValue
FROM Orders o
JOIN Customers c ON o.CustomerID = c.CustomerID
JOIN OrderItems oi ON o.OrderID = oi.OrderID
WHERE o.OrderDate >= '2023-01-01'
  AND c.Country = 'Germany'
GROUP BY
    o.OrderID, o.OrderDate, c.CustomerName, c.Country

Klicken Sie auf OK.

Schritt 4 – Umgang mit der Sicherheitsabfrage

Power BI zeigt eine Sicherheitswarnung an: Für die Ausführung dieser nativen Datenbankabfrage ist eine Berechtigung erforderlich. Dies ist zu erwarten. Power BI kann den Inhalt von unformatiertem SQL nicht überprüfen und benötigt daher vor der Ausführung eine explizite Genehmigung. Da Sie die Abfrage selbst erstellt haben und deren Funktion kennen, klicken Sie auf „Ausführen“.

Gut zu wissen: Diese Meldung erscheint, weil eine systemeigene Abfrage mit Ihren Anmeldeinformationen ausgeführt wird. Eine fehlerhaft geschriebene Abfrage könnte theoretisch Daten ändern oder löschen, wenn Ihr Datenbankbenutzer Schreibrechte besitzt. Überprüfen Sie systemeigene Abfragen daher immer sorgfältig, bevor Sie sie genehmigen – insbesondere Abfragen, die von anderen erstellt wurden.

Schritt 5 – Datenvorschau überprüfen und laden

Nach der Genehmigung führt Power BI die SQL-Abfrage in Ihrer Datenbank aus und zeigt eine Ergebnisvorschau an. Anschließend können Sie auf „Laden“ klicken, um die Daten direkt in Ihr Modell zu übernehmen, oder auf „Daten transformieren“, um den Power Query-Editor für weitere Bereinigungen zu öffnen.

Schritt 6 – Anwenden und Schließen

Wenn Sie den Power Query-Editor geöffnet haben, führen Sie alle weiteren Schritte aus und klicken Sie auf Start → Schließen und Anwenden, um die Daten in das Datenmodell zu laden.


Verwendung von Value.NativeQuery() in M-Code

Es gibt eine zweite Möglichkeit, native Abfragen in Power BI zu verwenden: die Funktion Value.NativeQuery() in der Power Query-Formelleiste. Dieser Ansatz bietet Ihnen mehr Kontrolle und – was besonders wichtig ist – er ermöglicht es, die Abfrageoptimierung für Schritte nach der nativen Abfrage aufrechtzuerhalten.

Diese Methode empfiehlt sich, wenn Sie eine native SQL-Abfrage als Grundlage für weitere Power Query-Transformationen benötigen oder wenn die Abfrageoptimierung nach dem SQL-Schritt fortgesetzt werden soll. Im Folgenden wird das Muster anhand von SQL Server und der AdventureWorks-Beispieldatenbank veranschaulicht:

let
    Source = Sql.Database("localhost", "AdventureWorks2019"),
    NativeQuery = Value.NativeQuery(
        Source,
        "SELECT DepartmentID, Name
         FROM HumanResources.Department
         WHERE GroupName = 'Research and Development'",
        null,
        [EnableFolding = true]
    )
in
    NativeQuery

Was die einzelnen Teile bewirken:

  • Sql.Database(...) stellt die Verbindung auf Datenbankebene her. Dies ist das richtige Ziel für native Abfragen.

  • Value.NativeQuery(Source, "...", null, [EnableFolding = true]) — sendet die SQL-Anweisung an die Datenquelle und aktiviert optional die Abfragefaltung für nachfolgende Schritte.

  • EnableFolding = true – weist Power BI an, weitere M-Transformationen in SQL zurückzuübertragen. Dies ist der entscheidende Unterschied zum einfachen Einfügen von SQL in das Feld „Erweiterte Optionen“.

Nach der Eingabe in die Bearbeitungsleiste zeigt Power BI eine Warnung an und fordert Sie auf, die native Abfrage für diesen Schritt zu aktivieren. Klicken Sie auf „Weiter“.

Profi-Tipp: Nachdem Sie `Value.NativeQuery()` hinzugefügt haben, wenden Sie einen Filter auf eine Ihrer Spalten an und klicken Sie mit der rechten Maustaste auf den neuen Schritt in den angewendeten Schritten. Wenn „Native Abfrage anzeigen“ weiterhin verfügbar und nicht ausgegraut ist, funktioniert die Abfrageoptimierung weiterhin – Ihr Filter wird an die Datenbank gesendet und nicht lokal verarbeitet.


Die von Power BI automatisch generierte native Abfrage anzeigen

Auch wenn Sie selbst kein SQL schreiben, können Sie die Abfrage überprüfen, die Power BI an Ihre Datenquelle sendet. Dies ist äußerst hilfreich, um langsame Abfragen zu debuggen oder zu bestätigen, dass Abfragefaltung stattfindet.

So zeigen Sie die automatisch generierte native Abfrage an:

  1. Öffnen Sie den Power Query-Editor.

  2. Wenden Sie einige Transformationsschritte an (Filtern, Spalten entfernen, Sortieren).

  3. Klicken Sie im Bereich „Angewendete Schritte“ mit der rechten Maustaste auf einen Schritt.

  4. Wenn die Abfragefaltung aktiviert ist, steht die Option „Native Abfrage anzeigen“ zur Verfügung.

  5. Klicken Sie darauf, um die genaue SQL-Anweisung anzuzeigen, die Power BI an die Datenbank sendet.

Wenn diese Option in einem Schritt ausgegraut ist, ist die Abfragefaltung an diesem oder einem früheren Punkt abgebrochen. Alle weiteren Schritte werden lokal von der Power Query-Engine verarbeitet – nicht von der Datenbank.

Häufiger Fehler: Das Hinzufügen einer benutzerdefinierten Spalte, das Zusammenführen mit einer anderen Datenquelle oder ein List.Generate-Schritt führt in der Regel zu einem Fehler in der Abfrageoptimierung. Ist dieser Fehler erst einmal aufgetreten, werden alle nachfolgenden Schritte lokal im Speicher ausgeführt – selbst einfache Filter, die in SQL trivial schnell wären.


Praktisches Beispiel: Ersetzen einer langsamen Abfrage über mehrere Tabellen

Stellen Sie sich vor, Sie haben drei Tabellen in SQL Server: Bestellungen, Kunden und Bestellpositionen. Sie haben diese drei Tabellen zuvor separat in Power BI geladen und über Beziehungen verknüpft. Die Aktualisierung ist langsam, da alle Zeilen aus allen drei Tabellen importiert werden.

Durch das Schreiben einer nativen Abfrage, die die Daten bereits an der Quelle vorverknüpft und aggregiert, lässt sich der importierte Datensatz drastisch reduzieren:

SELECT
    YEAR(o.OrderDate)   AS OrderYear,
    MONTH(o.OrderDate)  AS OrderMonth,
    c.Country,
    c.Segment,
    SUM(oi.Quantity * oi.UnitPrice) AS Revenue,
    COUNT(DISTINCT o.OrderID)       AS OrderCount
FROM Orders o
JOIN Customers c  ON o.CustomerID  = c.CustomerID
JOIN OrderItems oi ON o.OrderID   = oi.OrderID
WHERE o.OrderDate >= '2022-01-01'
GROUP BY
    YEAR(o.OrderDate), MONTH(o.OrderDate), c.Country, c.Segment

Statt drei Rohdatentabellen mit insgesamt Millionen von Zeilen zu importieren, liefert diese Funktion eine voraggregierte Zusammenfassung – genau das, was das Dashboard benötigt. Die Aktualisierungszeit verkürzt sich, die Modellgröße reduziert sich und DAX wird schneller ausgeführt.


Verwaltung der Sicherheitseinstellungen für native Abfragen

Power BI zeigt standardmäßig eine Sicherheitsabfrage für native Abfragen an, die nicht über die Standard-Connectordialoge stammen. Sie können dieses Verhalten steuern.

Um die Eingabeaufforderung global zu deaktivieren (nur für vertrauenswürdige Umgebungen):

  1. Gehen Sie zu Datei → Optionen und Einstellungen → Optionen

  2. Unter Global → Sicherheit

  3. Deaktivieren Sie die Option „Benutzergenehmigung für neue native Datenbankabfragen erforderlich“.

Um zuvor genehmigte Anfragen zu widerrufen:

  1. Gehen Sie zu Datei → Optionen und Einstellungen → Datenquelleneinstellungen

  2. Wählen Sie „Globale Berechtigungen“ und anschließend die Datenquelle aus.

  3. Klicken Sie auf „Berechtigungen bearbeiten“ → „Genehmigungen widerrufen“

Häufiger Fehler: Wenn die Sicherheitsabfrage in einer gemeinsam genutzten Umgebung deaktiviert ist, kann jede native Abfrage ohne Überprüfung ausgeführt werden. Lassen Sie die Abfrage in den Teameinstellungen aktiviert – so genügt ein Klick, um eine bereits geprüfte Abfrage zu genehmigen.


Bonus-Tipps und häufige Fehler

Verwenden Sie keine DDL-Befehle in nativen Abfragen. Operationen wie CREATE TABLE, DROP TABLE oder ALTER TABLE werden nicht unterstützt und führen zu Fehlern. Native Abfragen in Power BI sind ausschließlich für den Lesezugriff auf Daten vorgesehen.

Fest codierte Datumswerte erschweren die Wartung. Wenn Sie WHERE OrderDate >= '2023-01-01' direkt in Ihre SQL-Abfrage schreiben, müssen Sie diese bei jeder Datumsänderung anpassen. Verwenden Sie stattdessen Power Query-Parameter: Definieren Sie einen Parameter in Power BI Desktop und referenzieren Sie ihn anschließend in Ihrem M-Code mit Value.NativeQuery().

Testen Sie Ihre SQL-Abfrage zunächst in der Datenbank. Bevor Sie die SQL-Abfrage in Power BI einfügen, führen Sie sie im SQL Server Management Studio oder Azure Data Studio aus. Stellen Sie sicher, dass die korrekten Daten zurückgegeben werden und die Ausführung in akzeptabler Zeit erfolgt.

Native Abfragen und DirectQuery: Wenn Ihr Modell den DirectQuery-Modus verwendet, dient eine manuell erstellte native Abfrage als Basis-Unterabfrage. Zusätzliche Filter von Datenschnitten und Visualisierungen werden darum herum angeordnet. Dies funktioniert zwar, kann aber die Abfrageoptimierung und die Performance beeinträchtigen. Testen Sie dies gründlich, bevor Sie das Modell bereitstellen.


Schlussbetrachtung

Native Abfragen gehören zu den praktischsten Werkzeugen im Werkzeugkasten eines Power BI-Entwicklers – und gleichzeitig zu den am meisten unterschätzten. Ob Sie SQL-Code im Feld „Erweiterte Optionen“ beim Verbindungsaufbau eingeben oder `Value.NativeQuery()` in der Bearbeitungsleiste mit `EnableFolding = true` verwenden, das Prinzip ist dasselbe: Geben Sie der Datenbank-Engine die exakten Anweisungen, die sie benötigt, und überlassen Sie ihr die eigentliche Arbeit.

Das Ergebnis sind schnellere Aktualisierungen, kleinere Modelle und eine sauberere Logik – insbesondere bei großen oder komplexen Datenquellen.

Wenn Ihnen dieser Leitfaden hilfreich war, schauen Sie sich die unten stehenden verwandten Beiträge an oder laden Sie sich eine kostenlose Power Query-Kurzanleitung herunter, indem Sie den Excelized-Newsletter abonnieren.

👉 Möchten Sie das selbst live umsetzen? Buchen Sie einen 1:1 Power BI Crashkurs und lernen Sie es praxisnah mit mir.

KEEP EXPLORING
View all insights