Convertir de SQL a M

Un usuario Pregunto ✅

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…

@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

Deja un comentario

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