Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
Hola a todos,
Estoy intentando recuperar datos de prueba de SQL Server mediante una consulta a continuación (simplificada un poco, la consulta real utiliza más filtros). La tabla SQL contiene millones de filas
let
Source = Sql.Database("DATABASE", "DATABASE",
Query="SELECT
TEST.STATION,
TEST.START_DATE_TIME,
TEST.DATA
FROM TEST
WHERE TEST.STATION = '"&Station&"'
AND TEST.START_DATE_TIME >= DATEADD(day, -"&DaysStart&", GETDATE())
AND TEST.START_DATE_TIME < DATEADD(day, -"&DaysEnd&", GETDATE())"])
in
Source
Sin embargo, es que selecciono el intervalo de fechas a un valor más alto, la consulta se bloquea al evaluar el estado. Esto puede ser una limitación de memoria del servidor.
Puedo resolver este problema creando varias consultas más pequeñas con intervalos de fechas menores y anexándolas. También puedo crear una consulta con varias instrucciones SELECT y UNION ALL entre ellas. Ambas opciones funcionan, pero el código de consulta se vuelve realmente grande y no es fácil de editar.
¿Hay alguna manera de recorrer en bucle la consulta, iterar el parámetro date en cada paso y anexar todos los datos? No pude encontrar una manera sencilla tanto en M como en SQL para esto. Espero que puedas ayudarme.
Una base de datos es una pieza de software que se ejecuta en un ordenador y está sujeta a las mismas limitaciones que todo el software: solo puede procesar tanta información como su hardware es capaz de manejar. La forma de hacer que una consulta se ejecute más rápido es reducir el número de cálculos que el software (y por lo tanto el hardware) debe realizar. Para ello, necesitará una comprensión de cómo SQL realiza cálculos. En primer lugar, vamos a abordar algunas de las cosas de alto nivel que afectarán al número de cálculos que necesita realizar y, por lo tanto, el tiempo de ejecución de las consultas:
El tiempo de ejecución de las consultas también depende de algunas cosas que realmente no se pueden controlar relacionadas con la propia base de datos:
Soy consciente de las limitaciones del servidor, así que estoy tratando de reducir los cálculos del servidor necesarios para las consultas.
Como dije antes me gustaría hacer un bucle de la consulta, iterar el parámetro date en cada paso y anexar todos los datos. ¿Cómo podría lograrse esto mediante power BI?
Encontré una solución yo solo. Creé una función:
let Loaddata= (Days as text) =>
let
Source = Sql.Database("DATABASE", "DATABASE",
Query="SELECT
TEST.STATION,
TEST.START_DATE_TIME,
TEST.DATA
FROM TEST
WHERE TEST.STATION = '"&Station&"'
AND TEST.START_DATE_TIME >= DATEADD(day, -"&Days&", GETDATE())
AND TEST.START_DATE_TIME < DATEADD(day, -"&Days&"+1, GETDATE())"])
in
Source
in Loaddata
Y lo usó como una columna personalizada para la lista. Después de expandirlo obtuve el resultado deseado
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |