Voir les catégories

API REST Power BI : Connexion aux données SQL en direct sans pilotes ODBC

Power BI · API REST au lieu d'un pilote

Indiquer Power BI à un API REST, pas un pilote de base de données

Power BI accède généralement à une base de données via un pilote installé sur votre machine et, pour l'actualisation planifiée, via une passerelle locale. Un point de terminaison Query Streams est une simple URL HTTPS ; Power BI Desktop et le service Power BI la lisent donc grâce au connecteur Web intégré. Le portail génère la requête Power Query M pour vous. Exporter → Power Query M (.pq)Collez, ajoutez votre clé, et voilà ! Le même fichier fonctionne également dans Excel.

Environ 5 minutes Pas de pilote, pas de passerelle Les données restent sur votre réseau Excel aussi
Vous êtes bloqué à un moment donné ? N'hésitez pas à nous demander. Ouvrir Soutien Dans la section « Flux de requêtes » (menu en haut à droite → Assistance), envoyez-nous un message. De vraies personnes le liront, et « Je ne comprends pas ce que cet écran demande » est une question tout à fait légitime.

Ce que vous obtiendrez

Une table Power BI alimentée par une requête SQL enregistrée via HTTPS, actualisable dans le service sans passerelle locale, car le point de terminaison ressemble à n'importe quelle API web. Voici à quoi ressemble ce point de terminaison dans la console du portail :

POSTEapi.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19
CléValeurDescription
ville chaîne FacultatifSeattleFiltre appelable à partir de la requête enregistrée
Clé X-APIqsapi_AB••••••••••Votre jeton secret
{
  "ville": "Seattle"
}
En-têteValeurDescription
Clé X-APIqsapi_AB••••••••••Votre jeton secret. Un par appelant, révocable à tout moment.
Type de contenuapplication/jsonLes paramètres sont transmis sous forme de corps JSON
Accepterapplication/jsonRéponse au format JSON ; demandez un format texte/CSV et vous recevrez un fichier 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"}'
Statut 200 OKTemps 84 msTaille 412 BTronqué Non
{
  « colonnes »: [ { "nom": "customer_id", "taper": "entier" }, { "nom": "nom", "taper": "chaîne" }, { "nom": "ville", "taper": "chaîne" } ],
  "rangées": [
    { "customer_id": 1042, "nom": « Les Marchands du Vent du Nord », "ville": "Seattle" },
    { "customer_id": 1057, "nom": « Pourvoyeurs alpins », "ville": "Denver" },
    { "customer_id": 1063, "nom": "Harbour Foods", "ville": "Halifax" }
  ],
  "méta": { "row_count": 3, "agent_duration_ms": 41, "request_id": "req_7Hq2mKd9" }
}
En-têteValeurDescription
type de contenuapplication/json; charset=utf-8L'enveloppe sur l'onglet Corps
longueur du contenu412Octets renvoyés ; l’icône Taille ci-dessus
Lecture seule : une seule requête enregistrée, rien d’autre SQL ne quitte jamais votre compte Chaque appel sur l'onglet Activité

L'existence de pilotes est nécessaire car Power BI doit communiquer avec le protocole réseau de chaque base de données, quel que soit son emplacement d'exécution. C'est pourquoi l'actualisation planifiée requiert une passerelle au sein de votre réseau. Avec un point de terminaison, l'agent déjà installé auprès de la base de données exécute la requête et api.querystreams.com répond à Power BI via HTTPS. Ainsi, Power BI n'a rien à installer et le service n'a aucun tunnel à établir.

OÙ SE TROUVE LA BASE DE DONNÉESvotre réseau de bureau ou votre salle des serveursVotre propre base de donnéesreste sur votre réseauAgent de flux de requêtesexécute la requête enregistréeapi.querystreamsvérifie la cléHTTPS · lignes uniquement, jamais le SQLCelui qui détient la clévotre application, un tableau de bord, un partenaire, un scriptRequête GET ou POST avec clé X-APIRetour JSON, CSV ou NDJSON
L'agent interagit avec vos données et exécute la requête. api.querystreams.com vérifie la clé et la limite de débit, puis transmet les lignes. L'appelant n'accède jamais à votre réseau.

