Lección 7 de 36Conectar y Cargar Datos

APIs y datos web

Consumir datos de APIs REST y páginas web.

20 minutos

Las APIs (Application Programming Interfaces) son la puerta de entrada a miles de fuentes de datos modernas. En esta lección aprenderás a conectar Power BI a APIs REST y servicios web populares.

¿Qué es una API?

Definición simple

Una API es un punto de acceso que te permite obtener datos de un servicio web mediante URLs.

Ejemplo de API:

https://api.empresa.com/ventas?fecha=2026-01-27

Responde con datos (formato JSON):

{
  "fecha": "2026-01-27",
  "total": 15420,
  "transacciones": 87,
  "productos": [
    {"nombre": "Laptop", "cantidad": 5}
  ]
}

APIs vs otras fuentes

Característica Excel/CSV Base de datos API
Actualización Manual Programada Tiempo real
Integración Archivo Conexión directa HTTP requests
Formato Tabular Tabular JSON/XML
Autenticación No Usuario/Pass Tokens/Keys
Datos disponibles Lo que guardas Lo que consultas Lo que expone la API

Casos de uso comunes

Servicio API disponible Datos que puedes obtener
Google Analytics Visitas, conversiones, fuentes de tráfico
Salesforce Leads, oportunidades, cuentas
Facebook Ads Impresiones, clicks, conversiones
Stripe Transacciones, clientes, suscripciones
GitHub Commits, issues, pull requests
APIs internas Depende Lo que tu empresa construya

Conectar una API REST básica

Requisitos previos

Para conectar una API necesitas:

  1. URL de la API: El endpoint (punto de acceso)
  2. Método HTTP: Generalmente GET para consultar datos
  3. Autenticación (si aplica): API Key, Bearer Token, OAuth
  4. Documentación: Para entender la estructura de respuesta

Paso 1: Conectar Web en Power BI

  1. Ve a Inicio → Obtener datos
  2. Busca "Web" o selecciona Otros → Web
  3. Haz clic en Conectar

Paso 2: Ingresar la URL

Opción Básica:

https://api.ejemplo.com/datos

Opción Avanzada (para partes dinámicas):

  • Usa esta opción si la URL tiene parámetros que cambiarán
  • Puedes crear parámetros en Power BI para URLs dinámicas

Ejemplo con parámetros:

https://api.ejemplo.com/ventas?fecha=2026-01-27&region=norte

Paso 3: Autenticación

Las APIs requieren diferentes tipos de autenticación:

1. Anónima (sin autenticación)

Cuándo: APIs públicas gratuitas (ej: tipos de cambio, clima)

Configuración:

☑ Anónimo

2. API Key

Cuándo: Servicios que te dan una clave al registrarte

Configuración:

  • Selecciona Básico
  • Nombre de usuario: (vacío o tu email)
  • Contraseña: tu API key

O en la URL:

https://api.ejemplo.com/datos?apikey=tu_clave_aqui

3. Bearer Token (OAuth)

Cuándo: Servicios empresariales (Salesforce, Google Analytics)

Configuración:

  • Selecciona Organizacional o servicio específico
  • Power BI maneja OAuth automáticamente
  • Te redirige al servicio para autorizar

4. Header personalizado

Cuándo: APIs con autenticación personalizada

Configuración:

  1. Haz clic en Avanzado
  2. En "Encabezados HTTP", agrega:
    Authorization: Bearer tu_token_aqui
    

Paso 4: Parsear JSON

Power BI muestra la respuesta como texto JSON:

Vista inicial:

[Record]

Para convertir a tabla:

  1. Haz clic en Transformar datos
  2. Si es una lista, haz clic en To Table
  3. Si es un registro, haz clic en los botones de expansión (↔)
  4. Selecciona los campos que necesitas

Antes:

{
  "ventas": [
    {"producto": "Laptop", "cantidad": 5},
    {"producto": "Mouse", "cantidad": 20}
  ]
}

Después:

| producto | cantidad |
|----------|----------|
| Laptop   | 5        |
| Mouse    | 20       |

