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

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.

Reply
fess440
Helper III
Helper III

Error devuelto: 'OLE DB u ODBC error: Excepción de HRESULT: 0x80040E1D - Cómo DEPURAR

Hola, estoy ejecutando una consulta sql desde Power BI que importa datos de columnas que tienen al menos un punto de datos no vacío y no nulo de una tabla con 600 columnas. Estoy usando la consulta SQL directamente porque M toma demasiado tiempo.

La consulta se ejecuta bien en SSMS y veo una vista previa en el editor de consultas, pero obtengo el siguiente error cuando intento cerrar y aplicar:

No se pudieron guardar las modificaciones en el servidor. Error devuelto: 'ERROR OLE DB u ODBC: excepción de HRESULT: 0x80040E1D.

Curiosamente, funciona bien cuando utilizo la siguiente consulta (SQL 2016) que me puede dar columnas con valores vacíos (que #1 llamar como referencia):

set @columnscountqry ? REPLACE(stuff((SELECT + ',count(tbl.' + QUOTENAME(ic. COLUMN_NAME) + ') COMO ' + QUOTENAME(ic. COLUMN_NAME) DESDE INFORMATION_SCHEMA.columns ic donde ic. TABLE_NAME 'tblexample' FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 1, ''), '> 0', '>0')

Ejecuto lo siguiente para obtener las columnas que quiero que son columnas que tienen al menos un valor no vacío y no nulo (#2 como referencia):

set @columnscountqry ? REPLACE(stuff((SELECT + ',SUM(IIF(LEN(RTRIM(fb.' + QUOTENAME(ic. COLUMN_NAME) + ')) > 0, 1 ,0)) COMO ' + QUOTENAME(ic. COLUMN_NAME) DESDE INFORMATION_SCHEMA.columns ic donde ic. TABLE_NAME 'tblexample' FOR XML PATH(''), TYPE).value('.', 'VARCHAR(MAX)'), 1, 1, ''), '> 0', '>0')

Utilizo estos nombres de columna en un script SQL adicional para obtener la salida que quiero. Funciona bien en SSMS y los resultados son precisos. No he dado el script SQL completo ya que el resto del script es el mismo.

Creo que debería comparar los tipos de datos que se asignan en la consulta de energía entre #1 y #2, ya que #1 se importa sin errores. Curiosamente, #2 produce menos columnas como se esperaba y todas las columnas de #2 también se extraen en #1. No sé la diferencia entre los tipos de datos que se les están asignando, sin embargo, ya que hay casi 300 columnas para comprobar.

¿Puede hacerme saber cómo puedo obtener una lista de columnas y los tipos de datos que se les asignan en el editor de consultas? No es posible hacerlo manualmente, ya que se extraen casi 300 columnas.

¿Alguna otra idea?

Muchas gracias.

6 REPLIES 6
fess440
Helper III
Helper III

Creo que el problema es que algunos campos de fecha tienen el valor 'NULL' en ellos con fechas y el esquema de tabla muestra que estas columnas no aceptan valores NULL. Me gustaría tratar de cambiar todas las columnas a nullable para evitar este problema. - i hizo una comprobación exhaustiva de la propiedad que acepta valores NULL y that's no está causando el problema. por favor vea un nuevo comentario a continuación.

¿podría alguien por favor hacerme saber la consulta m para hacerlo, o dirigirme a ejemplos relevantes por favor? Muchas gracias.

@MarcelBeug

He llegado a saber que Power BI está detectando el tipo de datos basado en la 1a 200 filas. Estoy viendo errores generados al azar ahora para #1 o #2 por lo que es probable que porque el conjunto de resultados SQL no está ordenado.

No puedo ordenar el conjunto porque cada fila representa un conjunto de información y no hay garantía de que siempre funcionará. ¿Hay alguna manera de extraer los tipos de datos del esquema de información SQL e imponerlo en la tabla power bi mediante la consulta M??

Estoy usando la siguiente función para cambiar los tipos de datos de las columnas:

(tabla como tabla, esquema como tabla) como tabla >
Dejar
existingColumns á Table.ColumnNames(table),
removeMissing - Table.SelectRows(schema, each List.Contains(existingColumns, [Name])),
primativeTransforms á Table.ToRows(removeMissing),
changedPrimatives á Table.TransformColumnTypes(table, primativeTransforms)
En
cambiadoPrimeatives

esquema tiene los nombres de columna con texto de tipo sólo para fines de prueba

removeMissing está produciendo la tabla requerida. Estoy recibiendo un error en primativeTransforms:

Se ha producido un error en la consulta ''. Expression.Error: No podemos convertir el valor "text" al tipo Type.
Detalles:
Valor-texto
Tipo [Tipo]

Soy nuevo en el lenguaje m. ¿Podría conseguir ayuda, por favor? Gracias

@MarcelBeug

Hola @fess440 ,

Según la información de error, parece ser un error de conversión de tipo de datos... ¿Podría proporcionar los códigos aplicados en el Editor avanzado para la consulta con error y las capturas de pantalla relacionadas de la consulta que obtienen el error? Gracias.

Además, consulte el contenido en los siguientes enlaces y compruebe si pueden ayudarle a resolver el problema.

Error 0x80040E4E - OLE DB u ODBC

Error ole DB u ODBC: Excepción de HRESULT: 0x80040E1D ? Error de actualización de Power bi

Error de actualización de datos: error OLE DB u ODBC: excepción de HRESULT: 0x80040E1D

Saludos

Rena

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

@yingyinr gracias por su respuesta. para resumir, ejecuté un script sql dinámico desde power bi para extraer columnas que tenían al menos 1 punto de datos que no estaba vacío o nulo de un conjunto de 600 columnas y extraí casi 300 columnas. Tuve que hacer esto para varias entidades y los resultados eran diferentes para cada entidad. power bi no detectaba el tipo de datos con precisión para algunas columnas, ya que algunas columnas tenían valores nulos y fechas, por ejemplo, repartidos en muchas filas. Finalmente me las arreglé para resolver el problema mediante el uso de la consulta M para cambiar el tipo de datos de columnas dados nombres de columna únicos y tipos de datos desde el esquema de información de la base de datos después de mucha prueba y error. Estoy tratando con relativamente "big data" y sería maravilloso tener soluciones fuera de la caja para hacer lo mismo, especialmente cuando la intervención manual es poco práctica. ¿sabes de algo automatizado que pueda lograr lo mismo, o recomendarías comenzar una idea? gracias de nuevo por su tiempo. Salud.

Hola @fess440 ,

¿Ha activado la opción Detección automática de tipos de datos (vaya a Archivo-> Opcionesy configuración->Opciones, luego Carga de datos-> Detección de tipos)?

  • El paso de detección automática de tipos de datos utiliza un muestreo o una vista previa de cada columna de origen para determinar el tipo adecuado. Si este ejemplo no refleja el conjunto completo o futuro de valores para la columna, el tipo de datos seleccionado puede ser incorrecto.
  • La detección automática de tipos no se utiliza con sistemas de bases de datos relacionales estructurados como SQL Server.
  • Si está habilitado, este paso solo se aplica a orígenes de datos no estructurados, como archivos sin formato y libros de Excel.

Automatic data type detection.JPG

Saludos

Rena

Community Support Team _ Rena
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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