Ce dont vous aurez besoin

Un compte Query Streams

Chaque forfait inclut l'API REST. Le forfait gratuit vous offre un point de terminaison, deux clés et 250 lignes par requête, ce qui est suffisant pour créer ce guide. Inscrivez-vous sur mon.querystreams.com.

L'agent installé sur un ordinateur capable d'accéder à votre propre base de données, la connexion étant ajoutée.

Souvent, il s'agit du serveur de base de données lui-même ou d'un ordinateur toujours allumé sur le même réseau.

Une requête enregistrée dans le générateur de requêtes

Le point de terminaison encapsule exactement une requête enregistrée. Rédigez la requête SELECT, exécutez-la une fois, puis enregistrez-la. Ajoutez un filtre dynamique (un @variable dans la clause WHERE) si les appelants doivent pouvoir filtrer.

Qui peut créer des points de terminaison ? Propriétaires, administrateurs et créateurs. Si le API L'élément est manquant dans votre barre supérieure ; un administrateur peut l'activer pour votre utilisateur dans les paramètres. Compte → AutorisationsToute personne avec laquelle vous partagez un point de terminaison a simplement besoin d'un compte Query Streams, quel que soit son forfait.

De plus, Power BI Desktop ou Excel 2016 ou version ultérieure. Si vous ne disposez pas encore d'un point de terminaison, le Hub d'API REST de base de données permet de passer d'une requête enregistrée à une URL en quatre étapes.

