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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
eddysern
Frequent Visitor

Modificar SQL Query autogenerado por componentes visuales

Buen día a todos.

 

En un informe tipo DirectQuery, por medio del Analizador de Rendimiento, se ha capturado la sentencia SQL (query) que PowerBI envía a la base de datos para mostrar los visuales. Este query contiene ciertas sentencias que afectan el rendimiento y el tiempo de respuesta.

 

Por ejemplo, para un gráfico de barras apiladas, utiliza las funciones CAST y TOP. Si pruebo el query ejecutándolo directamente en la base de datos sin modificar nada, dura aproximadamente 2.55 segundos. Si modifico el query retirando las funciones CAST y TOP, se obtiene el mismo conjunto de datos, pero en un tiempo de 0.37 segundos (casi 7 veces más rápido).

 

¿Es posible modificar la sentencia (o query SQL) que autogenera Power BI y envía a la base de datos para obtener el conjunto de datos y contruir el componente visual?.

 

Gracias de antemano por sus comentarios.

 

// Este es el query que se autogenera. Se ejecuta en 2.55 segundos. Utiliza TOP y CAST.
SELECT
TOP 1000001 "t1"."estado_cliente",
CAST(COUNT("t1"."codigo_cliente") AS BIGINT)
AS "a0"
FROM
(

SELECT
CAST("codigo_cliente" AS VARCHAR(4000))
AS "codigo_cliente",
CAST("estado_cliente" AS VARCHAR(4000))
AS "estado_cliente"
FROM
(
(select "$Table"."apellidos_cliente" as "apellidos_cliente",
"$Table"."nombres_cliente" as "nombres_cliente",
"$Table"."direccion_cliente" as "direccion_cliente"
from "Base_datos"."tabla_clientes" "$Table")
)
AS "t1"
)
AS "t1"
GROUP BY "t1"."estado_cliente"


// Si retiro las funciones CAST y TOP. Se ejecuta en 0.37 segundos. Retirando TOP y CAST.
SELECT
"t1"."estado_cliente",
COUNT("t1"."codigo_cliente")
AS "a0"
FROM
(

SELECT
"codigo_cliente"
AS "codigo_cliente",
"estado_cliente"
AS "estado_cliente"
FROM
(
(select "$Table"."apellidos_cliente" as "apellidos_cliente",
"$Table"."nombres_cliente" as "nombres_cliente",
"$Table"."direccion_cliente" as "direccion_cliente"
from "Base_datos"."tabla_clientes" "$Table")
)
AS "t1"
)
AS "t1"
GROUP BY "t1"."estado_cliente"

 

 

1 ACCEPTED SOLUTION
lbendlin
Super User
Super User

Levante esto como una idea en la página de ideas. Actualmente no es posible afectar a ninguna de las consultas plegadas.

View solution in original post

2 REPLIES 2
lbendlin
Super User
Super User

Levante esto como una idea en la página de ideas. Actualmente no es posible afectar a ninguna de las consultas plegadas.

Muchas gracias @lbendlin . Lo haré.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors