DataFormat.Error: We couldn’t convert to Number en Power Query
TL;DR: El error aparece al combinar (Merge) dos consultas porque Power Query guarda metadatos de tipo de dato en cada columna, distintos del tipo visible en el editor. Aunque veas «Texto» en la cabecera, el motor puede haber inferido «Número» en un paso anterior. La solución es agregar un paso explícito Table.TransformColumnTypes que fuerce el tipo type text en las columnas clave justo antes del paso de combinación.
Con más de 154,000 vistas en el foro oficial de Microsoft Fabric, este error confunde especialmente porque el mensaje dice «no pudimos convertir a Número» pero el usuario no tiene ninguna columna numérica visible. El diagnóstico correcto requiere entender cómo Power Query maneja los tipos de datos internamente.
¿Por qué ocurre el error si todo está en formato Texto?
Power Query tiene dos capas de información de tipo:
- El tipo visible en el editor (el ícono ABC/123 en la cabecera de la columna)
- Los metadatos de tipo en el árbol de evaluación (lo que el motor realmente usa al ejecutar)
Cuando una columna pasó por pasos anteriores donde Power Query infirió un tipo numérico —incluso si después se reconvirtió a texto— los metadatos del árbol pueden conservar la inferencia original. Al hacer Merge, el motor intenta alinear los tipos de las columnas clave entre ambas tablas y encuentra el conflicto.
El caso más común: la columna Part_No tiene valores como "00123", "45678". Power Query los detecta como potencialmente numéricos, asigna tipo Int64 en los metadatos, y aunque el ícono muestre ABC, el error surge al combinar.
Diagnóstico: identificar la columna problemática
El error generalmente incluye el valor específico que no pudo convertirse:
DataFormat.Error: We couldn't convert to Number.
Details:
00123
Ese valor (00123) es la clave de búsqueda. Busca qué columna en ambas consultas contiene ese valor y esa es la columna en conflicto.
Solución 1: forzar tipo texto explícitamente antes del Merge
Agrega un paso Table.TransformColumnTypes inmediatamente antes del paso de combinación en ambas consultas:
// En Consulta A (la tabla izquierda del Merge)
let
Fuente = ...,
PasosAnteriores = ...,
// Forzar tipo texto en la columna clave ANTES del merge
TipoForzado = Table.TransformColumnTypes(
PasosAnteriores,
{{"Part_No", type text}}
),
// Ahora el Merge funciona sin error
Combinado = Table.NestedJoin(
TipoForzado, {"Part_No"},
ConsultaB, {"Part_No"},
"Detalle", JoinKind.LeftOuter
)
in
Combinado
Haz lo mismo en Consulta B sobre su columna Part_No. El paso explícito sobrescribe los metadatos del árbol de evaluación.
Solución 2: convertir con Text.From en columna calculada
Si el paso TransformColumnTypes no es suficiente (raro pero ocurre con versiones anteriores del motor), fuerza la conversión con una función de texto explícita:
ColTextoForzado = Table.TransformColumns(
PasosAnteriores,
{"Part_No", each Text.From(_), type text}
)
Text.From(_) convierte el valor actual a texto sin importar qué tipo infirió el motor previamente. Es más agresivo que TransformColumnTypes y resuelve los casos más difíciles.
Solución 3: eliminar y volver a asignar el tipo desde el paso «Tipo modificado»
A veces los metadatos erróneos vienen del paso automático «Tipo modificado» que Power Query inserta al conectar la fuente. Elimina ese paso y agrégalo manualmente con los tipos correctos:
- En el panel de Pasos aplicados, haz clic derecho en «Tipo modificado» → Eliminar
- Selecciona las columnas clave → Transformar → Tipo de datos → Texto
- Esto genera un nuevo paso «Tipo modificado» con la inferencia correcta
Si Power Query no detecta columnas numéricas en el archivo de origen, no intentará convertir durante el Merge.
Solución 4: usar Table.Buffer antes del Merge
En algunos entornos (particularmente Excel Power Query y versiones antiguas de Power BI Desktop), materializar la consulta en memoria antes del Merge corta la cadena de metadatos del árbol de evaluación:
ConsultaAEnMemoria = Table.Buffer(Table.TransformColumnTypes(
ConsultaA,
{{"Part_No", type text}}
)),
Combinado = Table.NestedJoin(
ConsultaAEnMemoria, {"Part_No"},
ConsultaB, {"Part_No"},
"Detalle", JoinKind.LeftOuter
)
Table.Buffer fuerza la evaluación completa de la consulta antes de pasarla al Merge, eliminando cualquier metadato de tipo residual.
Tabla de diagnóstico
| Situación | Causa más probable | Solución |
|---|---|---|
El valor del error parece un número (00123) |
Inferencia automática de tipo numérico en la columna clave | Solución 1 |
| Error solo en algunas filas, no en todas | Valores mixtos en la columna (algunos numéricos, otros texto) | Solución 2 |
| Error en Excel Power Query pero no en Power BI Desktop | Motor de evaluación distinto en Excel | Solución 3 o 4 |
| Error desaparece al filtrar el valor problemático | Valor numérico real en columna «de texto» | Solución 1 + revisar datos de origen |
| Error en paso Expandir, no en Merge | El tipo del campo expandido no coincide | Solución 1 en la tabla anidada |
Prevención: establecer tipos explícitos en la capa de fuente
La práctica que elimina este error de raíz es definir los tipos de dato correctos en el primer paso de cada consulta, antes de cualquier transformación:
let
Fuente = Csv.Document(File.Contents("productos.csv"), [Delimiter=","]),
Encabezados = Table.PromoteHeaders(Fuente),
// Definir tipos explícitos desde el inicio
TiposDefinidos = Table.TransformColumnTypes(
Encabezados,
{
{"Part_No", type text},
{"Producto", type text},
{"Cantidad", Int64.Type},
{"Costo", type number}
}
)
in
TiposDefinidos
Al establecer los tipos en la fuente, Power Query ya no necesita inferir nada y los metadatos son estables durante toda la cadena de transformaciones.

Power BI: Power Query Limpiar y extraer Datos con Lenguaje M
Fuente: hilo del foro oficial de Microsoft Fabric con más de 154,000 vistas en Power BI Desktop y Excel Power Query.

Deja una respuesta