Connectez Power BI en quatre étapes

  1. Exporter le fichier M de Power Query

    Dans API ouvrez votre point de terminaison, cliquez Exporter et choisissez Power Query M (.pq)Le fichier est complet. laissez entrer… L'expression contient déjà l'URL du point de terminaison et vos paramètres d'appel. Elle ressemble à ceci :

    Exporter · Power Query M (.pq)
    laisser
      Source = Json.Document(Web.Contenu(
        "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19", [En-têtes = [#« Clé X-API » = "qsapi_VOTRE_CLÉ"], Requête = [compression = "aucun"]])), lignes = Source[lignes], table = Table.FromRecords(lignes)
    dans
      tableau

    L'exportation demande toujours compression=aucune, car Power Query ne peut pas décoder les trames LZ4 ; Power BI attend du JSON compressé (gzip).

  2. Collez-le dans Power BI

    Dans Power BI Desktop, choisissez Accueil → Transformer les données → Nouvelle source → Requête vide, ouvrez le Éditeur avancé, remplacez son contenu par le fichier et cliquez TerminéDans Excel, le chemin est Données → Obtenir des données → À partir d'autres sources → Requête vide, puis le même éditeur avancé.

  3. Ajoutez votre clé

    Remplacez l'espace réservé par votre clé de 49 caractères commençant par qsapi_ à partir du point de terminaison Partage onglet. Lorsque Power BI vous demande comment vous connecter, choisissez Anonyme: la clé voyage dans le Clé X-API L'en-tête est déjà défini par la requête, aucune information d'identification Power BI n'est donc nécessaire.

  4. Charger et actualiser

    Cliquez sur Fermer et postuler. Le rangées Le tableau devient votre table avec une colonne par colonne de requête. Publiez-le sur le service Power BI et définissez une planification d'actualisation : comme la source est une URL web, aucune passerelle locale n'est requise. Chaque actualisation correspond à un appel à l'URL du point de terminaison. Activité languette.

C'est ça. Power BI lit les lignes en direct via HTTPS, la base de données reste derrière votre pare-feu et le propriétaire du rapport ne voit jamais le code SQL ni les identifiants de connexion à la base de données.

La requête Power BI

En interne, il s'agit du même appel que celui que vous pouvez effectuer avec curl. Les paramètres marqués comme pouvant être appelés peuvent être transmis depuis Power Query. Requête = [ville = "Seattle"]:

Paramètres GET dans la chaîne de requête
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?city=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
Réponse · 200 OK · application/json
{
  « colonnes »: [ { "nom": "customer_id", "taper": "entier" }, { "nom": "nom", "taper": "chaîne" }, { "nom": "ville", "taper": "chaîne" } ],
  "rangées": [
    { "customer_id": 1042, "nom": « Les Marchands du Vent du Nord », "ville": "Seattle" },
    { "customer_id": 1057, "nom": « Pourvoyeurs alpins », "ville": "Denver" },
    { "customer_id": 1063, "nom": "Harbour Foods", "ville": "Halifax" }
  ],
  "méta": { "row_count": 3, "agent_duration_ms": 41, "request_id": "req_7Hq2mKd9" }
}

Les lignes sont renvoyées sous forme d'objets indexés par nom de colonne, avec la liste des colonnes et un méta Ce bloc indique le nombre de lignes, si le résultat a été tronqué et l'identifiant de la requête que vous pouvez citer pour obtenir de l'aide. Un appel POST place les paramètres dans un corps JSON, ce qui est idéal pour les longues listes de valeurs.

POST · paramètres dans un corps JSON
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 au lieu de JSON, ligne d'en-tête incluse. Accepter : texte/csv Il en va de même. Les points de terminaison de flux renvoient du NDJSON (un objet JSON par ligne) avec un résultat final {"_summary": true, "row_count": N} ligne ; vérifiez cette dernière ligne.
?sample=true
Cinq rangées maximum, non facturées. Idéal pour le câblage d'un client.
?compression=lz4
Un châssis LZ4 pour les appelants à volume élevé avec décodeur ; Code L'onglet contient l'extrait de code du décodeur pour chaque langue. La compression gzip simple s'effectue automatiquement lorsque votre client envoie des données. Accept-Encoding: gzip.
Autorisation : Porteur qsapi_…
Accepté comme alias pour Clé X-APIUtilisez-le depuis le code du navigateur.

Au-delà de Power BI

Excel et Power BI

Exporter → Power Query M (.pq) vous fournit une requête prête à l'emploi. Collez-la dans l'éditeur avancé (Excel : Données → Importer des données → À partir d'autres sources → Requête vide ; Power BI : Accueil → Transformer les données → Nouvelle source → Requête vide) et remplacez l'espace réservé par votre requête. qsapi_ clé.

Facteur, Insomnie, Marelle

Le même Exporter Le menu permet de télécharger une collection Postman v2.1, une exportation Insomnia v5 ou une collection Hoppscotch avec les paramètres renseignés et un espace réservé pour la clé.

Votre propre code

Le Code Cet onglet contient des exemples fonctionnels pour cURL, Python, JavaScript, TypeScript, Java, C#, Go, PHP, PowerShell et Ruby. Exporter → Spécification OpenAPI 3.1 Compatible avec tous les générateurs de clients ou interfaces utilisateur Swagger.

n8n, Zapier, Make, cron

Créer un Clé de service Pour l'outil, collez l'URL et la clé dans son nœud HTTP, puis planifiez son exécution. Chaque outil possède sa propre clé ; vous pouvez donc en révoquer un sans toucher aux autres.

Ce que les plans permettent

PlanPoints d'extrémitéClés par point de terminaisonPersonnes par point de terminaisonLignes par appel (statique)Lignes par appel (streaming)Appels par minute, par touche
Gratuit1212502503
Noyau personnel2325,000250,00015
Personnel Plus55510,000500,00030
Cœur de métier5101050,0001,000,000300
Business Plus102025100,0005,000,000600
Business Max253050250,00010,000,000600
Noyau d'entreprise5050100500,00025,000,0001,000
Entreprise Plus1001002501,000,00050,000,0001,000
Enterprise Max2502005002,500,000100,000,0001,500

Chaque requête est soumise à un délai d'attente fixe de 60 secondes et à une limite de réponse de 8 Mio. Les octets renvoyés sont décomptés de votre forfait de données mensuel, le même que celui utilisé par les modules complémentaires Excel et Google Sheets. La version gratuite inclut un point de terminaison et 5 Mo par mois, ce qui suffit amplement pour une petite table consultée plusieurs fois par jour. Consultez la page des prix pour les indemnités prévues par le régime.

La gratuité est un plan que vous conservez. Il ne s'agit pas d'une période d'essai limitée dans le temps. Consultez la description détaillée sur le site web. page de tarification.

Pour un rapport, limitez la requête aux colonnes nécessaires aux visualisations et laissez la planification d'actualisation faire le reste ; Power BI lit l'intégralité du résultat à chaque actualisation, donc la limite de lignes statique de votre plan correspond au plafond pour une seule table.

Le garder en sécurité

Le SQL reste à vous.

Les appelants reçoivent des lignes. Ils ne voient jamais la requête, les noms des tables ni les détails de connexion, et ils ne peuvent pas modifier ce que le point de terminaison exécute.

Une seule clé, un seul point de terminaison, un seul appelant

Chaque clé est associée à un seul terminal. Attribuez-en une à chaque personne ou outil : chaque appel y sera enregistré. Révoquez-en une, les autres resteront fonctionnelles ; la révocation prend effet en cinq minutes environ.

Lecture seule, de votre côté du mur

L'agent exécute la seule commande SELECT enregistrée, et rien d'autre, depuis votre réseau, via sa propre connexion sortante. Aucun port n'est à ouvrir et aucune authentification n'est requise sur Internet.

Chaque appel dans le registre

Le Activité L'onglet affiche chaque appel avec l'heure, le destinataire, le statut, le nombre de lignes, la taille en octets et la durée, y compris les appels refusés. Définissez un Expiration Durée de vie d'un partage temporaire et le point de terminaison s'éteint automatiquement à la date indiquée.

Quand quelque chose ne fonctionne pas

StatutCodeCe qu'il faut faire
401CLÉ_API_REQUISE / CLÉ_API_INVALIDEL'en-tête est manquant ou la clé est incorrecte. Envoyer Clé X-API : qsapi_…, les 49 caractères au total. Les clés peuvent être copiées à nouveau depuis l'onglet Partage du point de terminaison.
403API_KEY_ENDPOINT_MISMATCHUne clé valide utilisée sur un autre point de terminaison. Chaque clé est associée à un seul point de terminaison.
403CLÉ_API_RÉVOQUÉE / POINT_DE_TERMINATURE_API_EXPIRÉLa clé a été révoquée ou le point de terminaison a expiré. Générez une nouvelle clé ou restaurez le point de terminaison.
400PARAMÈTRE_API_NON_REMPLACEABLEVous avez envoyé un paramètre que son propriétaire n'a pas marqué comme appelable. Le corps de la requête liste les noms autorisés.
414API_QUERY_TOO_LARGELa chaîne de requête GET a transmis 8 Ko ou 200 valeurs de liste. Envoyez les mêmes paramètres sous forme de corps JSON pour une requête POST.
413API_OUTPUT_TOO_LARGELe résultat a dépassé la limite de 8 Mio. Affinez la requête ou basculez le point de terminaison en mode Streaming.
429API_RATE_LIMITÉETrop d'appels en ce moment pour la clé ou le point de terminaison. Attendez le Réessayer après secondes, ou augmenter Limite de débit sous Paramètres API → Valeurs par défaut dans votre forfait.
429API_DATA_REALM_EXHAUSTEDLe forfait de données mensuel du propriétaire est épuisé. Il est réinitialisé au début du mois de facturation ; pour en bénéficier, passez à un forfait supérieur.
503API_AGENT_NOT_CONNECTEDL'agent qui gère votre base de données est hors ligne. Vérifiez-le dans Données → Agents de données ; les appels fonctionneront à nouveau dès qu'il sera reconnecté.
504DÉLAI D'EXPÉDITION DE REQUÊTE APILa requête a pris plus de 60 secondes. Ajoutez un filtre ou un index, ou enregistrez une requête plus précise.

Chaque corps d'erreur a la forme {"erreur": {"code": "…", "message": "…"}} et chaque réponse comporte un Identifiant de requête X-QS En-tête. Veuillez indiquer l'identifiant lorsque vous écrivez au support.

Deux spécificités de Power Query : a DataSource.Erreur appellation 401 signifie que la clé dans le fichier M est incorrecte ou a été révoquée ; Expression.Error : Le champ « rows » de l’enregistrement est introuvable. Cela signifie que le point de terminaison a renvoyé une enveloppe d'erreur ; exécutez donc l'URL dans la console du portail pour la lire.

Questions que se posent les gens

Mes données sont-elles copiées dans Query Streams ?

Non. L'agent exécute la requête à l'endroit où se trouvent vos données et n'envoie que les lignes demandées. Aucune synchronisation ni mise en cache n'est effectuée entre les deux ; chaque appel exécute la requête.

Les appelants peuvent-ils modifier la requête SQL ou demander d'autres tables ?

Non. Un point de terminaison exécute une seule requête enregistrée. Les appelants peuvent uniquement définir les paramètres que vous avez marqués. Appelableet les valeurs sont liées en toute sécurité : le texte est mis entre guillemets et échappé, les nombres sont vérifiés dans les plages, les listes sont développées.

Comment puis-je transmettre cela à un partenaire ?

Sur le point de terminaison Partage onglet choisir Personnes et saisissez leur adresse e-mail. Ils reçoivent un lien magique, se connectent avec cette adresse (un compte gratuit suffit) et génèrent leur propre clé ; vous voyez leurs appels par nom dans l’onglet Activité. Pour un serveur ou un outil d’automatisation, créez un Clé API avec une étiquette à la place.

Que se passe-t-il lorsque je modifie la requête enregistrée ?

Le point de terminaison exécute la nouvelle requête SQL lors du prochain appel et sa spécification OpenAPI est régénérée. L'URL et les clés restent inchangées. Si vous ajoutez ou supprimez un filtre, veuillez consulter à nouveau le point de terminaison. Paramètres de verrouillage pour que les appelants voient les paramètres corrects.

Le forfait gratuit couvre-t-il vraiment cela ?

Oui. L'offre gratuite est un forfait permanent, et non une période d'essai limitée dans le temps. Elle comprend un point de terminaison, deux clés et 250 lignes par appel. Consultez la liste complète des éléments inclus sur la page suivante : page de tarification.

La fonctionnalité d'actualisation planifiée dans le service Power BI fonctionne-t-elle réellement sans passerelle ?

Oui. Le service peut actualiser n'importe quel Contenu Web La source accessible sur Internet via une authentification anonyme ou par en-tête intégré est une telle source ; Power BI n’accède jamais à votre base de données.

Puis-je utiliser DirectQuery ?

Non. Les sources Web dans Power BI fonctionnent en mode Importation. Utilisez la planification d'actualisation ou réduisez la taille de la requête et actualisez-la plus fréquemment dans les limites de votre forfait.

Tableau et Looker Studio peuvent-ils utiliser le même point de terminaison ?

Tout outil doté d'un connecteur web ou REST peut le faire, et Exporter → Spécification OpenAPI 3.1 décrit le point de terminaison pour les créateurs de connecteurs. Choisissez ?format=csv pour les outils qui préfèrent le format CSV.

Toujours bloqué ? Ouvrir Soutien Dans Query Streams, indiquez-nous l'étape à laquelle vous vous trouvez et ce que vous voyez. Nous vous mettrons en relation.

Setup trouble?

  • Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?
Updated on 27 septembre 2026

Powered by BetterDocs