Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
JDanielHarvey
Regular Visitor

Funciones anidadas en PowerQuery

Me encontré con este video en YouTube, donde se usó una función anidada y no puedo entender cómo los parámetros de la función anidada están recibiendo sus valores. Tiene sentido que pueda hacer referencia a variables almacenadas previamente en los parámetros, pero estos parámetros están formados y asumo que están recibiendo sus valores de los dos pasos anteriores respectivamente, pero supongo que no me di cuenta de que las funciones podrían eso. Por favor, hágamelo saber si estoy malinterpretando lo que está sucediendo en el adjunto M.

fBulkReplace.png

5 REPLIES 5
MFelix
Super User
Super User

Hola @JDanielHarvey ,

La mejor persona para explicar esto es @ImkeF uno de los mejores (si no el mejor) usuario en el idioma M en la comunidad.

@ImkeF puedes ayudar en esto.


Regards

Miguel Félix


Did I answer your question? Mark my post as a solution!

Proud to be a Super User!

Check out my blog: Power BI em Português



Ok suena bien @MFelix . A medida que pasé más tiempo revisando cómo funcionan las funciones y los parámetros anoche, tiene sentido que (DataTableTemp, n) están recibiendo sus datos de pasos anteriores en la consulta sub 'let'. Este parece ser el caso de cada función cuando se realiza una función 'cada una' escrita manualmente con un outter y una tabla interna como

• Table.AddColumn('"previousStep", "NewColName", (OT) ?> Table.AddColumn((OT)[NestedTableColumn], "length", (IT) ?> Text.Length((IT)[column]), Int64.Type))


Por lo tanto, en la consulta anterior, (OT) recibe sus datos de la tabla "previousStep" que, a continuación, se pueden hacer referencia dentro de la anidada Table.AddColumn pero el (IT) remite los datos de la tabla anidada de (OT)[NestedTableColumn]

En cuanto a la consulta de la imagen y mi pregunta sobre (DataTableTemp, n) ambos están recibiendo sus valores de DataTableTemp - FindReplaceList y n - Counter. Sólo un pequeño contador intuitivo b / c al principio usted piensa que sería capaz de llamar a esas variables dentro de los parámetros, pero eso no es cómo funcionan los parámetros Supongo.

Lo único que todavía no parece entender ahora es:

Línea 18 de la imagen. Salida: BulkReplaceValues(DataTable, 0). si n hace el contador - 1 y el resultado es "ReplaceTable" se proporciona que es DataTableColumn transformado con todas las tranformaciones no debería el último paso definido ser algo así como:
Salida: BulkReplaceValues(ReplaceTable, n)? ¿Por qué está en la imagen BulkReplaceValues(DataTable, 0)? ¿Qué es el cero y por qué DataTable?

Espero que @ImkeF pueda ayudar a arrojar algo de luz sobre este 😊

Esta imagen para ayudar a mostrar los datos reales utilizados en el videofBulkReplace 01.png

Hola @JDanielHarvey ,

no estoy seguro de entender su pregunta y por desgracia no soy capaz de ver los números de fila.

Pero como te has dado cuenta, esta es la definición de una función anidada.

Pero también contiene una llamada / invocación de una función: Salida - BulkReplaceValues(DataTable, 0)

Allí, DataTable se le dará a conocer con el valor de la llamada de función externa ("Changed Type", como desde la última imagen que ha publicado)

Pero el 0 está codificado de forma rígida como un valor inicial. La función interna recursiva "BuldReplaceValues" siempre comenzará con ese valor y contará desde allí.

Imke Feldmann (The BIccountant)

If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!

How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries

@ImkeF Sí, lamento que no hubiera números de fila, conté manualmente ese lol. Odio el editor de texto para PowerQuery - bastante seguro de que hay un SDK para escribir desde VisualStudio, al menos eso es lo que escuché de Chris Webb o los chicos de PragmaticWorks, pero parece estar mejorando. Por el bien de otros lectores, he actualizado la imagen para incluir algunos números de fila de cambio con mis habilidades de edición de imágenes tan excelentes 😅

Interesante... Así que esto no es diferente de una 'funciones de primera clase' o función 'decorators', o al menos pensar en ello de esa manera me ayuda a entender la lógica de la consulta. Así que cuando la variable 'Output' llama a la función BulkReplaceValues, el resultado es de hecho 'ReplaceValue' almacenado en 'Output' una vez que se llama en la línea 23, ¿es así?

No me di cuenta de que podía usar decorador como sintaxis para referirse a las funciones más adelante en la consulta - eso es bastante impresionante!

Gracias por su ayuda para entender esto!

Hola @JDanielHarvey ,

estar de acuerdo en que hay algunas cosas que mejorar en el editor de consultas, pero es posible que desee echar un vistazo a las opciones 😉

image.png

Como editor externo puedo recomendar Visual Studio Code. Hay una buena extensión y es mucho más estable que Visual Studio.

Imke Feldmann (The BIccountant)

If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!

How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.