Consideraría que el nivel de dificultad de este tutorial es intermedio porque si tiene alguna experiencia con los códigos M, le resultará fácil seguirlo. Si no tiene ninguna experiencia relacionada, le sugiero que busque primero en los códigos M para que le resulte más fácil comprender los conceptos presentados aquí.
Si observa el panel Pasos aplicados a la derecha, solo hay un paso. Muestra la fuente de esa consulta.
Por lo tanto, si desea desarrollar el código M para esta tabla de fechas, deberá 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 sus cambios. Dará lugar a un error en la consulta de la tabla en sí, luego tendrá 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.
Si observa los Pasos aplicados a la derecha, verá que hay varios pasos enumerados esta vez.
Esto significa que a medida que desarrolle el código M de su tabla de fechas, verá inmediatamente los resultados de sus cambios en esta consulta de tabla.
Más importante aún, cada vez que su cambio resulte en un error, puede identificar fácilmente el paso que causó el error. Esto hace que sea más fácil resolver el problema.
Aplicando El Código M
El código M de la tabla de fechas se puede encontrar en el foro LuckyTemplates. Está bajo el tema Tabla de datos extendida Power Query M Function dentro de M Code Showcase.
El código M está en la parte superior. Resaltaré todo el código y lo copiaré.
Luego, crearé una nueva consulta en blanco.
Abriré mi Editor avanzado y pegaré ese código.
Como veo que no se han detectado errores, haré clic en Listo.
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.
Convertir la función en una tabla
Para hacer que esto devuelva una tabla en lugar de una función, necesitaría hacer algunos cambios en el código M en el Editor avanzado.
Mirando el código M, puedo ver fácilmente al menos dos entornos según la cantidad de declaraciones 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 simplemente eliminar esta última cláusula para convertir esto en una tabla.
Pero no voy a hacer eso. En su lugar, voy a comentar eso agregando dos barras delante de la última cláusula.
También voy a hacer eso para la primera instrucció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 declararse 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. Entonces, 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.
Luego copiaré y pegaré la siguiente variable, que es EndDate.
Sé que EndDate requeriría previsión. Es por eso que quiero que esta fecha de finalización sea siempre 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.
Nuevamente, 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.
Nuevamente, estoy terminando esa línea con una coma.
La siguiente variable es un parámetro opcional llamado FYStartMonth.
Así que voy a copiar ese nombre y pegarlo.
Observe que apareció un subrayado rojo debajo de FYStartMonth debajo de la variable que acabo de pegar.
Esto se debe a que sus nombres coinciden. No fue un problema cuando estaban en ambientes separados. Pero los nombres de las 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.
En lugar de llamarlo FYStartMonth, lo llamaré FYStartMonthNum.
No voy a asignar un valor para esta variable, así que solo voy a poner nulo.
Debido a que cambié el nombre de la variable, también tengo que cambiar el nombre donde se hace referencia a este parámetro.
Volviendo a la variable, cerraré esa línea agregando una coma al final.
El siguiente parámetro es la lista de vacaciones opcional. Voy a copiar y pegar eso también, y también lo declararé como nulo.
Lo mismo ocurre con el WDStartNum. Lo copiaré y pegaré, luego lo declararé como nulo.
Para marcar dónde comienza el código de la tabla de fechas, agregaré otro comentario aquí.
Una vez que presione Listo, verá que la consulta ahora devuelve el tipo correcto.
Ahora tengo una tabla en lugar de una función.
Dentro del panel Pasos aplicados, también puedo ver todos los pasos que componen la consulta.
Si quiero hacer algún cambio en la tabla de fechas, es bastante fácil usar la cinta para modificar o agregar pasos. Por cada cambio que realice, también veré los resultados en la consulta de inmediato.
Convertir la consulta de tabla de nuevo en una función
Digamos que quiero volver a convertir la consulta de la tabla de fechas en una función. Es solo una cuestión de modificar algunas cosas dentro del código M para revertir los cambios que hice anteriormente.
Volveré al Editor avanzado y eliminaré las barras antes de la instrucción let externa.
A continuación, quitaré las barras antes de las declaraciones in.
Luego comentaré el bloque variable que agregué anteriormente. Así que agregaré una barra oblicua y un asterisco aquí.
Luego un asterisco y una barra oblicua después del bloque variable.
¿Recuerdas cuando cambié esta línea de código anteriormente debido a FYStartMonthNum?
Voy a copiar esa línea de código. Luego, agregaré una nueva línea y la pegaré.
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 convertiré de nuevo en FYStartMonth.
Una vez que presione Listo, la consulta de la tabla volverá a convertirse en una función.
Una vez más, les mostré cuán convenientes son los códigos M, especialmente en casos como estos en los que convertimos una función en una consulta de tabla y viceversa. Siempre que tenga acceso al código M que tenemos en el foro LuckyTemplates, puede usarlo en escenarios como estos en el futuro.
También puede navegar a través de otros códigos M que puede usar en otras situaciones en M Code Showcase en . Es una comunidad colaborativa, por lo que puede leer los comentarios para obtener otras ideas de nuestros expertos y miembros.