Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
3 years ago

Consulta no admitida en modo DirectQuery - SQL con subconsulta

Estoy intentando organizar los datos de un servidor SQL eliminando las filas que contienen duplicados en una determinada columna. Al usar la función normal de quitar duplicados después de una simple conexión de base de datos en Power Query, recibí el error "no compatible con DirectQuery". Pensé que podría escribir una instrucción SQL y usar la conexión avanzada a la base de datos para evitar este error:

Seleccione * de la base de datos como db,
(seleccione min(dateandtime) como dateandtime, num, seq, type from database
donde seq = 1
y tipo = 'A'
agrupar por seq, num, type) Min_Date
donde db.dateandtime = min_date.dateandtime

Pero esto también arroja el error no soportado. Sé que una solución es cambiar a una conexión de importación en lugar de DirectQuery, pero esa ruta es altamente indeseable. Cualquier ayuda que pueda dar en una solución alternativa para este método de eliminación de duplicados sería muy apreciada.

Gracias

4 Replies

  • @nhallmark,

    Cambié la cláusula SELECT en su SQL personalizado a "Select db.*" para evitar devolver las columnas dos veces, y se ejecutó correctamente. ¿Lo confirmaría? Si esto no funciona, proporcione datos de muestra y una captura de pantalla del error.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hice el cambio y la consulta se ejecutó, pero una vez que intenté hacer cualquier cambio básico, como ordenar o filtrar una columna, el error se arroja nuevamente. Aquí hay algunos datos de muestra que estoy utilizando:

      Este es el SQL exacto que ejecuté:

      Seleccione stl.dateandtime, stl.htnum, stl.seq, stl.atype, stl.ccode de lab_stl stl,
      (seleccione min(dateandtime) como dateandtime, htnum, seq, atype de lab_stl
      donde atype = 'L'
      y seq = 2

      y htnum < '100'
      grupo por seq, htnum, atype) Min_Date
      donde stl.dateandtime = min_date.dateandtime;

      La consulta funcionó bien, pero cuando ordené por la columna ccode en orden descendente en (puede ver el paso dado en el extremo derecho) se arroja el error (barra amarilla sobre los datos). Sé que puedo hacer ajustes como este en SQL, pero necesito poder hacer ajustes dentro de Power BI porque deseo combinar datos de dos orígenes diferentes en una tabla maestra y no puedo hacerlo en SQL y usarlo en Power BI (creo).

      ¡Gracias por su ayuda!

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        @nhallmark,

        Cualquier paso M después de un paso SQL personalizado evitará el plegamiento de la consulta. Aquí hay una manera de hacerlo en M (sin SQL personalizado).

        1. Conéctese a la tabla (DirectQuery). Nombre de la consulta: lab_stl_all

        2. Cree una consulta Group By basada en lab_stl_all (por referencia). Nombre de la consulta: lab_stl_group_by

        3. Cree lab_stl de consulta usando "Combinar consultas como nuevas". Esta será una unión interna entre lab_stl_all y lab_stl_group_by. Utilice Ctrl y haga clic para seleccionar varias columnas de unión.

        4. Resultado:

        Tenga en cuenta que la tabla resultante utiliza el modo importar.