Conectar servicios populares

Google Analytics

Google Analytics tiene un conector nativo en Power BI.

Paso 1: Conectar

  1. Obtener datos → Servicios en línea → Google Analytics
  2. Haz clic en Iniciar sesión
  3. Autoriza a Power BI acceder a tus datos de Analytics

Paso 2: Seleccionar propiedad

El Navegador muestra:

  • Todas tus cuentas de GA
  • Propiedades dentro de cada cuenta
  • Vistas disponibles

Estructura:

📊 Cuenta: Mi Empresa
  🌐 Propiedad: Sitio Web Principal
    👁️ Vista: Todas las visitas
    👁️ Vista: Solo producción

Paso 3: Seleccionar métricas

Google Analytics te permite elegir:

Dimensiones (campos de agrupación):

  • Fecha
  • Fuente/Medio
  • Página
  • País/Ciudad
  • Dispositivo

Métricas (valores numéricos):

  • Usuarios
  • Sesiones
  • Tasa de rebote
  • Páginas por sesión
  • Duración promedio

Ejemplo de selección:

Dimensiones: Fecha, Fuente/Medio
Métricas: Usuarios, Sesiones, Conversiones
Rango: Últimos 90 días

Paso 4: Cargar datos

Haz clic en Cargar y Power BI traerá los datos seleccionados.

Limitaciones:

  • Máximo 7 dimensiones + 10 métricas por query
  • Rango máximo: 365 días por carga
  • Sampleo en cuentas con mucho tráfico (>500K sesiones/día)

Salesforce

Salesforce también tiene conector nativo.

Paso 1: Conectar

  1. Obtener datos → Servicios en línea → Salesforce Reports
  2. O Salesforce Objects (más flexible)
  3. Ingresa tu URL de Salesforce:
    https://tuempresa.salesforce.com
    

Paso 2: Autenticación

  1. Selecciona Cuenta organizativa
  2. Ingresa usuario y contraseña de Salesforce
  3. Si tienes 2FA, usa tu token de seguridad:
    Contraseña: tu_password + token_seguridad
    

Paso 3: Seleccionar objetos

Salesforce Reports (más fácil):

  • Muestra reportes ya creados en Salesforce
  • Trae datos pre-filtrados y calculados

Salesforce Objects (más flexible):

  • Acceso a objetos raw: Leads, Opportunities, Accounts
  • Traes todas las columnas
  • Aplicas filtros en Power Query

Objetos comunes:

📊 Salesforce Objects
  📄 Lead
  📄 Opportunity
  📄 Account
  📄 Contact
  📄 Task
  📄 Campaign

Facebook Ads / LinkedIn Ads

Requieren APIs con autenticación OAuth.

Paso 1: Conectar

No tienen conector nativo, usa Web:

Facebook Marketing API:

https://graph.facebook.com/v18.0/act_{ad_account_id}/insights

LinkedIn Marketing API:

https://api.linkedin.com/v2/adAnalytics

Paso 2: Obtener Access Token

  1. Ve a Facebook/LinkedIn Developers
  2. Crea una aplicación (o usa una existente)
  3. Genera un Access Token
  4. Copia el token

Paso 3: Usar el token en Power BI

En Power BI Web connector:

Opción 1: En la URL:

https://graph.facebook.com/v18.0/act_{id}/insights?access_token=tu_token

Opción 2: Header HTTP (más seguro):

Authorization: Bearer tu_token

Tip profesional: Usa conectores de terceros como Supermetrics o Funnel.io que simplifican estas conexiones.

APIs personalizadas (tu propia API)

Si tu empresa tiene una API interna, sigue estos pasos.

Paso 1: Obtener documentación

Pregunta a tu equipo de backend:

  • URL base: https://api.empresa.com
  • Endpoints disponibles: /ventas, /clientes, etc.
  • Método de autenticación: API Key, Bearer Token
  • Formato de respuesta: JSON o XML
  • Límites de rate: Requests por minuto

Paso 2: Probar en Postman primero

