Evite caracteres no válidos en los nombres de los objetos
Información general
Esta regla de mejores prácticas identifica objetos cuyos nombres contienen caracteres de control no válidos (caracteres no imprimibles, excepto los espacios en blanco estándar). Estos caracteres pueden provocar fallos de implementación, problemas de representación y corrupción de datos.
- Categoría: Prevención de errores
- Gravedad: Alta (3)
Se aplica a
- Tablas
- Medidas
- Jerarquías
- Niveles
- Perspectivas
- Particiones
- Columnas de datos
- Columnas calculadas
- Columnas de tablas calculadas
- KPI
- Roles del modelo
- Grupos de cálculo
- Elementos de cálculo
Por qué es importante
Los caracteres de control en los nombres de los objetos provocan problemas graves:
- Fallos de implementación: Power BI Service y Analysis Services pueden rechazar modelos con caracteres no válidos
- Problemas de renderizado: Las herramientas cliente pueden mostrar nombres ilegibles o invisibles
- Errores de análisis de DAX: Los caracteres no válidos pueden invalidar expresiones DAX que hagan referencia al objeto
- Corrupción de XML: Los metadatos del modelo (TMSL/XMLA) pueden quedar mal formados
- Problemas al copiar y pegar: Es posible que los nombres no se transfieran correctamente entre aplicaciones
- Problemas de codificación: Incidencias de compatibilidad entre plataformas
Se permite el espacio en blanco estándar (espacios, saltos de línea, retornos de carro), pero deben eliminarse los caracteres de control.
Cuándo se activa esta regla
La regla se activa cuando el nombre de un objeto contiene caracteres de control que no son espacios en blanco estándar:
Name.ToCharArray().Any(char.IsControl(it) and !char.IsWhiteSpace(it))
Esto detecta caracteres problemáticos y, a la vez, permite un formato de espacio en blanco válido.
Cómo solucionarlo
Corrección automática
Esta regla incluye una corrección automática que reemplaza los caracteres no válidos por espacios:
Name = string.Concat(
it.Name.ToCharArray().Select(
c => (char.IsControl(c) && !char.IsWhiteSpace(c)) ? ' ' : c
)
)
Para aplicarlo:
- En el Best Practice Analyzer, selecciona los objetos marcados
- Haz clic en Aplicar corrección
Corrección manual
- En el Explorador TOM, selecciona el objeto
- En el panel Propiedades, busca el campo Nombre
- Edita el nombre para eliminar los caracteres no válidos
- Guarda los cambios
Causas comunes
Causa 1: Copiar y pegar desde texto enriquecido
Copiar nombres desde documentos de Word, páginas web o correos electrónicos puede introducir caracteres de formato ocultos.
Causa 2: Generación automatizada de nombres
Los scripts que generan nombres pueden incluir caracteres de control de los sistemas de origen.
Causa 3: Importación de datos desde orígenes externos
Importación de metadatos que contienen artefactos de codificación o códigos de control.
Ejemplo
Antes de la corrección
Nombre de la medida: "Total\x00Sales" (contiene un carácter NULL)
La implementación falla con el error "Invalid character in object name"
Después de la corrección
Nombre de la medida: "Total Sales" (NULL sustituido por un espacio)
Se implementa correctamente y se muestra correctamente en todas las herramientas.
Nivel de compatibilidad
Esta regla se aplica a modelos con nivel de compatibilidad 1200 o superior.
Reglas relacionadas
- Evitar caracteres no válidos en las descripciones - Validación similar para las propiedades de descripción
- Recortar nombres de objetos - Eliminación de espacios al inicio y al final