Ver categorías

API REST de Power BI: Conecta datos SQL en tiempo real sin controladores ODBC

Power BI · API REST en lugar de un controlador

Punto Power BI en un API RESTno es un controlador de base de datos

Power BI normalmente accede a una base de datos a través de un controlador en su equipo y, para la actualización programada, mediante una puerta de enlace local. Un punto de conexión de Query Streams es una URL HTTPS simple, por lo que Power BI Desktop y el servicio Power BI la leen con el conector web integrado. El portal genera la consulta Power Query M automáticamente. Exportar → Power Query M (.pq)Pega, añade tu clave, listo. El mismo archivo funciona en Excel.

Aproximadamente 5 minutos Sin controlador, sin puerta de enlace Los datos permanecen en tu red. Excel también
¿Tienes algún problema? Pregúntanos. Abrir Ayuda En Consultas de flujos (menú superior derecho → Soporte) y envíanos un mensaje. Personas reales lo leen, y «No sé qué me pide esta pantalla» es una pregunta perfectamente válida.

Lo que obtendrás al final

Una tabla de Power BI alimentada por una consulta SQL guardada a través de HTTPS, actualizable en el servicio sin una puerta de enlace local, ya que el punto final se comporta como cualquier API web. El punto final en sí se ve así en la consola del portal:

CORREOapi.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19
LlaveValorDescripción
ciudad cadena OpcionalSeattleFiltro invocable desde la consulta guardada
Clave X-APIqsapi_AB••••••••••Tu ficha secreta
{
  "ciudad": "Seattle"
}
EncabezamientoValorDescripción
Clave X-APIqsapi_AB••••••••••Tu token secreto. Uno por persona que llama, revocable en cualquier momento.
Tipo de contenidoaplicación/jsonLos parámetros se transmiten como un cuerpo JSON.
Aceptaraplicación/jsonDevuelve JSON; si pides texto/CSV, obtienes 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"}'
Estado 200 OKTiempo 84 msTamaño 412 BTruncado No
{
  "columnas": [ { "nombre": "id_cliente", "tipo": "entero" }, { "nombre": "nombre", "tipo": "cadena" }, { "nombre": "ciudad", "tipo": "cadena" } ],
  "filas": [
    { "id_cliente": 1042, "nombre": "Comerciantes del Viento del Norte", "ciudad": "Seattle" },
    { "id_cliente": 1057, "nombre": "Alpine Outfitters", "ciudad": "Denver" },
    { "id_cliente": 1063, "nombre": "Comida del puerto", "ciudad": "Halifax" }
  ],
  "meta": { "row_count": 3, "agent_duration_ms": 41, "id_solicitud": "req_7Hq2mKd9" }
}
EncabezamientoValorDescripción
tipo de contenidoaplicación/json; charset=utf-8El sobre en la pestaña Cuerpo
longitud del contenido412Bytes devueltos; la insignia de tamaño arriba
Solo lectura: una consulta guardada, nada más. SQL nunca abandona tu cuenta. Cada llamada en la pestaña Actividad

La razón de la existencia de los controladores es que Power BI necesita comunicarse mediante el protocolo de red de cada base de datos, independientemente de dónde se ejecute. Por ello, la actualización programada requiere una puerta de enlace dentro de la red. Con un punto final, el agente que ya se encuentra en la base de datos ejecuta la consulta y api.querystreams.com responde a Power BI a través de HTTPS, por lo que Power BI no necesita instalar nada ni el servicio necesita conectarse mediante un túnel.

DÓNDE SE ALMACENA LA BASE DE DATOSsu red de oficina o sala de servidoresTu propia base de datospermanece en tu redAgente de flujos de consultasejecuta la consulta guardadaapi.querystreamscomprueba la llaveHTTPS · solo filas, nunca SQLQUIEN TENGA LA LLAVEtu aplicación, un panel de control, un socio, un scriptGET o POST con X-API-KeyJSON, CSV o NDJSON de vuelta
El agente trabaja con tus datos y ejecuta la consulta. api.querystreams.com verifica la clave y el límite de velocidad y transmite las filas. El remitente nunca llega a tu red.

Lo que necesitarás

Una cuenta de Query Streams

Todos los planes incluyen la API REST. El plan gratuito ofrece un endpoint, dos claves y 250 filas por llamada, suficiente para crear esta guía. Regístrese en mi.querystreams.com.

El agente en un ordenador que puede acceder a su propia base de datos, con la conexión añadida

A menudo, se trata del propio servidor de la base de datos o de un ordenador que permanece siempre encendido en la misma red.

Una consulta guardada en el Generador de consultas