Antes de conectar en Power BI, valida en Postman:

  1. Descarga Postman (gratis)
  2. Crea un request GET a tu API
  3. Agrega headers de autenticación
  4. Ejecuta y verifica la respuesta

Ejemplo en Postman:

GET https://api.empresa.com/ventas
Headers:
  Authorization: Bearer abc123xyz

Paso 3: Replicar en Power BI

Una vez que funciona en Postman:

  1. Obtener datos → Web
  2. Ingresa la misma URL
  3. Opciones avanzadas → Agrega los mismos headers
  4. Conecta

Paso 4: Manejar paginación

Muchas APIs limitan resultados por página:

Respuesta con paginación:

{
  "data": [...100 items...],
  "next_page": "https://api.empresa.com/ventas?page=2"
}

Solución en Power Query:

  1. Crea una función recursiva que llame a cada página
  2. O usa el conector "Web API" con lógica de paginación

Código M básico:

let
    Source = Json.Document(Web.Contents("https://api.empresa.com/ventas")),
    data = Source[data],
    // Lógica para llamar next_page si existe
in
    data

Import vs DirectQuery para APIs

Import Mode (recomendado para APIs)

Ventajas:

  • No saturas la API con requests constantes
  • Velocidad instantánea en dashboards
  • Menor riesgo de exceder rate limits

Desventajas:

  • Datos pueden quedar obsoletos
  • Requieres configurar refrescos

Cuándo usar:

  • APIs con rate limits estrictos
  • Datos que no cambian cada minuto
  • Performance crítica

DirectQuery (rara vez soportado)

La mayoría de APIs no soportan DirectQuery en Power BI.

Excepciones:

  • Azure services (Blob Storage, Cosmos DB)
  • Algunas bases de datos expuestas vía REST

Mejores prácticas

1. Respeta los rate limits

Cada API tiene límites:

Servicio Límite típico
Google Analytics 10 requests/segundo
Salesforce 15,000 requests/día
Facebook Ads 200 requests/hora
APIs internas Variable

Solución:

  • Usa Import mode
  • Programa refrescos en horarios de baja actividad
  • Implementa caché cuando sea posible

2. Almacena credenciales de forma segura

Malo:

URL: https://api.com/data?apikey=12345abcde

Cualquiera con el .pbix puede ver tu key.

Bueno:

  • Usa headers HTTP para tokens
  • O autenticación OAuth (Power BI encripta tokens)
  • Nunca compartas archivos .pbix con credenciales

3. Maneja errores de API

Las APIs fallan. Prepárate:

Errores comunes:

Código HTTP Significado Solución
401 No autorizado Revisa token/key
403 Prohibido Verifica permisos
429 Too many requests Reduce frecuencia
500 Error del servidor Contacta proveedor

En Power Query:

try
    Json.Document(Web.Contents(url))
otherwise
    null

4. Documenta tus conexiones

Agrega un cuadro de texto en tu reporte:

Fuente de datos: API de Ventas
Endpoint: https://api.empresa.com/ventas
Actualización: Diaria 3:00 AM
Rate limit: 1000 requests/día
Contacto: api-support@empresa.com

5. Optimiza las queries

Malo (traes todo):

https://api.com/transacciones
→ 1 millón de transacciones

Bueno (filtras en la API):

https://api.com/transacciones?fecha_desde=2024-01-01&limite=10000
→ Solo lo necesario

Errores comunes y soluciones

Error 1: "Web.Contents failed to get contents"

Síntoma:

DataSource.Error: Web.Contents failed to get contents from 'https://api...'

Causas y soluciones:

Causa Solución
URL incorrecta Verifica en el navegador primero
API caída Contacta al proveedor
Firewall bloqueando Configura excepciones
SSL certificate error Usa Postman para diagnosticar

Error 2: "401 Unauthorized"

Síntoma:

401 Unauthorized

Solución:

  1. Verifica que el token/key sea correcto
  2. Confirma que no haya expirado
  3. Revisa que tengas permisos correctos
  4. Re-autoriza si es OAuth

