Artefx
Hola,
Estoy intentando recrear una consulta SQL que tengo en formato M para poder convertirla en una función dentro de PowerBI, pero tengo un pequeño problema.
WITH RPL (PART, SUBPART, QUANTITY) AS ( SELECT ROOT.[Parent Part No], ROOT.[Component Part No], ROOT.[Qty Required Per Parent] FROM vAssemblies ROOT WHERE ROOT.[Parent Part No] = '52630103' UNION ALL SELECT CHILD.[Parent Part No], CHILD.[Component Part No], CHILD.[Qty Required Per Parent] FROM RPL PARENT, vAssemblies CHILD WHERE PARENT.SUBPART = CHILD.[Parent Part No] ) SELECT DISTINCT PART, SUBPART, QUANTITY FROM RPL ORDER BY PART, SUBPART, QUANTITY;
¿Cómo expresaría lo anterior en M?
Saludos
Lee Barrat
samdthompson
mi forma de hacer esto (probablemente otros) es
1. suelte el SQL como de costumbre,
2. editar consulta,
3. haga clic con el botón derecho en la tabla en el panel de la izquierda en el editor de consultas,
4. seleccione editor avanzado. luego verá la versión m de su SQL.
sulli01
Creo que esta publicación responde perfectamente a tu pregunta: https://blog.crossjoin.co.uk/2017/06/11/query-folding-and-write-your-own-sql-queries-in-power-quer.. .
ImkeF
En respuesta a sulli01
Si sus datos de origen se encuentran en el servidor SQL, la solución más rápida será usar el código SQL como lo ha descrito @Artefx.
Pero si no es así, puede consultar mi solución M aquí: https://www.thebiccountant.com/2017/05/08/dynamic-bill-of-material-bom-solution-in-excel -y-powerbi…
Eric_Zhang
@Artefx
La consulta en su publicación es una consulta recursiva, la sintaxis es simple y fácil de leer. Convertirlo a código «M» solo complica las cosas. ¿Puedo saber por qué tienes que hacer esto? Debido a la limitación de mi conocimiento sobre «M», hasta ahora no tengo idea de cómo convertirlo. Pero si tiene que hacer eso, creo que este video Funciones definidas por el usuario y funciones recursivas de Power Query le daría un comienzo.
¿Puede ser más específico en su escenario, ya que tengo más experiencia en SQL, tal vez podamos lograr su requisito solo con SQL?
samdthompson
mi forma de hacer esto (probablemente otros) es
1. suelte el SQL como de costumbre,
2. editar consulta,
3. haga clic con el botón derecho en la tabla en el panel de la izquierda en el editor de consultas,
4. seleccione editor avanzado. luego verá la versión m de su SQL.
Artefx
En respuesta a samdthompson
Samd Thompson,
Gracias por la respuesta.
El problema con su sugerencia es que el código SQL simplemente está incrustado dentro de una declaración M y no se convierte:
let Source = Sql.Database("red-apps01fmast", "FMAST10", [Query="WITH RPL (PART, SUBPART, QUANTITY) AS#(lf)(#(lf)SELECT ROOT.[Parent Part No], ROOT.[Component Part No], ROOT.[Qty Required Per Parent]#(lf) FROM vAssemblies ROOT#(lf) WHERE ROOT.[Parent Part No] = '536304'#(lf)UNION ALL#(lf) SELECT CHILD.[Parent Part No], CHILD.[Component Part No], CHILD.[Qty Required Per Parent]#(lf) FROM RPL PARENT, vAssemblies CHILD#(lf) WHERE PARENT.SUBPART = CHILD.[Parent Part No]#(lf))#(lf)SELECT DISTINCT PART, SUBPART, QUANTITY#(lf) FROM RPL#(lf) ORDER BY PART, SUBPART, QUANTITY;"]) in Source