Establecer IsAvailableInMDX en False
Información general
Esta regla de prácticas recomendadas identifica columnas ocultas que tienen la propiedad IsAvailableInMDX establecida en true, pero que no necesitan estar accesibles mediante consultas MDX. Si estableces esta propiedad en false para columnas ocultas sin uso, puedes mejorar el rendimiento de las consultas y reducir la sobrecarga de memoria.
- Categoría: Rendimiento
- Gravedad: Media (2)
Se aplica a
- Columnas de datos
- Columnas calculadas
- Columnas de tablas calculadas
Por qué es importante
Cuando una columna tiene IsAvailableInMDX establecido en true, el motor de Analysis Services mantiene metadatos y estructuras adicionales para admitir consultas MDX sobre esa columna. En el caso de columnas ocultas que no se usan en relaciones, jerarquías, variaciones, calendarios o como columnas de ordenación, esta sobrecarga es innecesaria y puede:
- Aumentar el consumo de memoria
- Ralentizar el procesamiento de consultas
- Añadir complejidad a los metadatos del modelo
Al establecer explícitamente IsAvailableInMDX en false para estas columnas, optimizas el modelo para escenarios solo con DAX, el principal lenguaje de consulta de Power BI y de los modelos modernos de Analysis Services.
Warning
Compatibilidad con tablas dinámicas de Excel: Establecer IsAvailableInMDX en false impide que las columnas se puedan arrastrar al área de filas o columnas de las tablas dinámicas de Excel. Las tablas dinámicas de Excel generan consultas MDX al conectarse a modelos tabulares de Analysis Services, y necesitan jerarquías de atributos (que solo se crean cuando IsAvailableInMDX = true) para funcionar correctamente. Si sus usuarios necesitan analizar datos con tablas dinámicas de Excel u otras herramientas basadas en MDX, no aplique esta regla a las columnas a las que necesiten acceder. Para más detalles, consulta el artículo de Chris Webb sobre IsAvailableInMDX.
Cuándo se activa esta regla
La regla se activa cuando se cumplen todas las condiciones siguientes:
- La columna tiene
IsAvailableInMDX = true - La columna está oculta (o lo está la tabla que la contiene)
- La columna NO se usa en ninguna relación de
SortBy - La columna NO se usa en ninguna jerarquía
- La columna NO se usa en ninguna variación
- La columna NO se usa en ningún calendario
- La columna NO actúa como
SortByColumnde otra columna
Cómo solucionarlo
Corrección automática
Esta regla incluye una expresión de corrección automática. Cuando apliques la corrección en el Best Practice Analyzer:
IsAvailableInMDX = false
Para aplicarlo:
- En el Best Practice Analyzer, selecciona los objetos marcados
- Haz clic en Aplicar corrección
Corrección manual
- En el Explorador TOM, localiza la columna marcada
- En el panel de Propiedades, busca la propiedad
IsAvailableInMDX - Establece el valor a
false - Guarda los cambios
Ejemplo
Considera una columna calculada oculta que solo se usa para cálculos intermedios:
_TempCalculation =
CALCULATE(
SUM('Sales'[Amount]),
ALLEXCEPT('Sales', 'Sales'[ProductKey])
)
Si esta columna está:
- Oculta para las herramientas cliente
- No se usa en jerarquías ni en relaciones
- No se hace referencia en operaciones de ordenación
Se recomienda establecer IsAvailableInMDX = false para obtener un rendimiento óptimo.
Nivel de compatibilidad
Esta regla se aplica a modelos con nivel de compatibilidad 1200 y superior.
Reglas relacionadas
- Establecer IsAvailableInMDX en True cuando sea necesario - La regla complementaria que garantiza que las columnas que necesitan acceso a MDX lo tengan habilitado