Saltar al contenido

DataFormat.Error en Power Query: causas y cómo solucionarlo

Error DataFormat en Power Query con solución paso a paso

Escrito por

en

,

DataFormat.Error en Power Query: por qué ocurre y cómo resolverlo

Si trabajas con Power BI o Excel y en algún momento Power Query te ha devuelto un mensaje como DataFormat.Error: We couldn’t convert to Number o DataFormat.Error: We couldn’t parse the input provided as a Date value, sabes lo frustrante que puede ser. El error bloquea la carga, se propaga a otras tablas y a veces parece no tener una causa clara.

En este artículo vamos a desglosar las causas más frecuentes de este error, cómo diagnosticarlo y las técnicas concretas para resolverlo.

¿Qué es el DataFormat.Error?

El DataFormat.Error es un error que Power Query lanza cuando intenta convertir un valor a un tipo de dato (número, fecha, etc.) y el valor no es compatible con ese tipo. Por ejemplo:

  • Una columna que debería ser numérica contiene la letra «H» o un texto como «quantity_order».
  • Una columna de fecha recibe un formato que no reconoce, como 2021-10-21T11:57:06+13:00.
  • Un archivo Excel tiene celdas con #VALUE! que no se pueden interpretar.

El problema no es solo el error en sí: Power Query detiene la carga completa cuando encuentra un DataFormat.Error no resuelto, y puede bloquear incluso la carga de tablas que no tienen errores.

El efecto cascada: un error que bloquea todo

Uno de los comportamientos más problemáticos de este error es su efecto en cadena. Cuando tienes varias tablas en tu modelo y una de ellas contiene un DataFormat.Error:

  1. Power Query intenta cargar todas las tablas.
  2. La tabla con el error falla.
  3. Las tablas dependientes (como una tabla anexada o el resultado de un merge) también fallan.
  4. El mensaje resultante es: «La carga se canceló debido a un error en la carga de una tabla anterior».

Esto significa que un solo valor incorrecto en una sola fila puede impedir la actualización de todo tu modelo de datos. Este comportamiento es consistente con lo que reportan miles de usuarios en los foros de la comunidad, donde hilos sobre este error acumulan cientos de miles de vistas.

Caso 1: conversión a número con valores ocultos

Este es el escenario más común. Tienes una columna que contiene números, pero al cambiar el tipo de dato a Número entero o Número decimal, Power Query devuelve:

DataFormat.Error: We couldn’t convert to Number.

¿Por qué ocurre? Porque la columna contiene valores que no son numéricos: textos, celdas en blanco, guiones (-), encabezados repetidos o caracteres invisibles. Estos valores pasan desapercibidos cuando la columna se muestra como texto, pero al intentar la conversión, Power Query no puede procesarlos.

Cómo diagnosticarlo:

  1. Antes de cambiar el tipo de dato, usa el filtro de la columna para revisar todos los valores únicos.
  2. Busca valores como cadenas vacías (""), guiones, letras sueltas o encabezados que se repiten en filas de datos.
  3. Revisa la barra de estado inferior de Power Query: si dice «Error» en alguna fila, haz clic para navegar al registro problemático.

Cómo resolverlo:

  • Filtrar antes de convertir: Aplica un filtro en la columna para excluir los valores no numéricos antes de hacer el cambio de tipo. Si la columna quantity_order tiene un texto con ese mismo nombre, fíltralo.
  • Reemplazar errores: Si ya hiciste la conversión, usa Reemplazar errores y coloca null como valor de reemplazo. Esto no elimina la causa, pero permite que la carga continúe.
  • Usar try ... otherwise en código M para manejar la conversión de forma segura:
try Number.From([columna]) otherwise null

Caso 2: combinar archivos CSV desde una carpeta

Cuando usas la opción Obtener datos → Desde una carpeta para combinar múltiples archivos CSV, Power Query genera una función automática que aplica las transformaciones a cada archivo. Si uno de esos archivos tiene una estructura ligeramente diferente (una columna extra, un encabezado distinto, un separador diferente), el error aparece al intentar aplicar la misma conversión a todos:

DataFormat.Error: We couldn’t convert to Number. Details: «38/39»

O bien:

DataFormat.Error: The input couldn’t be recognized as a valid Excel document.

¿Por qué ocurre? La función generada automáticamente asume que todos los archivos tienen la misma estructura. Si un archivo tiene filas de encabezado duplicadas, filas vacías o valores con formato inesperado, la conversión falla.

