Reglas para mejorar el rendimiento de tu modelo

Feb 9 / Michael Kovalsky, Eva Ballester (adaptación al español)
Hay una gran cantidad de artículos, publicaciones de blogs y videos que comparten recomendaciones sobre las mejores prácticas para Power BI y el modelado tabular. Por supuesto, es esencial leerlos para aprender el enfoque de desarrollo adecuado. Sin embargo, ¿no sería bueno tener estas mejores prácticas codificadas en un solo lugar y alertarlo sobre un problema de modelado mientras desarrolla su modelo? Piense en cómo funciona el 'Corrector ortográfico' en Microsoft Word. Le notifica de errores ortográficos o gramaticales mientras escribe. Esta herramienta le notificaría de posibles errores de modelado o cambios que se pueden realizar para mejorar el diseño y el rendimiento del modelo. Esto incluye recomendaciones para la nomenclatura, la experiencia del usuario y optimizaciones comunes que se pueden realizar para mejorar el rendimiento.

Afortunadamente, la base de esta herramienta ya existe. Es el Best Practice Analyzer dentro de Tabular Editor. Tabular Editor es una herramienta comunitaria de código abierto desarrollada por Daniel Otykier, quien es un MVP de Power BI y miembro destacado del programa de colaboradores de Power BI.

En esta publicación, compartimos un conjunto de reglas que puede agregar a su instancia de Tabular Editor. En cuestión de segundos, escanea todo su modelo contra cada una de las reglas y proporciona una lista de todos los objetos que cumplen la condición en cada regla. Hacer esto manualmente llevaría años ... especialmente en un modelo con muchas tablas y medidas. En cambio, ¡se hace en un instante!

Para aclarar, este motor de reglas se puede usar contra cualquier origen/ destino de modelo tabular, ya sea un modelo en Power BI Desktop , Analysis Services , Azure Analysis Services o Power BI Premium.

Es el momento de ser un experto de Power BI y Microsoft Power Platform!

Las normas

Ahora, veamos las reglas de mejores prácticas. Como puede ver a continuación, las reglas están segmentadas en categorías. Algunas reglas están más orientadas a la estética, mientras que otras se centran más en la optimización del rendimiento. Tenga en cuenta que hay varias reglas que requieren ejecutar un script adicional (cada una está marcada con un asterisco a continuación).

Expresiones DAX

  • Utilice la función DIVIDIR para la división
  • Evite el uso de la función IFERROR
  • Las referencias de columna deben estar completamente calificadas.
  • Las referencias de las medidas no deben estar calificadas.
  • Las medidas no deben ser referencias directas de otras medidas.
  • No hay dos medidas que tengan la misma definición.
  • Utilice la función TREATAS en lugar de INTERSECT para relaciones virtuales.

Prevención de errores

  • Las columnas de datos deben tener una columna de origen.
  • Las columnas calculadas deben tener una expresión.

Formato

  • Agregar categoría de datos para columnas.
  • No resuma columnas numéricas.
  • La primera letra de los objetos debe estar en mayúscula.
  • Ocultar columnas de la tabla de hechos.
  • Ocultar claves externas.
  • Marcar claves primarias.
  • El mes (como una cadena) debe ordenarse.
  • Los objetos no deben comenzar ni terminar con un espacio.
  • Los porcentajes deben formatearse con separadores de miles y un decimal.
  • Dar formato a las columnas de marca como cadenas de valor Sí / No.
  • Proporcione una cadena de formato para las columnas "Fecha".
  • Proporcione una cadena de formato para las columnas "Mes".
  • Proporcionar cadena de formato para medidas
  • Las columnas de relación deben ser de tipo de datos enteros.
  • Los números enteros deben formatearse con separadores de miles y sin decimales.

Mantenimiento

  • Asegúrese de que las tablas tengan relaciones.
  • Objetos sin descripción.
  • Eliminar fuentes de datos a las que no hace referencia ninguna partición.
  • Eliminar roles sin miembros.
  • Eliminar columnas innecesarias.
  • Eliminar medidas innecesarias.

Convenciones de nombres

  • Utilice CamelCase para columnas ocultas.
  • El nombre de la partición debe coincidir con el nombre de la tabla para tablas de una sola partición.
  • Los nombres de los objetos no deben contener caracteres especiales.

Actuación

  • Evite las relaciones bidireccionales contra columnas de cardinalidad alta *.
  • Evite las relaciones bidireccionales excesivas o de muchos a muchos.
  • Evite la arquitectura de esquema de copo de nieve.
  • No utilice tipos de datos de punto flotante.
  • Las tablas grandes deben estar particionadas *.
  • Limitar la lógica de seguridad de nivel de fila (RLS).
  • Las relaciones de muchos a muchos deben ser de una sola dirección.
  • Minimice las transformaciones de Power Query.
  • El modelo debe tener una tabla de fechas.
  • Modele usando Direct Query y sin agregaciones.
  • Reducir el número de columnas calculadas.
  • Reducir el uso de columnas calculadas que usan la función RELACIONADA.
  • Reducir el uso de tablas calculadas.
  • Reducir el uso de columnas de gran longitud con cardinalidad alta **.
  • Eliminar tabla de fecha automática.
  • Eliminar columnas redundantes en tablas relacionadas.
  • Establezca IsAvailableInMdx en falso en columnas sin atributos.
  • Fecha y hora divididas ***.
  • Las tablas de fecha / calendario deben marcarse como una tabla de fecha.
Desvincular datos pivotados (mes).

