Lección 5 de 36Conectar y Cargar Datos

Bases de datos SQL

Conectar a SQL Server, MySQL, PostgreSQL y más.

20 minutos

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:

  1. Información de conexión:

    • Nombre del servidor (ej: server.company.com o localhost)
    • Nombre de la base de datos (ej: Ventas)
    • Puerto (por defecto: 1433)
  2. Credenciales de acceso:

    • Autenticación Windows (si estás en el dominio)
    • Usuario y contraseña de SQL Server
  3. Permisos necesarios:

    • SELECT en las tablas que necesitas leer
    • VIEW DEFINITION para ver estructura de tablas

Paso 1: Iniciar conexión

  1. En Power BI Desktop, ve a Inicio → Obtener datos
  2. Busca "SQL Server" o selecciona Base de datos → SQL Server
  3. 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

  1. Instalar conector MySQL (solo primera vez):

    • Descarga MySQL Connector/ODBC desde mysql.com
    • Instala el driver ODBC de 64-bit
    • Reinicia Power BI Desktop
  2. Información de conexión:

    • Servidor: mysql.empresa.com o IP 192.168.1.100
    • Puerto: 3306 (por defecto)
    • Base de datos: nombre de tu database
  3. Credenciales:

    • Usuario MySQL
    • Contraseña

Paso 1: Conectar

  1. Ve a Inicio → Obtener datos
  2. Busca "MySQL" o selecciona Base de datos → Base de datos MySQL
  3. 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 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é:

  1. Agregamos datos por día/mes en Power Query
  2. Reducimos de 15GB a 500MB
  3. 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

  1. Filtra en el origen:
WHERE FechaVenta >= DATEADD(year, -2, GETDATE())

No traigas 10 años si solo necesitas 2.

  1. Solo columnas necesarias:
SELECT ClienteID, FechaVenta, Total
-- No hagas SELECT *
  1. Usa vistas en SQL: Crea vistas con joins pre-calculados en SQL Server.

  2. 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

  1. Índices en columnas filtradas: Asegúrate de que las columnas en filtros tengan índices en SQL.

  2. Evita DAX complejo: Usa medidas simples, delega complejidad a SQL.

  3. Limita visualizaciones por página: Máximo 5-7 gráficos por página para evitar múltiples queries.

  4. 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:

  1. Verifica usuario y contraseña
  2. Confirma que tienes permisos SELECT en las tablas
  3. 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:

  1. Filtra datos históricos (últimos 2 años en vez de 10)
  2. Elimina columnas no usadas
  3. Agrega datos en Power Query
  4. 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

  1. Conecta a una base de datos SQL Server
  2. Prueba Import mode:
    • Selecciona una tabla pequeña (<100K filas)
    • Carga los datos
    • Mide el tiempo de carga
  3. Reconecta con DirectQuery:
    • Misma tabla
    • Compara la velocidad al crear un gráfico
  4. Compara resultados

Opción B: Práctica con base de datos demo

Usa la base de datos AdventureWorks (demo gratuita):

  1. Descarga AdventureWorks de Microsoft
  2. Instala en SQL Server local (o usa SQL Server Express gratis)
  3. Conecta Power BI a:
    • Tabla: Sales.SalesOrderHeader
    • Modo: Import
  4. Crea un gráfico de ventas por año

Opción C: Sin acceso a SQL Server

Simula la experiencia:

  1. Crea un CSV con 100K filas (usa Excel con fórmulas)
  2. Importa en Power BI
  3. 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

  1. ¿Cuál es la principal diferencia entre Import y DirectQuery en términos de velocidad?
  2. ¿Qué tipo de autenticación es más segura para SQL Server y por qué?
  3. Menciona dos ventajas de escribir una consulta SQL personalizada en lugar de usar el Navegador
  4. ¿Cuándo usarías un Composite Model (Import + DirectQuery)?
  5. ¿Qué puerto usa MySQL por defecto?

Completaste esta leccion?

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