Error 3: "Formula.Firewall"

Síntoma:

Formula.Firewall: Query 'Query1' references other queries, but isn't included in the firewall.

Solución:

  1. Ve a Archivo → Opciones → Privacidad
  2. Cambia a "Ignorar los niveles de privacidad"
  3. O configura cada fuente con el mismo nivel de privacidad

Error 4: "JSON parse error"

Síntoma:

Expression.Error: Invalid JSON

Causa: La API no respondió JSON válido

Diagnóstico:

  1. Haz clic en "View Native" en Power Query
  2. Revisa la respuesta cruda
  3. La API pudo haber devuelto HTML (error) en vez de JSON

Solución:

  • Verifica la URL
  • Revisa headers de autenticación
  • Prueba en Postman primero

Error 5: "Too many requests"

Síntoma:

429 Too Many Requests

Solución:

  1. Reduce la frecuencia de refrescos
  2. Implementa delay entre requests
  3. Contacta al proveedor para aumentar límite
  4. Usa caché intermedio si es posible

Herramientas complementarias

Postman

Uso: Probar APIs antes de conectar en Power BI

Descarga: postman.com

Flujo:

  1. Prueba request en Postman
  2. Verifica que funciona
  3. Replica en Power BI

Power Query M code

Para APIs complejas, necesitarás aprender M:

Recursos:

Ejemplo básico:

let
    url = "https://api.empresa.com/ventas",
    headers = [Authorization="Bearer token123"],
    response = Json.Document(Web.Contents(url, [Headers=headers])),
    data = response[data],
    toTable = Table.FromList(data, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
in
    toTable

Ejercicio práctico

Opción A: API pública gratuita

Practica con una API de tipos de cambio:

  1. API gratuita: exchangerate-api.com
  2. Obtén tu API key (gratis)
  3. Endpoint:
    https://v6.exchangerate-api.com/v6/TU_KEY/latest/USD
    
  4. Conecta en Power BI:
    • Obtener datos → Web
    • Pega la URL
    • Autenticación: Anónima
  5. Transforma:
    • Expande el campo "conversion_rates"
    • Crea tabla con monedas y tasas
  6. Crea visual:
    • Tabla con monedas y sus valores vs USD

Opción B: Google Analytics (si tienes cuenta)

  1. Conecta tu cuenta de Google Analytics
  2. Selecciona:
    • Dimensión: Fecha
    • Métrica: Usuarios
    • Rango: Últimos 30 días
  3. Crea gráfico de línea de usuarios por día

Opción C: API simulada

Si no tienes acceso a APIs:

  1. Usa JSONPlaceholder (API de prueba):
    https://jsonplaceholder.typicode.com/posts
    
  2. Conecta en Power BI (sin autenticación)
  3. Transforma a tabla
  4. Expande campos: userId, id, title, body

Puntos clave de esta lección

  • Las APIs permiten acceso a datos en tiempo real de servicios web
  • Power BI soporta APIs REST mediante el conector Web
  • Google Analytics y Salesforce tienen conectores nativos en Power BI
  • La autenticación puede ser: Anónima, API Key, Bearer Token, u OAuth
  • Respeta los rate limits de cada API para evitar bloqueos
  • Usa Import mode para APIs con límites estrictos
  • Prueba APIs en Postman antes de conectar en Power BI

Próxima lección

En la siguiente lección entrarás a Power Query para transformar y limpiar datos, la herramienta más poderosa de preparación de datos en Power BI.


Quiz de comprensión

  1. ¿Qué formato de datos devuelven la mayoría de APIs modernas?
  2. ¿Cuál es la diferencia entre API Key y OAuth?
  3. Menciona dos servicios que tienen conectores nativos en Power BI
  4. ¿Por qué es recomendable usar Import mode en lugar de DirectQuery para APIs?
  5. ¿Qué herramienta puedes usar para probar una API antes de conectarla en Power BI?

Completaste esta leccion?

Marca esta leccion como completada. Tu progreso se guardara en tu navegador.