Bases de datos SQL
Conectar a SQL Server, MySQL, PostgreSQL y más.
Las bases de datos relacionales son la columna vertebral de los datos empresariales. En esta lección aprenderás a conectar Power BI a SQL Server y MySQL, las dos bases de datos más usadas en el mundo empresarial.
Por qué conectar bases de datos
Las ventajas sobre archivos Excel/CSV
| Característica | Excel/CSV | Bases de datos |
|---|---|---|
| Volumen de datos | Hasta ~1M filas | Millones/Billones |
| Actualización | Manual | Tiempo real |
| Concurrencia | Una persona | Miles simultáneos |
| Integridad | Sin validación | Restricciones ACID |
| Seguridad | Nivel archivo | Nivel fila/columna |
| Relaciones | Manuales | Automáticas (FK) |
Cuándo usar cada fuente
Usa Excel/CSV cuando:
- Dataset pequeño (<500K filas)
- Datos para análisis puntual
- Fuente externa sin acceso a DB
- Prototipado rápido
Usa bases de datos cuando:
- Dataset grande (>500K filas)
- Datos cambian frecuentemente
- Múltiples usuarios necesitan acceso
- Datos transaccionales críticos
Conectar SQL Server
SQL Server es la base de datos relacional de Microsoft, extremadamente común en empresas.
Requisitos previos
Antes de conectar, necesitas:
Información de conexión:
- Nombre del servidor (ej:
server.company.comolocalhost) - Nombre de la base de datos (ej:
Ventas) - Puerto (por defecto: 1433)
- Nombre del servidor (ej:
Credenciales de acceso:
- Autenticación Windows (si estás en el dominio)
- Usuario y contraseña de SQL Server
Permisos necesarios:
SELECTen las tablas que necesitas leerVIEW DEFINITIONpara ver estructura de tablas
Paso 1: Iniciar conexión
- En Power BI Desktop, ve a Inicio → Obtener datos
- Busca "SQL Server" o selecciona Base de datos → SQL Server
- Haz clic en Conectar
Paso 2: Configurar conexión
Verás un diálogo con estos campos:
Servidor:
servidor.empresa.com
O para servidor local:
localhost
Base de datos (opcional):
Ventas
Si dejas en blanco, verás todas las bases de datos disponibles.
Opciones avanzadas (expandir):
| Opción | Descripción | Cuándo usar |
|---|---|---|
| Instrucción SQL | Consulta personalizada | Cuando solo necesitas ciertas columnas |
| Modo de conectividad | Import o DirectQuery | Por defecto Import |
| Tiempo de espera conexión | Segundos antes de error | Servidores lentos (aumentar a 60s) |
Paso 3: Elegir modo de conectividad
Esta es la decisión más importante:
Import (Importación)
Cómo funciona:
SQL Server → [Copia snapshot] → Power BI → Queries rápidas
Ventajas:
- Dashboards instantáneos (sin lag)
- Funcionalidad DAX completa
- No impacta la base de datos
- Trabaja offline
Desventajas:
- Datos pueden estar desactualizados
- Límite de tamaño (1GB Desktop, 10GB Premium)
- Refrescos programados necesarios
Casos de uso:
- Reportes analíticos (no operacionales)
- Datos históricos que no cambian constantemente
- Necesitas máximo rendimiento
- Dataset cabe en memoria
DirectQuery
Cómo funciona:
Power BI → [Query en tiempo real] → SQL Server → Resultados frescos
Ventajas:
- Datos siempre actualizados
- Sin límite de tamaño
- Seguridad a nivel de base de datos
- Sin preocupación por refrescos
Desventajas:
- Más lento (depende de la red/servidor)
- DAX limitado (no todas las funciones)
- Impacta el servidor SQL
- Requiere conexión constante
Casos de uso:
- Dashboards operacionales en tiempo real
- Datasets extremadamente grandes (>10GB)
- Seguridad RLS (Row-Level Security) en SQL
- Datos cambian cada minuto
Composite Models (Híbrido)
Puedes mezclar Import y DirectQuery:
Ventas (Import) + Stock (DirectQuery) → Dashboard mixto
Ejemplo práctico:
- Historial de ventas (Import): 3 años de datos, peso
- Stock actual (DirectQuery): actualizaciones constantes
Paso 4: Autenticación
Power BI soporta dos métodos:
Autenticación Windows
Cuándo usar:
- Estás en el dominio de la empresa
- Single Sign-On configurado
- Más seguro (sin passwords en texto)
Configuración:
☑ Usar mis credenciales actuales
Autenticación SQL Server
Cuándo usar:
- No estás en el dominio
- Usuario específico de aplicación
- SQL Server en Azure
Configuración:
Nombre de usuario: analista_bi
Contraseña: ********
Importante: Power BI cifra las credenciales, pero las guarda localmente. Para producción, usa Windows Authentication siempre que sea posible.
Paso 5: Seleccionar tablas
El Navegador muestra:
- Todas las bases de datos (si no especificaste una)
- Todas las tablas de la base de datos
- Vistas disponibles
- Funciones con valores de tabla
Vista jerárquica:
📁 Ventas (Base de datos)
📊 dbo
📄 Clientes
📄 Productos
📄 Transacciones
👁️ Vista_Ventas_Mensuales
Selección múltiple:
- Marca las casillas de las tablas necesarias
- Haz clic en una tabla para ver vista previa
- Verifica que los tipos de datos sean correctos
Paso 6: Usar consultas SQL personalizadas
Para datasets grandes o complejos, escribe SQL:
En Opciones avanzadas → Instrucción SQL:
SELECT
t.FechaVenta,
c.NombreCliente,
p.NombreProducto,
t.Cantidad,
t.PrecioUnitario,
t.Cantidad * t.PrecioUnitario AS Total
FROM Transacciones t
INNER JOIN Clientes c ON t.ClienteID = c.ID
INNER JOIN Productos p ON t.ProductoID = p.ID
WHERE t.FechaVenta >= '2024-01-01'
Ventajas de SQL personalizado:
- Solo traes las columnas que necesitas
- Puedes hacer joins en SQL (más eficiente)
- Filtras datos en el origen
- Reduces el tamaño del modelo
Desventajas:
- Más difícil de mantener
- No puedes usar el Navegador visual
- Requiere conocimiento de SQL
Conectar MySQL
MySQL es la base de datos open-source más popular, común en startups y aplicaciones web.
Requisitos previos
Instalar conector MySQL (solo primera vez):
- Descarga MySQL Connector/ODBC desde mysql.com
- Instala el driver ODBC de 64-bit
- Reinicia Power BI Desktop
Información de conexión:
- Servidor:
mysql.empresa.como IP192.168.1.100 - Puerto:
3306(por defecto) - Base de datos: nombre de tu database
- Servidor:
Credenciales:
- Usuario MySQL
- Contraseña
Paso 1: Conectar
- Ve a Inicio → Obtener datos
- Busca "MySQL" o selecciona Base de datos → Base de datos MySQL
- Haz clic en Conectar
Paso 2: Configurar conexión
Servidor:
mysql.empresa.com:3306
O solo el servidor (Power BI asume puerto 3306):
mysql.empresa.com
Base de datos (opcional):
ecommerce
Opciones avanzadas:
| Opción | Descripción |
|---|---|
| Instrucción SQL | Query personalizada |
| Tiempo de espera comando | Aumenta si consultas son lentas |
Paso 3: Autenticación
MySQL solo soporta autenticación de base de datos:
Usuario: admin_bi
Contraseña: ********
Niveles de seguridad:
| Nivel | Recomendación |
|---|---|
| Base de datos | Credenciales guardadas localmente |
| Ninguna | Solo para testing, nada se guarda |
Para producción, siempre usa "Base de datos" para guardar credenciales cifradas.
Paso 4: Seleccionar tablas
Similar a SQL Server:
- Navega por las tablas disponibles
- Vista previa antes de cargar
- Selección múltiple con checkboxes
Diferencias entre MySQL y SQL Server en Power BI
| Característica | SQL Server | MySQL |
|---|---|---|
| DirectQuery | Sí, completo | Sí, limitado |
| Autenticación Windows | Sí | No |
| Funciones de fecha | Nativas | Algunas limitadas |
| Performance | Excelente | Bueno |
| Configuración | Sin drivers | Requiere ODBC |
Import vs DirectQuery: Decidir según el caso
Matriz de decisión
| Criterio | Import | DirectQuery |
|---|---|---|
| Tamaño de datos | < 1GB | > 10GB |
| Frecuencia actualización | Diaria/Semanal | Tiempo real |
| Velocidad dashboard | Instantánea | Variable |
| Impacto en DB | Bajo (solo en refresh) | Alto (queries constantes) |
| Complejidad DAX | Compleja | Simple |
| Disponibilidad | Offline OK | Requiere conexión |
Escenarios reales
Escenario 1: Dashboard de ventas mensuales
Contexto:
- 2 años de historial
- 500K transacciones
- Actualización diaria a las 6am
Decisión: Import Por qué: Datos históricos, tamaño manejable, actualización diaria suficiente.
Escenario 2: Monitor de inventario en tiempo real
Contexto:
- Stock cambia cada minuto
- 50K productos
- Dashboard para almacén
Decisión: DirectQuery Por qué: Necesidad de datos en tiempo real, tamaño pequeño.
Escenario 3: Análisis de 10 años de transacciones
Contexto:
- 50M transacciones (15GB)
- Análisis de tendencias
- Actualización semanal
Decisión: Import con agregaciones Por qué:
- Agregamos datos por día/mes en Power Query
- Reducimos de 15GB a 500MB
- Velocidad crítica para análisis exploratorio
Escenario 4: Dashboard mixto de operaciones
Contexto:
- Historial de ventas (análisis de tendencias)
- Pedidos en proceso (operacional)
Decisión: Composite Model Por qué:
- Ventas históricas → Import (rápido, 3 años)
- Pedidos actuales → DirectQuery (tiempo real, <1000 filas)
Configuración de credenciales y seguridad
Administrar credenciales guardadas
Las credenciales se guardan localmente:
Archivo → Opciones → Configuración de origen de datos
Aquí puedes:
- Ver todas las conexiones guardadas
- Editar credenciales existentes
- Eliminar conexiones antiguas
- Cambiar nivel de privacidad
Niveles de privacidad
Cuando conectas múltiples fuentes, Power BI pregunta sobre privacidad:
| Nivel | Uso | Ejemplo |
|---|---|---|
| Privado | Datos sensibles | RRHH, Finanzas |
| Organizativo | Compartible en empresa | Ventas, Inventario |
| Público | Datos abiertos | Tipos de cambio, clima |
Regla: Si combinas fuentes, deben ser del mismo nivel o superior.
Privado + Público = ERROR
Organizativo + Público = OK
Optimización de conexiones
Mejores prácticas para Import
- Filtra en el origen:
WHERE FechaVenta >= DATEADD(year, -2, GETDATE())
No traigas 10 años si solo necesitas 2.
- Solo columnas necesarias:
SELECT ClienteID, FechaVenta, Total
-- No hagas SELECT *
Usa vistas en SQL: Crea vistas con joins pre-calculados en SQL Server.
Agrega datos cuando sea posible:
SELECT
CAST(FechaVenta AS DATE) AS Fecha,
SUM(Total) AS VentasDiarias
FROM Transacciones
GROUP BY CAST(FechaVenta AS DATE)
Mejores prácticas para DirectQuery
Índices en columnas filtradas: Asegúrate de que las columnas en filtros tengan índices en SQL.
Evita DAX complejo: Usa medidas simples, delega complejidad a SQL.
Limita visualizaciones por página: Máximo 5-7 gráficos por página para evitar múltiples queries.
Monitorea performance: Usa SQL Profiler para ver qué queries genera Power BI.
Errores comunes y soluciones
Error 1: "No se puede conectar al servidor"
Síntoma:
No se puede establecer conexión con servidor.empresa.com
Posibles causas y soluciones:
| Causa | Solución |
|---|---|
| Firewall bloqueando | Abre puerto 1433 (SQL) o 3306 (MySQL) |
| Nombre de servidor incorrecto | Verifica en SQL Server Management Studio |
| SQL Server apagado | Contacta al DBA |
| VPN no conectada | Conecta a VPN empresarial |
Error 2: "Acceso denegado"
Síntoma:
Login failed for user 'analista'
Solución:
- Verifica usuario y contraseña
- Confirma que tienes permisos
SELECTen las tablas - Si usas Windows Auth, verifica que estés en el dominio
Error 3: "DirectQuery no admite esta función DAX"
Síntoma:
CALCULATE con filtros complejos no soportado en DirectQuery
Solución:
- Simplifica la medida DAX
- O cambia a Import mode
- O crea la lógica en una vista SQL
Error 4: "El conjunto de datos supera el límite"
Síntoma:
El modelo supera el límite de 1GB en Power BI Desktop
Solución:
- Filtra datos históricos (últimos 2 años en vez de 10)
- Elimina columnas no usadas
- Agrega datos en Power Query
- Considera DirectQuery para tablas grandes
Error 5: "Tiempo de espera de consulta agotado"
Síntoma:
Query timeout expired
Solución DirectQuery:
- Optimiza la consulta SQL (índices)
- Aumenta timeout en Opciones avanzadas
- Reduce complejidad de visualizaciones
Solución Import:
- Filtra más datos en el origen
- Ejecuta el refresh en horario de baja carga
Ejercicio práctico
Opción A: Si tienes SQL Server
- Conecta a una base de datos SQL Server
- Prueba Import mode:
- Selecciona una tabla pequeña (<100K filas)
- Carga los datos
- Mide el tiempo de carga
- Reconecta con DirectQuery:
- Misma tabla
- Compara la velocidad al crear un gráfico
- Compara resultados
Opción B: Práctica con base de datos demo
Usa la base de datos AdventureWorks (demo gratuita):
- Descarga AdventureWorks de Microsoft
- Instala en SQL Server local (o usa SQL Server Express gratis)
- Conecta Power BI a:
- Tabla:
Sales.SalesOrderHeader - Modo: Import
- Tabla:
- Crea un gráfico de ventas por año
Opción C: Sin acceso a SQL Server
Simula la experiencia:
- Crea un CSV con 100K filas (usa Excel con fórmulas)
- Importa en Power BI
- Toma nota de:
- Tiempo de carga
- Tamaño del archivo .pbix
- Velocidad de los gráficos
Puntos clave de esta lección
- SQL Server y MySQL son las bases de datos relacionales más comunes
- Import mode copia datos (rápido, offline), DirectQuery consulta en tiempo real
- Usa Import para análisis histórico (<1GB), DirectQuery para operaciones en tiempo real
- SQL Server soporta Windows Authentication, MySQL requiere usuario/password
- Optimiza Import filtrando en el origen, DirectQuery con índices en SQL
- Para datasets >1GB, considera agregaciones o DirectQuery
Próxima lección
En la siguiente lección aprenderás a conectar servicios en la nube como Google Sheets y SharePoint, perfectos para colaboración en equipo.
Quiz de comprensión
- ¿Cuál es la principal diferencia entre Import y DirectQuery en términos de velocidad?
- ¿Qué tipo de autenticación es más segura para SQL Server y por qué?
- Menciona dos ventajas de escribir una consulta SQL personalizada en lugar de usar el Navegador
- ¿Cuándo usarías un Composite Model (Import + DirectQuery)?
- ¿Qué puerto usa MySQL por defecto?
Completaste esta leccion?
Marca esta leccion como completada. Tu progreso se guardara en tu navegador.