El punto final encapsula exactamente una consulta guardada. Escriba la sentencia SELECT, ejecútela una vez y guárdela. Agregue un filtro dinámico (un @variable en la cláusula WHERE) si los que llaman deberían poder filtrar.

¿Quién puede crear puntos finales? Propietarios, administradores y creadores. Si el API El elemento no aparece en la barra superior; un administrador puede activarlo para su usuario en Cuenta → PermisosCualquier persona con la que compartas un punto final solo necesita una cuenta de Query Streams, en cualquier plan.

Además de Power BI Desktop o Excel 2016 o posterior. Si aún no tiene un punto final, Centro de API REST de base de datos Te permite convertir una consulta guardada en una URL en cuatro pasos.

Conecta Power BI en cuatro pasos

  1. Exportar el archivo M de Power Query

    En API abre tu punto final, haz clic Exportar y elegir Power Query M (.pq)El archivo es completo. dejar… entrar expresión con la URL del punto final y sus parámetros invocables ya definidos. Tiene este aspecto:

    Exportar · Power Query M (.pq)
    dejar
      Origen = JSON.Documento(Web.Contenido(
        "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19", [Encabezados = [#"X-API-Key" = "qsapi_TU_CLAVE"], Consulta = [compresión = "ninguno"]])), filas = Origen[filas], tabla = Tabla.De los registros(filas)
    en
      mesa

    La exportación siempre pide compresión=ninguna, porque Power Query no puede decodificar marcos LZ4; Power BI espera JSON sobre gzip.

  2. Pégalo en Power BI.

    En Power BI Desktop, seleccione Inicio → Transformar datos → Nueva fuente → Consulta en blanco, abre el Editor avanzado, reemplace su contenido con el archivo y haga clic HechoEn Excel la ruta es Datos → Obtener datos → De otras fuentes → Consulta en blanco, luego el mismo Editor avanzado.

  3. Añade tu clave

    Reemplace el marcador de posición con su clave de 49 caracteres que comienza qsapi_ desde el punto final Compartir pestaña. Cuando Power BI pregunte cómo conectarse, elija Anónimo: la llave viaja en el Clave X-API La consulta ya establece el encabezado, por lo que no se necesitan credenciales de Power BI.

  4. Cargar y actualizar

    Haga clic en Cerrar y aplicar. El filas La matriz se convierte en su tabla con una columna por cada columna de consulta. Publique en el servicio Power BI y configure una programación de actualización: debido a que el origen es una URL web, no se requiere una puerta de enlace local. Cada actualización es una llamada al punto final. Actividad pestaña.

Eso es todo. Power BI lee las filas en tiempo real a través de HTTPS, la base de datos permanece detrás de su firewall y el propietario del informe nunca ve el código SQL ni las credenciales de inicio de sesión de la base de datos.

La solicitud que realiza Power BI

En el fondo es la misma llamada que puedes hacer con curl. Los parámetros marcados como Callable se pueden pasar desde Power Query como Consulta = [ciudad = "Seattle"]:

GET · parámetros en la cadena de consulta
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?city=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
Respuesta · 200 OK · application/json
{
  "columnas": [ { "nombre": "id_cliente", "tipo": "entero" }, { "nombre": "nombre", "tipo": "cadena" }, { "nombre": "ciudad", "tipo": "cadena" } ],
  "filas": [
    { "id_cliente": 1042, "nombre": "Comerciantes del Viento del Norte", "ciudad": "Seattle" },
    { "id_cliente": 1057, "nombre": "Alpine Outfitters", "ciudad": "Denver" },
    { "id_cliente": 1063, "nombre": "Comida del puerto", "ciudad": "Halifax" }
  ],
  "meta": { "row_count": 3, "agent_duration_ms": 41, "id_solicitud": "req_7Hq2mKd9" }
}

Las filas se devuelven como objetos indexados por nombre de columna, con la lista de columnas y un meta Bloque que indica cuántas filas hay, si el resultado se recortó y el ID de la solicitud que puede citar para respaldar. La misma llamada como una POST coloca los parámetros en un cuerpo JSON, que es la opción correcta para listas largas de valores:

POST · parámetros en un cuerpo 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"}}'
?formato=csv
CSV en lugar de JSON, con fila de encabezado incluida. Aceptar: texto/csv hace lo mismo. Los puntos finales de transmisión devuelven NDJSON (un objeto JSON por línea) con un final {"_summary": true, "row_count": N} línea; revisa esa última línea.
?muestra=verdadero
Máximo cinco filas, sin costo. Ideal para conectar a un cliente.
?compresión=lz4
Un cuerpo de bastidor LZ4 para llamadas de alto volumen con decodificador; Código La pestaña tiene el fragmento del decodificador por idioma. El gzip simple se realiza automáticamente cuando su cliente envía Codificación aceptada: gzip.
Autorización: Portador qsapi_…
Aceptado como alias de Clave X-APIÚsalo desde el código del navegador.

Más allá de Power BI

Excel y Power BI

Exportar → Power Query M (.pq) te proporciona una consulta predefinida. Pégala en el Editor avanzado (Excel: Datos → Obtener datos → De otras fuentes → Consulta en blanco; Power BI: Inicio → Transformar datos → Nueva fuente → Consulta en blanco) y reemplaza el marcador de posición con tu consulta. qsapi_ llave.

Cartero, Insomnio, Rayuela

Lo mismo Exportar El menú descarga una colección de Postman v2.1, una exportación de Insomnia v5 o una colección de Hoppscotch con los parámetros completados y un marcador de posición para la clave.

Tu propio código

El Código La pestaña contiene ejemplos prácticos para cURL, Python, JavaScript, TypeScript, Java, C#, Go, PHP, PowerShell y Ruby. Exportar → Especificación OpenAPI 3.1 Alimenta cualquier generador de clientes o interfaz de usuario de Swagger.

n8n, Zapier, Make, cron

Crear un Clave de servicio Para usar la herramienta, pega la URL y la clave en su nodo HTTP y prográmala. Cada herramienta tiene su propia clave, así que puedes revocar una sin afectar a las demás.

Lo que permiten los planes

PlanPuntos finalesClaves por punto finalPersonas por punto finalFilas por llamada (estático)Filas por llamada (streaming)Llamadas por minuto, por tecla
Gratis1212502503
Núcleo personal2325,000250,00015
Personal Plus55510,000500,00030
Núcleo empresarial5101050,0001,000,000300
Negocios Plus102025100,0005,000,000600
Business Max253050250,00010,000,000600
Núcleo empresarial5050100500,00025,000,0001,000
Enterprise Plus1001002501,000,00050,000,0001,000
Enterprise Max2502005002,500,000100,000,0001,500

Cada llamada tiene un tiempo de espera fijo de 60 segundos para la consulta y un límite de respuesta de 8 MiB. Los bytes que devuelve se descuentan del límite de datos mensual de tu plan, el mismo que utilizan los complementos de Excel y Google Sheets. El plan gratuito incluye un punto final y 5 MB al mes, lo cual es suficiente para una tabla pequeña que se consulta varias veces al día. Consulte la página de precios. para las asignaciones por plan.

Lo gratuito es un plan que debes mantener. No es una prueba que caduca. Vea exactamente lo que incluye en el página de precios.

Para un informe, limite la consulta a las columnas que necesitan los elementos visuales y deje que la programación de actualización haga el resto; Power BI lee el resultado completo en cada actualización, por lo que el límite de filas estáticas de su plan es el límite máximo para una sola tabla.

Mantenerlo seguro

El SQL sigue siendo tuyo

Quienes realizan las llamadas obtienen filas. Nunca ven la consulta, los nombres de las tablas ni los detalles de la conexión, y no pueden cambiar lo que ejecuta el punto final.

Una clave, un punto final, una persona que realiza la llamada.

Una clave funciona para un único punto final. Asigne una clave a cada persona o herramienta, y cada llamada quedará registrada en ella. Si se revoca una clave, las demás seguirán funcionando; la revocación surte efecto en unos cinco minutos.

Solo lectura, en tu lado del muro

El agente ejecuta la única consulta SELECT guardada y nada más, desde dentro de su red, a través de su propia conexión de salida. No hay ningún puerto que abrir ni credenciales en internet.

Cada llamada en el libro mayor

El Actividad La pestaña muestra cada llamada con hora, destinatario, estado, filas, bytes y duración, incluidas las rechazadas. Establezca una Caducando duración para un recurso compartido temporal y el punto final se apaga automáticamente en la fecha.

Cuando algo no funciona

EstadoCódigo¿Qué hacer?
401API_KEY_REQUERIDA / API_KEY_INVÁLIDAFalta el encabezado o la clave es incorrecta. Enviar X-API-Key: qsapi_…, los 49 caracteres completos. Las claves se pueden copiar nuevamente desde la pestaña Compartir del punto final.
403API_KEY_ENDPOINT_MISMATCHUna clave válida utilizada en un punto final diferente. Cada clave pertenece a un único punto final.
403API_KEY_REVOKED / API_ENDPOINT_EXPIREDLa clave fue revocada o el punto final alcanzó su fecha de vencimiento. Genere una nueva clave o restaure el punto final.
400API_PARAM_NO_SOBREESCRIBIRSEUsted envió un parámetro que el propietario no marcó como invocable. El cuerpo enumera los nombres permitidos.
414CONSULTA_API_DEMASIADO_GRANDELa cadena de consulta GET pasó 8 KB o 200 valores de lista. Envíe los mismos parámetros como cuerpo JSON para POST.
413SALIDA DE API DEMASIADO GRANDEEl resultado superó el límite de 8 MiB. Limite la consulta o cambie el punto final a Streaming.
429TASA DE API LIMITADADemasiadas llamadas en este minuto para la clave o el punto final. Espere a que Reintentar después segundos, o subir Límite de tasa en Configuración de API → Valores predeterminados dentro de su plan.
429DATOS_REALES_EXHAUSTED DE LA APISe ha agotado el límite mensual de datos del propietario. Se restablecerá con el mes de facturación; actualiza tu plan para obtener más datos.
503AGENTE_API_NO_CONECTADOEl agente que gestiona tu base de datos está desconectado. Compruébalo en Datos → Agentes de datos; las llamadas volverán a funcionar en cuanto se reconecte.
504API_QUERY_TIMEOUTLa consulta tardó más de 60 segundos. Añada un filtro o un índice, o guarde una consulta más específica.

Cada cuerpo de error tiene la forma {"error": {"code": "…", "message": "…"}} y cada respuesta conlleva una ID de solicitud X-QS Encabezado. Cita el ID cuando escribas al soporte.

Dos detalles específicos de Power Query: a Error de origen de datos nombrar 401 significa que la clave en el archivo M es incorrecta o fue revocada; Expression.Error: No se encontró el campo 'rows' del registro. significa que el punto final devolvió un sobre de error, así que ejecute la URL en la consola del portal para leerlo.

Preguntas que hace la gente

¿Se copian mis datos a los flujos de consulta?

No. El agente ejecuta la consulta donde se encuentran sus datos y envía solo las filas solicitadas en la llamada. No se sincroniza ni se almacena en caché nada entretanto; cada llamada ejecuta la consulta.

¿Pueden los usuarios modificar la consulta SQL o solicitar otras tablas?

No. Un endpoint ejecuta una consulta guardada. Los llamantes solo pueden establecer los parámetros que usted marcó. Llamabley los valores se vinculan de forma segura: el texto se cita y se escapa, los números se comprueban por rango y las listas se expanden.

¿Cómo le entrego esto a un compañero?

En el punto final Compartir pestaña elegir Gente e ingresen su correo electrónico. Obtienen un enlace mágico, inician sesión con esa dirección (una cuenta gratuita está bien) y generan su propia clave; usted ve sus llamadas por nombre en la pestaña Actividad. Para un servidor o una herramienta de automatización, cree un clave API en su lugar, con una etiqueta.

¿Qué sucede cuando edito la consulta guardada?

El punto final ejecuta el nuevo SQL en la siguiente llamada y su especificación OpenAPI se regenera. La URL y las claves no cambian. Si agrega o elimina un filtro, vuelva a visitar Parámetros de bloqueo para que quienes llaman vean los parámetros correctos.

¿El plan gratuito realmente cubre esto?

Sí. El plan gratuito es permanente, no una prueba que caduca. Incluye un punto final, dos claves y 250 filas por llamada. Consulta exactamente lo que incluye en la página web. página de precios.

¿Realmente funciona la actualización programada en el servicio Power BI sin una puerta de enlace?

Sí. El servicio puede actualizar cualquier Contenidos web Fuente accesible a través de internet con autenticación anónima o mediante encabezados integrados. api.querystreams.com es una de estas fuentes; Power BI nunca accede a su base de datos.

¿Puedo usar DirectQuery?

No. Las fuentes web en Power BI están en modo de importación. Utilice la programación de actualización o mantenga la consulta específica y actualícela con mayor frecuencia dentro del límite de frecuencia de su plan.

¿Pueden Tableau y Looker Studio usar el mismo punto final?

Cualquier herramienta con un conector web o REST puede hacerlo, y Exportar → Especificación OpenAPI 3.1 describe el punto final para los creadores de conectores. Elija ?formato=csv para herramientas que prefieren CSV.

¿Sigues atascado? Abrir Ayuda En Query Streams, indíquenos en qué paso se encuentra y qué observa. Le ayudaremos a conectarse.

Setup trouble?

  • Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?
Actualizado el 27 de septiembre de 2026

Funciona con BetterDocs