March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
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.
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
Proud to be a Super User!
Check out my blog: Power BI em PortuguêsOk 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 video
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 😉
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
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.