*Para ejecutar esta regla, primero debe ejecutar este script .
** Para ejecutar esta regla, primero debe ejecutar este script de la misma manera que la nota anterior.
*** Para ejecutar esta regla, primero debe ejecutar este script de la misma manera que la nota anterior.
Nota: Cada una de las reglas con asterisco (*) requiere la versión 2.12.1 o superior del Editor tabular.

Cursos

Cargando las reglas

Estos son los pasos para cargar las reglas de mejores prácticas en su Tabular editor.
1. Descargue e instale Tabular Editor 
2. Abra Tabular Editor y ejecute el siguiente código en la ventana Advanced Scripting . 
System.Net.WebClient w = new System.Net.WebClient();
string path = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData);
string url = "https://raw.githubusercontent.com/microsoft/Analysis-Services/master/BestPracticeRules/BPARules.json";
string downloadLoc = path+@"\TabularEditor\BPARules.json";
w.DownloadFile(url, downloadLoc);
3. Cierre y vuelva a abrir Tabular Editor.
4. Seleccione 'Tools' en el menú y seleccione 'Best practice analyzer”.
5. Haga clic en el icono Actualizar (en azul).
Ahora habrá cargado todas las reglas en su Editor tabular local y las habrá ejecutado en su modelo.
* Nota: Esto sobrescribirá el archivo BPARules.json existente (en caso de que tenga reglas preexistentes).

Ver detalles de la regla

Para ver detalles adicionales sobre una regla en particular, vaya a 'Tools' -> Administrar reglas de BPA' en el. Haga clic en 'Reglas para el usuario local'.
Write your awesome label here.
A continuación, haga clic en cualquier regla dentro de la colección a continuación y haga clic en 'Editar regla'.
Write your awesome label here.
Como se muestra arriba, ahora verá no solo el nombre de la regla y el código detrás de ella, sino también una breve descripción junto con un documento de referencia (donde corresponda). El enlace de referencia será un artículo / blog / video que profundiza en más detalles sobre esa regla de mejores prácticas en particular.

Solución de problemas

Algunos de los problemas destacados por las reglas de mejores prácticas son bastante simples y se pueden solucionar en segundos. Otros son más complicados y pueden llevar algún tiempo. Algunas de las reglas más simples tienen un mecanismo integrado para solucionar el problema. Todo lo que tiene que hacer es hacer clic con el botón derecho en un objeto (o seleccionar varios objetos dentro de una regla) dentro del Analizador de mejores prácticas y seleccionar 'Generar script de corrección'. Esto copiará un script C # que se puede pegar y ejecutar en la ventana Advanced Scripting en Tabular Editor. La ejecución de ese script modificará la propiedad específica de los objetos para solucionar el problema. Esto se muestra en la siguiente imagen.

También puede utilizar la opción 'Aplicar corrección'. Esto ejecutará instantáneamente el script Generate fix. Recomiendo a la gente que empiece por utilizar el script Generate fix, ya que le permite ver exactamente lo que está sucediendo. A medida que se sienta más cómodo con la herramienta, no dude en probar 'Aplicar corrección'.
Write your awesome label here.
Hacer clic derecho en un objeto puede dar la opción de generar un script de corrección o aplicar una corrección. Esto solo es factible para un conjunto limitado de reglas.
Write your awesome label here.
Este es el script C # generado por el 'Generate fix script'. Aquí se pega en la ventana Advanced Scripting.

Como se mencionó anteriormente, solo algunas de las reglas tienen un mecanismo de corrección incorporado. Otras reglas más complicadas no lo hacen. Aquí es donde es imperativo encontrar la regla en la ventana 'Administrar reglas de mejores prácticas', hacer clic en 'Editar regla' y leer la descripción de la regla. También siga el enlace de referencia para obtener más información sobre la regla y cómo solucionar el problema en particular.

Desactivación de reglas

Si una regla en particular no se aplica, hay varias formas de ocultar reglas. Primero, puede desmarcar una regla dentro de la ventana 'Administrar reglas de mejores prácticas'. Esto deshabilitará la regla en su totalidad. Si desea deshabilitar una regla para un objeto en particular, puede hacer clic derecho en un objeto dentro del Analizador de mejores prácticas y hacer clic en 'Ignorar elementos' (ver captura de pantalla anterior).

Severidad de la regla

Existe una opción para establecer el nivel de 'Severidad' para cada regla. Esto no tiene ningún impacto cuando las reglas del Analizador de mejores prácticas se ejecutan dentro del Tabular Editor. Sin embargo, si implementa un modelo usando la opción Línea de comando y especifica las reglas del Analizador de mejores prácticas para ejecutar, entonces el nivel de gravedad entra en juego. 

Conclusión

Estas reglas se elaboraron a partir de lo aprendido al analizar docenas de modelos tabulares creados por desarrolladores de todo el mundo. Esperamos que estas reglas permitan a las personas producir más fácilmente modelos de mayor calidad en términos de arquitectura, diseño y rendimiento. No dude en escribir sus propias reglas y hacer sugerencias de reglas en GitHub . Simplemente marque el problema / comentario con el prefijo 'BPARules'. 
Fuente:https://powerbi.microsoft.com/en-us/blog/best-practice-rules-to-improve-your-models-performance/
Github: https://github.com/microsoft/Analysis-Services/tree/master/BestPracticeRules

Autor: Michael Kovalsky
Adaptación al Español: Eva Ballester

¿Quieres conocer los fundamentos de Power BI y ser un experto?