The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.
Estoy cargando datos desde una vista en una base de datos de Oracle, usando Power BI Desktop y el modo de importación. Sin embargo, los datos no son los mismos si ejecuto la consulta en Oracle Developer que cuando la cargo en Power Query. Faltan la mayoría de los datos en Power BI. Quiero cargar los datos de un año completo, pero la primera fecha de carga en Power BI es julio.
Copié la consulta nativa de Power Query y la ejecuté en Oracle Developer, y dio diferentes resultados en Oracle Developer. Aquí no faltaron los datos. Consulta nativa básicamente las listas de las columnas en mi vista, por lo que no hay ninguna transformación allí.
Para depurar, modifiqué la vista para que solo contenga datos antes de julio y, en este caso, no se carga nada en Power BI. Los datos anteriores a julio siguen siendo visibles en Oracle Developer.
Aquí está el código M de mi consulta:
let
Source = Oracle.Database("dwh1_high", [HierarchicalNavigation=true]),
TEST2 = Source{[Schema="TEST2"]}[Data],
REP_COMPLAINTS_V = TEST2{[Name="REP_COMPLAINTS_V"]}[Data]
in
REP_COMPLAINTS_V
Todo esto es muy raro y me parece un error. ¿Alguna idea sobre cómo solucionarlo?
Solved! Go to Solution.
Después de un poco de depuración, investigación y varios ensayos, logré encontrar la causa raíz del problema.
En la vista, hay una función que convierte las fechas en números de día de la semana. Si se utiliza to_char(sysdate, 'D'), la salida de esta función puede ser diferente según el origen de la consulta y la configuración de NLS que se establezca en ese servidor. Por lo tanto, se debe usar una función diferente: TRUNC(sysdate) - TRUNC(sysdate, 'IW'), luego debe agregar +1 (si desea tener 1 para el lunes y 7 para el domingo).
Ver más detalles aquí: https://stackoverflow.com/questions/14517761/using-oracle-sql-how-does-one-output-day-number-of-week...
Después de un poco de depuración, investigación y varios ensayos, logré encontrar la causa raíz del problema.
En la vista, hay una función que convierte las fechas en números de día de la semana. Si se utiliza to_char(sysdate, 'D'), la salida de esta función puede ser diferente según el origen de la consulta y la configuración de NLS que se establezca en ese servidor. Por lo tanto, se debe usar una función diferente: TRUNC(sysdate) - TRUNC(sysdate, 'IW'), luego debe agregar +1 (si desea tener 1 para el lunes y 7 para el domingo).
Ver más detalles aquí: https://stackoverflow.com/questions/14517761/using-oracle-sql-how-does-one-output-day-number-of-week...
Queríamos comprobar amablemente si todo funciona como se esperaba después de probar la solución sugerida. Si hay algo más con lo que podamos ayudar, no dude en preguntar.
Si el problema se resuelve, le agradeceríamos que marcara la respuesta útil como Solución aceptada , ya que ayuda a otras personas que podrían enfrentar un problema similar.
Un cordial saludo,
Prasanna Kumar
Queríamos comprobar amablemente si todo funciona como se esperaba después de probar la solución sugerida. Si hay algo más con lo que podamos ayudar, no dude en preguntar.
Si el problema se resuelve, le agradeceríamos que marcara la respuesta útil como Solución aceptada , ya que ayuda a otras personas que podrían enfrentar un problema similar.
Un cordial saludo,
Prasanna Kumar
Simplemente haga un seguimiento para ver si la solución proporcionada fue útil para resolver su problema. No dude en informarnos si necesita más ayuda.
Si la respuesta abordó su consulta, márquela como Solución aceptada y haga clic en Sí si la encontró útil, esto también beneficiará a otros en la comunidad.
Saludos
Prasanna Kumar
Gracias por ponerse en contacto con la comunidad de Microsoft Fabric Forum.
Este es un resumen de las sugerencias para solucionar el problema:
Comprobar la lógica de la vista: asegúrese de que la vista no use SYSDATE ni filtros basados en sesión. En su lugar, utilice filtros de fecha fija.
Comprobar el contexto del usuario: compruebe si los datos devueltos difieren en función del usuario o la sesión comparando el usuario de Oracle en SQL Developer con Power BI.
Usar consulta SQL nativa: reemplace la carga predeterminada por una consulta SQL personalizada para omitir el plegado de consultas:
Source = Oracle.Database("dwh1_high", [Query="SELECT * FROM TEST2. REP_COMPLAINTS_V"])
Verifique la configuración regional y los tipos de datos: asegúrese de que las fechas y los tipos de datos se interpreten correctamente sin causar errores silenciosos.
Omitir límites de vista previa: asegúrese de que no confía solo en la vista previa de Power Query (muestra un número limitado de filas).
Use Query Diagnostics: habilite los diagnósticos en Power BI para ver qué consulta se envía realmente y qué devuelve Oracle.
Si encuentra útil esta respuesta, considere marcarla como la solución aceptada y darle un pulgar hacia arriba para apoyar a otros en la comunidad.
Gracias y saludos,
Prasanna kumar
@bhanu_gautam Gracias. Estoy usando el modo de importación, actualicé mi publicación original para incluir esta información.
Probé la opción de búfer, desafortunadamente no cambió nada.
@smoortema Si usa el modo de consulta directa, intente cambiar al modo de importación para ver si el problema persiste. El modo de consulta directa a veces puede tener limitaciones o problemas que no se producen en el modo de importación.
Este es un ejemplo de cómo podría modificar el código M para usar Table.Buffer para deshabilitar el plegado de consultas:
dejar
Origen = Oracle.Database("dwh1_high", [HierarchicalNavigation=true]),
TEST2 = fuente{[schema="TEST2"]}[datos],
REP_COMPLAINTS_V = TEST2{[name="REP_COMPLAINTS_V"]}[datos],
BufferedTable = Table.Buffer(REP_COMPLAINTS_V)
en
BufferedTable (Tabla en búfer)