Explicación de la fórmula M – Table.SelectRows

Un usuario Pregunto ✅

jdusek92

Hola,

He aplicado con éxito la solución de esta publicación.

Ahora me gustaría entender la lógica.

guión:

(simplificado)

  1. tabla de datos con ID de empleados, Mes y valor para el mes respectivo
  2. tabla de datos de corrección con ID, valor correcto, «válido desde el mes» y «válido al mes«

La tarea es corregir los datos con los valores de la tabla de corrección, para el ID y los meses dados

Tengo esta fórmula M, que OBRAS:

let
    Source = Excel.CurrentWorkbook(){[Name="kons"]}[Content],
    zmenyBuf = Table.Buffer(zmeny),
    #"Added Custom" = Table.AddColumn(Source, "NovySl", (tempNazev) => Table.SelectRows(zmenyBuf,each tempNazev [m]>= [od] and  tempNazev [m]<= [do] and tempNazev [ID]=[ID]), Value.Type(zmenyBuf)),
    #"Expanded zmeny" = Table.ExpandTableColumn(#"Added Custom", "NovySl", {"hod"}, {"NovySl.hod"})
in
    #"Expanded zmeny"

Me gustaría entender esta parte:

cual es el proposito de tempNazev ? ¿Es solo un marcador de posición?

(tempNazev) => Table.SelectRows(zmenyBuf,each tempNazev [m]>= [od] and  tempNazev [m]<= [do] and tempNazev [ID]=[ID]), Value.Type(zmenyBuf)

Un cordial saludo,

Jakub

En respuesta a jdusek92

@ jdusek92,

No es un nombre de función, es un parámetro de entrada de la función, puede consultar los tutoriales sobre la función personalizada en Power query.

http://radacad.com/writing-custom-functions-in-power-query-m

https://blogs.msdn.microsoft.com/mvpawardprogram/2013/08/19/creating-power-query-functions/

Equipo de apoyo de la comunidad _ Jimmy Tao

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

@ jdusek92,

Según tengo entendido, esto se debe a que usa una función Table.Buffer antes del paso de agregar columnas. Table.Buffer será bIntroduzca una tabla en la memoria, aislándola de los cambios externos durante la evaluación, lo que significa que es una tabla temporal y puede llamarla varias veces sin cargar la tabla en la memoria nuevamente. Es muy similar a un parámetro de función que tampoco está en la memoria del disco.

Entonces, esta pregunta se puede convertir a «Cuándo y dónde deberíamos usar un búfer en la consulta de energía», puede consultar casos similares a continuación:

https: //community.powerbi.com/t5/Desktop/How-to-Improve-Query-Reference-performance-for-large-tables …

https: //community.powerbi.com/t5/Desktop/Queries-over-large-data-tables/mp/26783/highlight/true#M85 …

Equipo de apoyo de la comunidad _ Jimmy Tao

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

jdusek92

En respuesta a v-yuta-msft

@ v-yuta-msft muchas gracias por tu respuesta.

Tengo la idea de tablas almacenadas en búfer. En mi ejemplo, la tabla almacenada en búfer se llama zmenyBuf.

Pero todavía no estoy seguro de esta sintaxis:

(tempNazev) => Table.SelectRows(zmenyBuf,each tempNazev [m]>= [od] and  tempNazev [m]<= [do] and tempNazev [ID]=[ID]), Value.Type(zmenyBuf)

cual es el nombre de la función de (tempNazev) => ?

¿Podría proporcionar algún enlace con más información sobre esta sintaxis?

Un cordial saludo

En respuesta a jdusek92

@ jdusek92,

No es un nombre de función, es un parámetro de entrada de la función, puede consultar los tutoriales sobre la función personalizada en Power query.

http://radacad.com/writing-custom-functions-in-power-query-m

https://blogs.msdn.microsoft.com/mvpawardprogram/2013/08/19/creating-power-query-functions/

Equipo de apoyo de la comunidad _ Jimmy Tao

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *