Introducción
Al diseñar modelos en Power BI, suele ser preferible usar identificadores (IDs) numéricos por su eficiencia. Sin embargo, hay un inconveniente: los segmentadores (slicers) de Power BI no permiten la búsqueda en campos numéricos. Aquí es donde una clave subrogada puede ser útil.
Para solucionar esto, muchos usuarios convierten los IDs a texto, lo que habilita la caja de búsqueda en los filtros. Sin embargo, esta práctica puede impactar el rendimiento y aumentar el tamaño del modelo.
En este artículo exploraremos estrategias avanzadas para mantener IDs numéricos optimizados sin perder la funcionalidad de búsqueda, cubriendo aspectos como:
- Comparativas de rendimiento entre IDs numéricos vs. texto.
- Técnicas para manejar grandes volúmenes de datos.
- Alternativas con DAX y modelado para evitar la conversión a texto.
- Impacto en la compresión y almacenamiento del modelo.
- Recomendaciones prácticas y ejemplos de implementación en Power BI.

IDs numéricos vs. texto: rendimiento y búsqueda en segmentadores
Rendimiento de columnas numéricas vs. texto
En Power BI, las columnas numéricas tienden a ser más eficientes en almacenamiento y procesamiento que las de texto.
- El motor interno usa codificación de valor para datos numéricos, logrando alta compresión.
- Para texto, en cambio, se emplea codificación hash, creando un diccionario con cada valor único.
- Como resultado, un ID numérico ocupa menos memoria que su equivalente en texto.
Por ejemplo, convertir un código de orden tipo "SO123456" en dos partes ("SO" + número separado) reduce significativamente la carga, ya que la parte numérica se comprime mejor.
Mantener los IDs como enteros protege el rendimiento, evitando que el diccionario de valores únicos en Power BI se sobrecargue.
Limitaciones en la búsqueda de segmentadores
El problema es que Power BI no permite la búsqueda en slicers numéricos.
- Si se usa un campo entero en un filtro tipo lista o desplegable, el icono de búsqueda no aparecerá.
- Una solución común es convertir el ID a texto (creando una columna duplicada con formato texto), lo que habilita la búsqueda dentro del segmentador.
🔴 Desventajas de cambiar a texto:
- Mayor tamaño del modelo, debido a la creación de un diccionario de valores únicos.
- Los IDs ya no se pueden agregar automáticamente en visuales, ya que los números convertidos a texto no admiten agregaciones.
Comparativa numérico vs. texto
| Criterio | ID numérico ✅ | ID en texto ❌ |
|---|---|---|
| Eficiencia de almacenamiento | Alta ✅ | Baja ❌ (requiere diccionario) |
| Relaciones en el modelo | Muy eficientes ✅ | Menos eficientes ❌ |
| Búsqueda en segmentadores | No posible ❌ | Sí posible ✅ |
| Impacto en el tamaño | Compacto ✅ | Puede aumentar el modelo ❌ |
Conclusión:
- Si el ID no se busca directamente, mantenerlo numérico es ideal.
- Si la búsqueda es imprescindible, la opción más sencilla es crear una columna de texto auxiliar.
Más adelante exploraremos cómo mitigar el impacto de esta columna adicional.
Manejo de grandes volúmenes de datos sin comprometer eficiencia
Si se trabaja con millones de filas, la cardinalidad del ID puede afectar la compresión y el rendimiento. Aquí se presentan métodos para optimizarlo.
1. Eliminar o reducir columnas innecesarias
- Si el ID no es clave para el análisis, conviene eliminarlo para reducir tamaño.
- Eliminar columnas altamente únicas puede reducir el tamaño del modelo hasta en un 40% o más.
2. Mantener IDs en tablas de dimensión pequeñas
- En un modelo en estrella, los IDs deben estar en las dimensiones y no en las tablas de hechos.
- Las dimensiones tienen menos filas, por lo que almacenar los IDs en ellas impacta menos la memoria.
3. Dividir el ID en partes (Splitting)
- Si el ID es un número muy largo (ej. 12 dígitos), dividirlo en varias columnas más pequeñas mejora la compresión.
- Se ha demostrado que partir un ID de 100 millones de filas en dos partes puede reducir el peso del modelo hasta en un 90%.
Ejemplo:
- Un ID de 8 dígitos puede dividirse en dos columnas de 4 dígitos cada una.
- Cada columna tendrá solo 10.000 valores únicos, en lugar de 100 millones.
4. Filtrado incremental o por rangos
- Usar slicers jerárquicos: primero filtrar por un criterio amplio (año, categoría), luego por ID.
- Segmentadores de tipo «Entre» permiten escribir un número exacto en los campos “Desde” y “Hasta” como truco para filtrar valores exactos.
Alternativas avanzadas con DAX y modelado para búsqueda sin convertir IDs
Opción 1: Columna de búsqueda auxiliar en la dimensión
- Se agrega una columna con el ID convertido a texto.
- Ejemplo en DAX:
ID_Busqueda = FORMAT([ID], "0")
- Se usa esta columna en el slicer, pero el ID numérico sigue siendo la clave de relación.
✅ Ventaja: Preserva eficiencia del modelo y habilita la búsqueda.
Opción 2: Campo de búsqueda combinado
- Concatenar ID + Nombre para permitir búsquedas por varios criterios.
- Ejemplo en DAX:
BuscarProducto = [ProductoID] & " - " & [Nombre]
✅ Ventaja: Permite buscar tanto por número como por nombre.
Opción 3: Medida DAX con filtro dinámico
- Se usa una tabla desconectada con un parámetro de búsqueda.
- Ejemplo en DAX:
BuscarID =
VAR term = SELECTEDVALUE( ParametroBusqueda[Texto] , "" )
RETURN
IF( term = "", 1, IF( CONTAINSSTRING( FORMAT( DimTabla[ID], "0" ), term ), 1, 0 ) )
✅ Ventaja: No añade columnas extra al modelo.
❌ Desventaja: Puede afectar el rendimiento en modelos grandes.
Impacto en la compresión y almacenamiento del modelo
| Estrategia | Impacto en el tamaño | Impacto en el rendimiento |
|---|---|---|
| IDs numéricos | 🔹 Bajo | 🚀 Rápido |
| Conversión a texto | 🔺 Alto | ⏳ Más lento |
| División de ID en partes | 🔹 Bajo | 🚀 Rápido |
| Medidas DAX para búsqueda | 🟡 Neutro | ⏳ Puede ser lento |
Conclusión y recomendaciones
- Mantenga los IDs como numéricos siempre que sea posible.
- Si la búsqueda es esencial, cree una columna de texto auxiliar en la tabla de dimensión.
- Reduzca el tamaño del modelo eliminando datos innecesarios y aplicando splitting en IDs largos.
- Evite usar medidas DAX si el volumen de datos es grande, ya que pueden impactar el rendimiento.
Con estas estrategias, Power BI se mantiene optimizado sin sacrificar la experiencia de usuario en la búsqueda de IDs.
Puedes leer más artículos aquí
Si deseas aprender todo sobre Power BI en NamasData encontrarás multitud de cursos y recursos




Deja un comentario