Table of Contents
ToggleTomado de Melissa Dekorte, Enterprise DNA Expert 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.