Compártelo:

Uno de los errores más comunes que verás al trabajar con Power Query en Power BI o Excel es el siguiente:

Expression.Error: La clave no coincidió con ninguna fila de la tabla

Importing Share point excel workbook: "The key didn't match any rows in the  table." : r/PowerBI

Este error puede ocurrir con casi cualquier origen de datos y en una amplia variedad de circunstancias diferentes. Para los nuevos usuarios de Power Query, puede ser muy confuso. En este post, te explicaré qué significa este mensaje de error y cuándo es probable que te lo encuentres utilizando un ejemplo sencillo.

Es probable que recibas este error porque la consulta de Power Query está intentando conectarse a una tabla, hoja de cálculo u otro elemento del origen de datos que ha sido eliminado o cuyo nombre ha sido cambiado.

Supongamos que tienes un libro de Excel con tres hojas de trabajo llamadas Hoja1, Hoja2 y Hoja3:

En la Hoja1 hay algunos datos que deseas cargar en Power BI o Excel mediante Power Query:

Es muy fácil hacer esto: después de hacer clic en la fuente de datos de Excel y seleccionar tu libro de Excel, verás la ventana del Navegador con el contenido del libro de trabajo y seleccionas Hoja1. Luego, haces clic en Aceptar y tu consulta estará lista.

Sin embargo, ¿qué sucede realmente en esta consulta? Si haces clic en cada uno de los cuatro pasos en el panel «Pasos aplicados» en el lado derecho de la pantalla, verás lo que hace cada paso. En concreto, observa que el primer paso de la consulta (denominado «Source») devuelve una tabla con una fila para cada hoja de cálculo, tabla y rango con nombre del libro:

Esto es algo que sucede con muchos tipos de fuentes de datos: una vez que te hayas conectado, debes elegir a qué datos dentro de la fuente de datos deseas conectarte en el primer paso, y la lista de cosas a las que puedes conectarte se devuelve en una tabla. Esta tabla enumera las mismas cosas que se muestran en el cuadro de diálogo Navegador mencionado anteriormente. De la misma manera, si te conectas a una base de datos de SQL Server, este primer paso devuelve una tabla con todas las tablas y vistas de la base de datos; si te conectas a una fuente de OData, en el primer paso se muestran todos los recursos disponibles a través de la fuente.

Otra cosa a observar en la tabla de la captura de pantalla es la columna «Datos», que contiene valores de tabla anidados. Si hicieras clic en una de estas tablas anidadas, navegarías a los datos de la hoja de cálculo nombrada en esa fila, y eso es, de hecho, lo que hace el segundo paso de la consulta.

Este es el código M para toda la consulta:

let
    // Fuente de datos: archivo Excel
    Source = Excel.Workbook(File.Contents("C:\MiArchivoExcel.xlsx"), null, true),

    // Selección de la hoja llamada "Sheet1"
    Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data],

    // Promoción de los encabezados de la tabla
    #"Promoted Headers" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true]),

    // Cambio de tipo de datos en las columnas
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers", {{"Month", type text}, {"Sales", Int64.Type}})
in
    #"Changed Type"

Descripción del Código:

  1. Fuente de datos:
    • Source = Excel.Workbook(File.Contents("C:\MiArchivoExcel.xlsx"), null, true)
    • Se lee el contenido del archivo Excel ubicado en la ruta especificada.
  2. Selección de la hoja de cálculo:
    • Sheet1_Sheet = Source{[Item="Sheet1",Kind="Sheet"]}[Data]
    • Se selecciona la hoja llamada «Sheet1» y se extraen sus datos.
  3. Promoción de encabezados:
    • #"Promoted Headers" = Table.PromoteHeaders(Sheet1_Sheet, [PromoteAllScalars=true])
    • Se promueven los encabezados de la primera fila de datos a los nombres de las columnas.
  4. Cambio de tipo de datos:
    • #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers", {{"Month", type text}, {"Sales", Int64.Type}})
    • Se cambian los tipos de datos de las columnas especificadas. En este caso, «Month» se cambia a texto y «Sales» a entero.

¿Qué sucede si cambias el nombre de la hoja de cálculo que contiene los datos que deseas, de «Hoja1» a «Hola»?

El resultado es que el primer paso de la consulta ahora devuelve una tabla similar a la siguiente:

Dado que ya no hay una fila en la que la columna Elemento contenga «Hoja1», el segundo paso ya no puede encontrar la fila que está buscando. El valor clave que está buscando ya no existe en la tabla, por lo que verás el mensaje de error mencionado.

Hay dos formas de corregir el error:

  1. Ve al libro de Excel y cambia el nombre de la hoja llamada «Hola» a «Hoja1».
  2. En el Editor avanzado o en la barra de fórmulas, edita el código M y reemplaza la referencia a «Hoja1» por «Hola» en el segundo paso de la consulta.

En resumen, cuando trabajes con orígenes de datos en Power Query, debes tener en cuenta que si se cambia el nombre o se elimina algo en el origen de datos, la consulta se interrumpirá. Por supuesto, puedes escribir un código M inteligente para lidiar con situaciones como esta, pero mi recomendación es intentar solucionar el problema en la fuente de datos y no en tu consulta.

Compártelo:

Deja un comentario