Cómo resolverlo:

  1. Convertir primero a texto: Dentro de los pasos generados por la función de combinación, busca el paso de Tipo cambiado y cambia las columnas problemáticas a tipo Texto antes de cualquier otra transformación.
  2. Filtrar en la función, no en el resultado: No intentes corregir los errores en la tabla final combinada. Ve al paso donde se generaron las transformaciones automáticas y aplica el filtrado allí.
  3. Preprocesar las filas: Asegúrate de que todas las filas contengan solo valores numéricos válidos en las columnas que vas a convertir, filtrando encabezados repetidos y filas vacías desde el paso más temprano posible.

Caso 3: OLE DB / ODBC con archivos Excel en SharePoint

Cuando importas desde hojas de Excel almacenadas en SharePoint, es posible encontrar:

OLE DB or ODBC error: [DataFormat.Error] Invalid cell value ‘#VALUE!’.

Este error ocurre porque las celdas de Excel contienen errores de fórmula (#VALUE!, #REF!, #N/A) que Power Query no puede convertir al tipo esperado. A diferencia de la importación directa, la ruta OLE DB/ODBC no tiene mecanismos automáticos para gestionar estos errores.

Cómo resolverlo:

  • Corrige los errores en el archivo fuente de Excel.
  • Si no puedes modificar el archivo fuente, aplica Reemplazar errores inmediatamente después de la carga, antes de cualquier transformación de tipo.

Caso 4: fechas con formato no reconocido

Un caso documentado frecuentemente en los foros involucra valores de fecha con zona horaria:

DataFormat.Error: We couldn’t parse the input provided as a DateTime value. Details: 2021-10-21T11:57:06+13:00

Power Query no siempre maneja correctamente los offsets de zona horaria en formatos ISO 8601. Si tu fuente de datos cambió el formato de fecha, la consulta que funcionaba antes puede romperse.

Cómo resolverlo:

  • Usa DateTimeZone.FromText en lugar de la conversión automática de tipo.
  • Si solo necesitas la fecha sin zona horaria, extrae el texto antes del T y conviértelo:
Date.From(Text.BeforeDelimiter([columna], "T"))

La regla de oro: preprocesar antes de transformar

Todos estos casos comparten un patrón: el error ocurre porque se intenta convertir un tipo de dato antes de limpiar los valores. La solución general sigue estos pasos:

  1. Mantén las columnas como texto hasta que estés seguro de que todos los valores son válidos.
  2. Filtra valores no deseados (blancos, textos, encabezados duplicados) usando los filtros de columna.
  3. Reemplaza errores con null si necesitas una solución rápida, pero investiga la causa raíz.
  4. Convierte el tipo de dato como último paso, una vez que la columna esté limpia.
  5. Si usas Anexar consultas, resuelve los errores en cada tabla origen individual antes de unificarlas. Corregir en la tabla resultante a veces no es suficiente.

Datos de la comunidad: un error masivo

Para dimensionar el impacto de este error: los hilos del foro oficial de la comunidad Fabric/Power BI sobre DataFormat.Error acumulan más de 500,000 vistas combinadas. Los tres hilos principales superan las 150,000 vistas cada uno, lo que lo convierte en uno de los errores más buscados por usuarios de Power Query a nivel mundial.

Variante del error Vistas en foro ¿Resuelto?
Can’t parse input as DateTime 329,264
Can’t parse input as DateTime (Dataflow) 160,385
Can’t convert to Number (merge) 154,253
OLE DB: Invalid cell value ‘#VALUE!’ 25,785
Can’t convert to Number (folder combine) 4,038

Conclusión

El DataFormat.Error en Power Query no es un error misterioso: es el resultado de valores que no coinciden con el tipo de dato esperado. La clave para evitarlo es siempre preprocesar y filtrar antes de convertir tipos. Si combinas archivos desde una carpeta, el filtrado debe hacerse dentro de los pasos de la función automática, no en la tabla final.

Si quieres dominar estas técnicas de limpieza y muchas más, el siguiente curso cubre cada una en detalle con casos reales:

Power BI: Power Query Limpiar y extraer Datos con Lenguaje MUdemy
Power Query

Power BI: Power Query Limpiar y extraer Datos con Lenguaje M

★ 4.6(1100 estudiantes)
$54.99

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *