Table of Contents
ToggleTomado de Greg Philps en Enterprise DNA
Para convertir un código M utilizado como lenguaje de programación en Power BI, en una tabla de fechas sigamos los siguientes pasos, para un acertado modelamiento en Inteligencia de Negocios es indispensable contar con la tabla de fechas bien definida.
Esta es la consulta de tabla de fechas y la consulta de función invocada.
Si observa el panel Pasos aplicados a la derecha, solo hay un paso. Muestra el origen de esa consulta.
Por lo tanto, si desea desarrollar el código M para esta tabla de fechas, tendría que cambiar entre la función y la consulta de tabla para ver los cambios que aplique.
Esto significa que es más complicado lidiar con los errores causados por cualquiera de los cambios. Esto dará lugar a un error en la propia consulta de tabla, entonces tendría que buscar a través de líneas de código para corregir el error.
La página siguiente muestra la consulta de fecha que devuelve una tabla en lugar de una función.
Mirando los pasos aplicados a la derecha, verá que hay varios pasos enumerados esta vez.
This means that as you develop your date table M code, you’ll immediately see the results of your changes in this table query.
More importantly, whenever your change results in an error, you can easily identify the step that caused the error. This makes it easier to resolve the issue.
The date table M code can be found in the Enterprise DNA Forum. It’s under the topic Extended Data Table Power Query M Function within the M Code Showcase.
El código M está todo el camino hasta la parte superior. Resaltaré todo el código y lo copiaré.
A continuación, crearé una nueva consulta en blanco.
Abriré mi Editor avanzado y pegaré ese código.
Puesto que veo que no se han detectado errores, voy a hacer clic en hecho.
Permítanme cambiar el nombre de esto y llamarlo Fechas.
Esta consulta devuelve una función, pero lo que quiero es una tabla.
Para realizar los cambios necesarios, volveré al Editor avanzado.
Para que esto devuelva una tabla en lugar de una función, tendría que realizar algunos cambios en el código M en el Editor avanzado.
Mirando el código M, puedo ver fácilmente al menos dos entornos basados en el número de instrucciones let.
Cada instrucción let tiene su propia cláusula in, que se puede encontrar en la parte inferior.
Podría pensar que sería más fácil eliminar esta última cláusula en la cláusula para convertir esto en una tabla.
Pero no voy a hacer eso. En su lugar, voy a comentar que hacia fuera agregando dos barras diagonales delante de la última cláusula in.
También voy a hacer eso por la primera declaración let. Esto lo hace inactivo.
Debajo de la instrucción let interna, voy a crear una sección para declarar mis parámetros porque todavía necesito pasar esos parámetros a este código.
Voy a marcar dónde deben ser declaradas esas variables.
Ahora voy a copiar la primera variable de la instrucción let externa y pegarla en el espacio.
En mi conjunto de datos, los datos históricos no van más allá de 2017. Por lo tanto, para pasar el valor a la variable StartDate, puedo usar la fecha intrínseca. Pondré el 1 de enero, luego terminaré la línea con una coma.
A continuación, copiaré y pegaré la siguiente variable, que es EndDate.
Sé que EndDate requeriría previsión. Es por eso que quiero que este EndDate siempre sea el final del próximo año.
Ya tengo una variable dentro de mi código M para CurrentDate, así que voy a hacer referencia a eso.
Una vez más, usaré la fecha intrínseca. Extraeré Date.Year y usaré CurrentDate como el valor del año +1. También quiero que la fecha sea el 31 de diciembre.
Una vez más, estoy terminando esa línea con una coma.
La siguiente variable es un parámetro opcional denominado FYStartMonth.
Así que voy a copiar ese nombre y pegarlo.
Observe que un subrayado rojo apareció debajo de FYStartMonth debajo de la variable en la que acabo de pegar.
Esto se debe a que sus nombres coinciden. No era un problema cuando estaban en entornos separados. Pero los nombres de variables dentro de un solo entorno tienen que ser únicos. Esto significa que necesito cambiar el nombre de la nueva variable que acabo de pegar.
Instead of calling it FYStartMonth, I’m going to call it FYStartMonthNum.
I’m not going to assign a value for this variable, so I’m just going to put null.
Because I changed the name of the variable, I also have to change the name wherever this parameter was referenced.
Going back to the variable, I’ll close that line by adding a comma at the end.
The next parameter is the optional Holidays list. I’m going to copy and paste that in as well, and will also declare it as null.
The same thing goes for the WDStartNum. I’ll copy and paste it, then declare it as null.
To mark where the date table code starts, I’m going to add another comment here.
Once I press Done, you’ll see that the query now returns the right type.
I now have a table instead of a function.
Inside the Applied Steps pane, I can also see all the steps that make up the query.
If I want to make any changes on the date table, it’s easy enough to use the ribbon to modify or add steps. For each change that I make, I will also see the results in the query immediately.
Let’s say I want to turn the date table query back into a function. It’s just a matter of tweaking a few things within the M code to reverse the changes I made earlier.
I’ll go back into the Advanced Editor and remove the slashes before the outer let statement.
Next, I’m going to remove the slashes before the in statements.
A continuación, comentaré el bloque de variables que agregué anteriormente. Así que voy a añadir una barra y un asterisco aquí.
A continuación, un asterisco y una barra diagonal después del bloque de variables.
¿Recuerdas cuando cambié esta línea de código anteriormente debido a FYStartMonthNum?
Voy a copiar esa línea de código. A continuación, agregaré una nueva línea y la pegaré.
Voy a cortar el primero (que es donde hice los cambios en el nombre de la variable anteriormente).
Luego, en el segundo, encontraré los nombres de las variables editadas.
Y los volveré a convertir en FYStartMonth.
Una vez que presione Listo, la consulta de tabla se convertirá una vez más en una función.
Una vez más, le he mostrado lo convenientes que son los códigos M, especialmente en casos como estos, donde convertimos una función en una consulta de tabla, y viceversa. Siempre y cuando tenga acceso al código M que tenemos en enterprise DNA Forum, puede usarlo en escenarios como estos en el futuro.
También puede navegar a través de otros códigos M que puede utilizar en otras situaciones en la exposición de código M en el foro de ADN empresarial. Es una comunidad colaborativa, por lo que puede leer los comentarios de otras ideas de nuestros expertos y miembros.Esta no es de ninguna manera una lista exhaustiva ni siquiera las mejores prácticas, sino simplemente las que he incorporado a mi propio desarrollo. He tratado este tema con otros usuarios de Power BI para obtener su información, pero de nuevo, estas son mis propias conclusiones. Además, un procedimiento recomendado de Power BI evolucionará con el tiempo a medida que se introduzcan funcionalidades nuevas y mejoradas tanto en la aplicación Power BI como en la comunidad de Power BI.
Me pierdo fácilmente al hacer clic en gráficos y varios elementos visuales en una página, y hay momentos en que no sé qué filtros he aplicado. Esta es la razón por la que me gusta crear un marcador del estado inicial de un informey, a continuación, crear un botón de segmentación de datos de restablecimiento para que haya una manera de volver fácilmente al estado del informe inicial.
If report space is available, I like to add a slicer selections echo area to display all the current slicer selections. One of the “features” of Power BI is that when you select a single item from a dropdown slicer, that value is displayed.
But when you select more than one value, Power BI displays multiple selections, which doesn’t give the user confidence when exploring insights.
I used an example of this technique in my submission to the Enterprise DNA Challenge #3, and there’s a YouTube video showcasing this technique.
Otro procedimiento recomendado de Power BI es agregar interactividad a los botones. Puede hacerlo modificando el comportamiento Al mantener el mouse a través de los botones. Puede cambiar muchas propiedades, como el tamaño de fuente, la familia de fuentes, el color del texto, el color de relleno o el ancho de línea. Recientemente mostré algunas de estas técnicas en otro video de YouTube de Enterprise DNA.
En mi ejemplo, cuando pase el cursor sobre cualquiera de estos botones, notará una ligera diferencia en el comportamiento de los elementos visuales.
Cuando seleccione un objeto visual, vaya al panel de formato y vaya a Relleno. El estado predeterminado es blanco y el activado es de un color diferente.
Otra forma de aumentar la facilidad de uso del informe es asegurarse de que los objetos visuales se ven según lo previsto tanto en la página del informe como cuando se utiliza el modo de foco.
Por ejemplo, cuando se usa un fondo oscuro y texto blanco, no es raro que el texto visual no sea visible cuando está en modo de foco. Una forma de controlar esto es aplicar un color de fondo oscuro en el nivel visual y establecer la transparencia de fondo en cero.
Podemos ver el modo de enfoque en el gráfico de donuts izquierdo en este ejemplo. También podemos ver que ninguna de las etiquetas de detalle son visibles.
Y si nos acercamos al panel de formato, veremos en Fondo que el color es blanco y la transparencia está establecida en 100.
Para el gráfico de donuts de la derecha, usamos el mismo color que el fondo y estableciamos la transparencia en cero. Cuando usamos el modo de enfoque en este escenario, realmente podemos ver las etiquetas de detalle.
También soy un gran fan del cuadro de texto narrativo inteligente visual en Power BI. Con frecuencia los uso para mostrar texto estático con medidas dinámicas.
El tipo de datos de una columna es importante. Muchas veces, los datos se cargarán en un archivo de Power BI. Aunque los datos pueden parecer correctos, el procedimiento recomendado es comprobar siempre las columnas que contienen los datos de fecha y asegurarse de que son del tipo de datos de fecha. Si no es así, asegúrese de que se convierten correctamente.
Como ejemplo, echemos un vistazo a la siguiente tabla. Hay tres columnas aquí, y parece que los tres contienen los mismos datos. Solo la primera columna es realmente el tipo de datos de fecha, por lo que se debe usar en cualquier cálculo de fecha.
Pasemos a la vista de datos. Podemos ver que la primera columna es un tipo de datos de fecha.
La segunda columna es un tipo de datos de fecha y hora.
Y la tercera columna es un tipo de datos de texto.
Puede convertir el tipo de una columna en la lista desplegable junto a Tipo de datos.
Esto también sucede con frecuencia con las columnas que contienen datos enteros o decimales. Es posible que la columna se haya importado e identificado correctamente como un número entero o un número decimal, o que tenga un tipo de datos de texto y que simplemente parezca un entero o un decimal. Es importante asegurarse de que los números son de hecho números en el modelo de datos.
Otra cosa importante que hacer es identificar la categoría de datos. Esto tiene una importancia especial con los datos de ubicación, ya que permite a los servicios de asignación de Power BI identificar las columnas correctamente. Las columnas que contienen datos de ciudad, estado, país, latitud, longitud, etc., deben identificarse como tales.
Vayamos a la tabla Regiones. Podemos ver que City no tiene una categoría de datos.
Podemos aplicar la categoría de datos de Ciudad a esta columna haciendo clic en la lista desplegable. Luego veremos un icono de globo en el campo junto a City.
Todos los objetos visuales de una página de informe interactúan entre sí de forma predeterminada en Power BI. El desarrollador de informes puede controlar qué objetos visuales secundarios se ven afectados por las selecciones en un objeto visual principal.
Para ello, seleccione el objeto visual principal en la página del informe y, a continuación, haga clic en el botón Editar interacciones de la barra de herramientas de formato. Vaya a cada objeto visual secundario y use el icono de filtro resaltado o ninguno para habilitar o deshabilitar las interacciones como desee.
En el ejemplo anterior, mi objeto visual principal es la tabla de ventas de la izquierda. Voy a Formato para activar Editar interacciones.
Selecciono Filtro para cada uno de los tres gráficos de barras en la fila superior. Luego seleccionaré ninguno para cada uno de los gráficos de barras en la fila inferior.
De esta manera, cuando hago una selección en mi objeto visual principal, las filas superiores cambian, pero las filas inferiores no.
Sam McKay tiene un excelente ejemplo de esta técnica en el cambio de las interacciones de sus efectos visuales.
Siempre que uso el panel de selección para asignar un nombre a todos los objetos visuales de la página del informe, el desarrollo iterativo es más fácil porque puedo seleccionar los objetos visuales con fines de ajuste. El orden en el panel de selección me permite ver lo que está delante o encima de otro. Y de nuevo, el orden se puede ajustar fácilmente.
Tengo cuatro objetos visuales en este ejemplo de página de informe. Todo se denomina incluso si el título no se muestra en el informe.
Por lo general, hay varias columnas que son necesarias en el conjunto de datos, pero que podrían no ser útiles para los consumidores de informes. Se considera una buena práctica ocultar todas las columnas a menos que se soliciten específicamente.
Por lo general, oculto columnas de ciertos tipos, incluidas las columnas de clave (ya que solo se usan para las relaciones), las columnas de ordenación (solo se usan para ajustar el tipo de columnas de presentación) y todas las columnas que se usan solo para medidas (impiden que los usuarios usen las «columnas desnudas» y los elementos visuales).
Puede alternar el panel de campos para ver las columnas. Haga clic con el botón derecho en cualquier lugar del panel de campos y elija Ver oculto.
Hay ciertos puntos que incluyo en todos mis informes. Quiero asegurarme de que el informe y la versión correctos se están probando, implementando y utilizando. Esta es la razón por la que una de las primeras preguntas que hago a cualquier consumidor de informes cuando informa de un problema es ¿cuál es el ID de informe,la versióny la fecha de la versión?
Una vez que se han dado estos detalles y he confirmado que es la iteración correcta del informe, solo entonces procederé con el análisis del problema. Si el usuario, por ejemplo, está usando una versión antigua del informe, le diré que pruebe la versión actual y vea si su problema persiste.
Este procedimiento recomendado de Power BI facilita la identificación de informes que necesitan ajustes cuando cambian las reglas de negocio. También da a los consumidores del informe la confianza de que se han aplicado los cambios en las reglas de negocio. Esto beneficia enormemente tanto a los autores del informe como a los consumidores del informe.
Hay algunas cosas que puede hacer para reducir el tiempo necesario para representar una página de informe después de realizar una selección de filtro o segmentación de datos. Puede intentar minimizar el número de objetos visuales en una página de informe.
Puede hacerlo combinando objetos visuales y reemplazando diferentes objetos visuales de tarjeta con una sola tarjeta de varias filas. También puede utilizar un objeto visual de matriz para seleccionar los valores que se mostrarán en las filas. Puede reemplazar muchos gráficos de líneas diferentes con un solo gráfico de líneas utilizando múltiplos pequeños.
Vayamos a Power BI por un segundo. Si vamos a la página de rendimiento, podemos ver que la matriz normal (izquierda) tiene columnas para todos los valores. También puede utilizar columnas que muestren los valores de las filas (derecha).
Otro procedimiento recomendado de Power BI para reducir el número de objetos visuales es agregar nuevas páginas y mover objetos visuales a estas nuevas páginas. También puede utilizar segmentaciones de datos del tipo desplegable.
Las segmentaciones de datos de tipo de lista deben emitir una consulta cada vez que se abre una página de informe, mientras que las segmentaciones de datos que tienen el tipo desplegable solo emiten consultas cuando se realiza realmente una selección.
Además, asegúrese de contraer el panel de filtro antes de guardar el informe de Power BI. Un panel de filtro expandido emite una consulta cada vez que se abre una página, mientras que un panel de filtro contraído solo emite consultas cuando se expande.