Punkt Power BI bei einem REST-API, kein Datenbanktreiber
Power BI greift normalerweise über einen Treiber auf Ihrem Rechner und, für geplante Aktualisierungen, über ein lokales Gateway auf eine Datenbank zu. Ein Query-Streams-Endpunkt ist eine einfache HTTPS-URL, die von Power BI Desktop und dem Power BI-Dienst mit dem integrierten Webconnector gelesen wird. Das Portal generiert die Power Query M-Anweisung automatisch. Export → Power Query M (.pq)Einfügen, Schlüssel hinzufügen, fertig. Dieselbe Datei funktioniert auch in Excel.
Was am Ende dabei herauskommt
Eine Power BI-Tabelle, die über eine gespeicherte SQL-Abfrage via HTTPS gespeist wird und im Dienst ohne lokales Gateway aktualisiert werden kann, da der Endpunkt wie jede beliebige Web-API aussieht. Der Endpunkt selbst sieht in der Portalkonsole folgendermaßen aus:
| Schlüssel | Wert | Beschreibung |
|---|---|---|
Stadt Zeichenfolge Optional | Seattle | Aufrufbarer Filter aus der gespeicherten Abfrage |
X-API-Schlüssel | qsapi_AB•••••••••• | Ihr geheimer Token |
{
"Stadt": "Seattle"
}| Kopfzeile | Wert | Beschreibung |
|---|---|---|
X-API-Schlüssel | qsapi_AB•••••••••• | Ihr geheimes Token. Eines pro Anrufer, jederzeit widerrufbar. |
Inhaltstyp | application/json | Die Parameter werden als JSON-Body übertragen. |
Akzeptieren | application/json | JSON-Rückgabe; bei Anfrage nach Text/CSV erhalten Sie CSV. |
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"city": "Seattle"}'{
"Spalten": [ { "Name": "customer_id", "Typ": "ganze Zahl" }, { "Name": "Name", "Typ": "Zeichenkette" }, { "Name": "Stadt", "Typ": "Zeichenkette" } ],
"Zeilen": [
{ "customer_id": 1042, "Name": "Northwind Traders", "Stadt": "Seattle" },
{ "customer_id": 1057, "Name": "Alpine Outfitters", "Stadt": "Denver" },
{ "customer_id": 1063, "Name": "Harbour Foods", "Stadt": "Halifax" }
],
"Meta": { "Zeilenanzahl": 3, "agent_duration_ms": 41, "request_id": "req_7Hq2mKd9" }
}| Kopfzeile | Wert | Beschreibung |
|---|---|---|
Inhaltstyp | application/json; charset=utf-8 | Der Umschlag auf der Registerkarte "Body". |
Inhaltslänge | 412 | Zurückgegebene Bytes; das Größenabzeichen oben |
Treiber sind notwendig, da Power BI das jeweilige Datenbankprotokoll unabhängig vom Ausführungsort beherrschen muss. Daher benötigt die geplante Aktualisierung ein Gateway im Netzwerk. Mit einem Endpunkt führt der bereits in der Datenbank befindliche Agent die Abfrage aus, und api.querystreams.com beantwortet die Anfragen von Power BI über HTTPS. Power BI muss daher nichts installieren, und der Dienst muss keinen Tunnel aufbauen.
Was Sie benötigen
Ein Query Streams-Konto
Jeder Tarif beinhaltet die REST-API. Die kostenlose Version bietet einen Endpunkt, zwei Schlüssel und 250 Zeilen pro Aufruf – ausreichend für diese Anleitung. Jetzt anmelden unter mein.querystreams.de.
Der Agent befindet sich auf einem Computer, der auf Ihre eigene Datenbank zugreifen kann, wobei die Verbindung hinzugefügt wurde.
Häufig handelt es sich um den Datenbankserver selbst oder einen ständig eingeschalteten Computer im selben Netzwerk.
Eine gespeicherte Abfrage im Abfrage-Generator
Der Endpunkt umschließt genau eine gespeicherte Abfrage. Schreiben Sie die SELECT-Anweisung, führen Sie sie einmal aus und speichern Sie sie. Fügen Sie einen dynamischen Filter hinzu (einen dynamischen Filter). @variable in der WHERE-Klausel), wenn Aufrufer die Möglichkeit haben sollen, zu filtern.
Wer kann Endpunkte erstellen? Eigentümer, Administratoren und Ersteller. Wenn die API Dieser Eintrag fehlt in Ihrer oberen Leiste. Ein Administrator kann ihn für Ihren Benutzer aktivieren. Konto → BerechtigungenJeder, mit dem Sie einen Endpunkt teilen, benötigt lediglich ein Query Streams-Konto, unabhängig vom gewählten Tarif.
Zusätzlich benötigen Sie Power BI Desktop oder Excel 2016 oder höher. Falls Sie noch keinen Endpunkt haben, Datenbank-REST-API-Hub führt Sie in vier Schritten von einer gespeicherten Suchanfrage zu einer URL.
Power BI in vier Schritten verbinden
Exportieren Sie die Power Query M-Datei
In API Öffnen Sie Ihren Endpunkt, klicken Sie Export und wählen Power Query M (.pq)Die Datei ist vollständig
lassen … hereinAusdruck mit der Endpunkt-URL und den bereits vorhandenen aufrufbaren Parametern. Er sieht folgendermaßen aus:Exportieren · Power Query M (.pq)lassen Quelle = Json.Dokumentieren(Web.Inhalt( "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19", [Headers = [#"X-API-Schlüssel" = "qsapi_YOUR_KEY"], Abfrage = [Komprimierung = "keiner"]])), rows = Source[rows], table = Table.Aus Datensätzen(Zeilen) In Tisch
Der Export fragt immer nach
Komprimierung=keine, weil Power Query LZ4-Frames nicht dekodieren kann; Power BI erwartet JSON über gzip.Fügen Sie es in Power BI ein.
In Power BI Desktop auswählen Startseite → Daten transformieren → Neue Quelle → Leere Abfrage, öffnen Sie die Erweiterter EditorErsetzen Sie dessen Inhalt durch die Datei und klicken Sie auf FertigIn Excel lautet der Pfad: Daten → Daten abrufen → Aus anderen Quellen → Leere Abfragedann derselbe erweiterte Editor.
Fügen Sie Ihren Schlüssel hinzu
Ersetzen Sie den Platzhalter durch Ihren 49-stelligen Schlüssel, beginnend mit
qsapi_vom Endpunkt Teilen Registerkarte. Wenn Power BI nach der Verbindungsmethode fragt, wählen Sie aus Anonym: der Schlüssel reist in derX-API-SchlüsselDer Header wird bereits in der Abfrage festgelegt, daher sind keine Power BI-Anmeldeinformationen erforderlich.Laden und aktualisieren
Klicken Sie auf Schließen & Anwenden. Der
ZeilenDas Array wird zu Ihrer Tabelle mit einer Spalte pro Abfragespalte. Veröffentlichen Sie die Daten im Power BI-Dienst und legen Sie einen Aktualisierungszeitplan fest: Da die Quelle eine Web-URL ist, ist kein lokales Gateway erforderlich. Jede Aktualisierung entspricht einem Aufruf des Endpunkts. Aktivität Tab.
Das war’s. Power BI liest Live-Zeilen über HTTPS, die Datenbank bleibt hinter Ihrer Firewall, und der Berichtsbesitzer sieht niemals die SQL-Anweisung oder einen Datenbank-Login.
Die Anfrage, die Power BI stellt
Im Prinzip handelt es sich um denselben Aufruf, den Sie auch mit curl durchführen können. Parameter, die als „Callable“ markiert sind, können von Power Query übergeben werden als Query = [city = "Seattle"]:
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?city=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
{
"Spalten": [ { "Name": "customer_id", "Typ": "ganze Zahl" }, { "Name": "Name", "Typ": "Zeichenkette" }, { "Name": "Stadt", "Typ": "Zeichenkette" } ],
"Zeilen": [
{ "customer_id": 1042, "Name": "Northwind Traders", "Stadt": "Seattle" },
{ "customer_id": 1057, "Name": "Alpine Outfitters", "Stadt": "Denver" },
{ "customer_id": 1063, "Name": "Harbour Foods", "Stadt": "Halifax" }
],
"Meta": { "Zeilenanzahl": 3, "agent_duration_ms": 41, "request_id": "req_7Hq2mKd9" }
}Die Zeilen werden als Objekte zurückgegeben, die über den Spaltennamen indiziert sind, mit der Spaltenliste und einem Meta Ein Block, der die Anzahl der Zeilen, die Information, ob das Ergebnis gekürzt wurde, und die Anfrage-ID anzeigt, die Sie zur Unterstützung angeben können. Derselbe Aufruf wie ein POST-Request übermittelt die Parameter in einem JSON-Body, was die richtige Wahl für lange Wertelisten ist:
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"params": {"city": "Seattle"}}'?format=csv- CSV statt JSON, inklusive Kopfzeile.
Akzeptierte Formate: text/csvDasselbe gilt für Streaming-Endpunkte. Diese geben NDJSON (ein JSON-Objekt pro Zeile) mit einem abschließenden Wert zurück.{"_summary": true, "row_count": N}Zeile; überprüfen Sie die letzte Zeile. ?sample=true- Maximal fünf Reihen, nicht abgerechnet. Gut geeignet, um einen Kunden anzuschließen.
?compression=lz4- Ein Gehäuse des Typs LZ4 für Vieltelefonierer mit Decoder; Code Die Registerkarte enthält den Decoder-Codeausschnitt für jede Sprache. Die einfache Gzip-Komprimierung erfolgt automatisch, wenn Ihr Client sendet.
Accept-Encoding: gzip. Autorisierung: Bearer qsapi_…- Akzeptiert als Alias für
X-API-Schlüssel. Verwenden Sie es im Browsercode.
Über Power BI hinaus
Excel und Power BI
Export → Power Query M (.pq) Sie erhalten eine vorgefertigte Abfrage. Fügen Sie diese in den erweiterten Editor ein (Excel: Daten → Daten abrufen → Aus anderen Quellen → Leere Abfrage; Power BI: Start → Daten transformieren → Neue Quelle → Leere Abfrage) und ersetzen Sie den Platzhalter durch Ihre Abfrage. qsapi_ Schlüssel.
Postbote, Schlaflosigkeit, Hüpfekästchen
Das gleiche Export Das Menü lädt eine Postman v2.1-Sammlung, einen Insomnia v5-Export oder eine Hoppscotch-Sammlung mit ausgefüllten Parametern und einem Platzhalter für den Schlüssel herunter.
Ihr eigener Code
Der Code Der Tab enthält funktionierende Beispiele für cURL, Python, JavaScript, TypeScript, Java, C#, Go, PHP, PowerShell und Ruby. Export → OpenAPI 3.1-Spezifikation Wird von jedem Clientgenerator oder Swagger UI gespeist.
n8n, Zapier, Make, cron
Erstellen Sie einen Serviceschlüssel Fügen Sie für das Tool die URL und den Schlüssel in den entsprechenden HTTP-Knoten ein und planen Sie die Ausführung. Jedes Tool erhält einen eigenen Schlüssel, sodass Sie einen Schlüssel widerrufen können, ohne die anderen zu beeinträchtigen.
Was die Pläne erlauben
| Planen | Endpunkte | Schlüssel pro Endpunkt | Personen pro Endpunkt | Zeilen pro Aufruf (statisch) | Zeilen pro Aufruf (Streaming) | Anrufe pro Minute, pro Taste |
|---|---|---|---|---|---|---|
| Kostenlos | 1 | 2 | 1 | 250 | 250 | 3 |
| Persönlicher Kern | 2 | 3 | 2 | 5,000 | 250,000 | 15 |
| Personal Plus | 5 | 5 | 5 | 10,000 | 500,000 | 30 |
| Kerngeschäft | 5 | 10 | 10 | 50,000 | 1,000,000 | 300 |
| Business Plus | 10 | 20 | 25 | 100,000 | 5,000,000 | 600 |
| Business Max | 25 | 30 | 50 | 250,000 | 10,000,000 | 600 |
| Enterprise Core | 50 | 50 | 100 | 500,000 | 25,000,000 | 1,000 |
| Enterprise Plus | 100 | 100 | 250 | 1,000,000 | 50,000,000 | 1,000 |
| Enterprise Max | 250 | 200 | 500 | 2,500,000 | 100,000,000 | 1,500 |
Jeder Aufruf hat ein festes Abfrage-Timeout von 60 Sekunden und eine Antwortgröße von maximal 8 MiB. Die zurückgegebenen Bytes werden auf Ihr monatliches Datenvolumen angerechnet – dasselbe, das auch die Add-ons für Excel und Google Sheets nutzen. Die kostenlose Version bietet einen Endpunkt und 5 MB Datenvolumen pro Monat, was für eine kleine Tabelle, die mehrmals täglich aufgerufen wird, problemlos ausreicht. Siehe die Preisseite für die Zulagen nach Plan.
Kostenlos ist ein Plan, den man behält. Es handelt sich nicht um eine Testphase, die abläuft. Sehen Sie genau, was sie beinhaltet, auf der Preisseite.
Für einen Bericht beschränken Sie die Abfrage auf die Spalten, die die Visualisierungen benötigen, und überlassen Sie den Rest dem Aktualisierungszeitplan; Power BI liest bei jeder Aktualisierung das gesamte Ergebnis, daher ist die statische Zeilenbegrenzung Ihres Plans die Obergrenze für eine einzelne Tabelle.
Es sicher aufbewahren
Die SQL-Anweisungen bleiben Ihre.
Die Aufrufer erhalten Zeilen. Sie sehen weder die Abfrage noch die Tabellennamen oder die Verbindungsdetails und können nicht ändern, was der Endpunkt ausführt.
Ein Schlüssel, ein Endpunkt, ein Anrufer
Ein Schlüssel funktioniert genau für einen Endpunkt. Jede Person oder jedes Tool erhält einen eigenen Schlüssel, und jeder Anruf wird diesem zugeordnet. Wird ein Schlüssel widerrufen, funktionieren die anderen weiterhin; der Widerruf wird innerhalb von etwa fünf Minuten wirksam.
Schreibgeschützt, auf Ihrer Seite der Mauer
Der Agent führt die gespeicherte SELECT-Anweisung und nichts anderes aus Ihrem Netzwerk über seine eigene ausgehende Verbindung aus. Es muss kein Port geöffnet und keine Anmeldeinformationen im Internet benötigt werden.
Jeder Anruf im Hauptbuch
Der Aktivität Die Registerkarte zeigt jeden Anruf mit Uhrzeit, Empfänger, Status, Zeilen, Bytes und Dauer an, einschließlich abgelehnter Anrufe. Ablauf Lebensdauer einer temporären Freigabe und der Endpunkt schaltet sich am angegebenen Datum selbst ab.
Wenn etwas nicht funktioniert
| Status | Code | Was zu tun |
|---|---|---|
| 401 | API-Schlüssel erforderlich / API-Schlüssel ungültig | Der Header fehlt oder der Schlüssel ist falsch. Senden X-API-Schlüssel: qsapi_…Die gesamten 49 Zeichen. Die Schlüssel können über die Registerkarte „Freigabe“ des Endpunkts erneut kopiert werden. |
| 403 | API_KEY_ENDPOINT_MISMATCH | Ein gültiger Schlüssel, der an einem anderen Endpunkt verwendet wird. Jeder Schlüssel gehört zu genau einem Endpunkt. |
| 403 | API-Schlüssel widerrufen / API-Endpunkt abgelaufen | Der Schlüssel wurde widerrufen oder der Endpunkt ist abgelaufen. Generieren Sie einen neuen Schlüssel oder stellen Sie den Endpunkt wieder her. |
| 400 | API_PARAM_NOT_OVERRIDABLE | Sie haben einen Parameter gesendet, den der Eigentümer nicht als aufrufbar markiert hat. Im Nachrichtentext werden die zulässigen Namen aufgelistet. |
| 414 | API_QUERY_TOO_LARGE | Die GET-Abfragezeichenfolge enthielt 8 KB oder 200 Listenwerte. Senden Sie dieselben Parameter als JSON-Body in einer POST-Anfrage. |
| 413 | API_OUTPUT_TOO_LARGE | Das Ergebnis überschritt die 8-MiB-Grenze. Schränken Sie die Abfrage ein oder wechseln Sie zum Streaming-Endpunkt. |
| 429 | API_RATE_LIMITED | In dieser Minute gehen zu viele Anrufe wegen des Schlüssels oder des Endpunkts ein. Warten Sie auf den Wiederholen Sekunden oder erhöhen Ratenbegrenzung unter API-Einstellungen → Standardeinstellungen innerhalb Ihres Tarifs. |
| 429 | API_DATA_REALM_EXHAUSTED | Das monatliche Datenvolumen des Nutzers ist aufgebraucht. Es wird mit dem nächsten Abrechnungsmonat zurückgesetzt; für mehr Datenvolumen ist ein Upgrade erforderlich. |
| 503 | API-AGENT_NICHT_VERBUNDEN | Der Agent Ihrer Datenbank ist offline. Überprüfen Sie ihn unter Daten → Datenagenten; Anrufe sind wieder erfolgreich, sobald die Verbindung wiederhergestellt ist. |
| 504 | API-Abfrage-Timeout | Die Abfrage dauerte länger als 60 Sekunden. Fügen Sie einen Filter oder einen Index hinzu oder speichern Sie eine präzisere Abfrage. |
Jeder Fehlerkörper hat die Form {"error": {"code": "…", "message": "…"}} und jede Antwort beinhaltet eine X-QS-Anforderungs-ID Header. Geben Sie die ID in Anführungszeichen an, wenn Sie sich an den Support wenden.
Zwei Besonderheiten von Power Query: a DataSource.Error Benennung 401 bedeutet, dass der Schlüssel in der M-Datei falsch ist oder widerrufen wurde; Expression.Error: Das Feld 'rows' des Datensatzes wurde nicht gefunden. Das bedeutet, dass der Endpunkt einen Fehlerumschlag zurückgegeben hat. Rufen Sie daher die URL in der Portalkonsole auf, um diesen zu lesen.
Fragen, die Menschen stellen
Werden meine Daten in Query Streams kopiert?
Nein. Der Agent führt die Abfrage dort aus, wo Ihre Daten gespeichert sind, und sendet nur die angeforderten Zeilen. Es findet keine Synchronisierung oder Zwischenspeicherung statt; die Abfrage wird bei jedem Anruf neu ausgeführt.
Können Anrufer die SQL-Anweisung ändern oder andere Tabellen anfordern?
Nein. Ein Endpunkt führt eine gespeicherte Abfrage aus. Aufrufer können nur die von Ihnen markierten Parameter festlegen. Abrufbarund die Werte werden sicher gebunden: Text wird in Anführungszeichen gesetzt und maskiert, Zahlen werden auf ihren Bereich geprüft, Listen werden erweitert.
Wie übergebe ich das einem Partner?
Am Endpunkt Teilen Registerkarte auswählen Menschen und geben ihre E-Mail-Adresse ein. Sie erhalten einen magischen Link, melden sich mit dieser Adresse an (ein kostenloses Konto genügt) und generieren ihren eigenen Schlüssel; ihre Anrufe werden dann namentlich auf der Registerkarte „Aktivität“ angezeigt. Für einen Server oder ein Automatisierungstool erstellen Sie einen API-Schlüssel stattdessen mit einem Etikett.
Was passiert, wenn ich die gespeicherte Abfrage bearbeite?
Der Endpunkt führt beim nächsten Aufruf die neue SQL-Abfrage aus und seine OpenAPI-Spezifikation wird neu generiert. Die URL und die Schlüssel ändern sich nicht. Wenn Sie einen Filter hinzufügen oder entfernen, überprüfen Sie die Spezifikation erneut. Sperrparameter damit Anrufer die richtigen Parameter sehen.
Ist das im kostenlosen Tarif wirklich enthalten?
Ja. „Kostenlos“ ist ein dauerhafter Tarif, keine befristete Testphase. Er umfasst einen Endpunkt, zwei Schlüssel und 250 Zeilen pro Aufruf. Die genauen Leistungen finden Sie hier: Preisseite.
Funktioniert die geplante Aktualisierung im Power BI-Dienst tatsächlich ohne Gateway?
Ja. Der Dienst kann jede Aktualisierung durchführen. Web.Contents Eine Quelle, die über das öffentliche Internet mit anonymer oder eingebetteter Header-Authentifizierung erreichbar ist. api.querystreams.com ist eine solche Quelle; Ihre Datenbank wird von Power BI niemals kontaktiert.
Kann ich DirectQuery verwenden?
Nein. Webquellen in Power BI befinden sich im Importmodus. Verwenden Sie den Aktualisierungszeitplan oder halten Sie die Abfrage eng und aktualisieren Sie sie häufiger innerhalb des Ratenlimits Ihres Tarifs.
Können Tableau oder Looker Studio denselben Endpunkt verwenden?
Jedes Tool mit einem Web- oder REST-Konnektor kann das, und Export → OpenAPI 3.1-Spezifikation Beschreibt den Endpunkt für Konnektor-Generatoren. Auswählen ?format=csv für Tools, die CSV bevorzugen.
Verwandte Leitfäden
Setup trouble?
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?

