Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
1 year ago
Solved

Lookupvalue que devuelve un error

No estoy familiarizado con Power BI, pero creo que puedo describir este problema con precisión. Tengo una tabla consultada, Letras, con una columna, Código de letras. También tengo una tabla de Excel importada, Descripciones de cartas, con dos columnas, Descripción y Código de letras. Estoy intentando agregar una columna a la tabla Letters que usará LookUpValue para extraer los valores de la columna Description de la tabla Letter Descriptions haciendo coincidir las columnas Letter Code.

Descripción de la letra = (LOOKUPVALUE('Descripciones de letras'[Descripción],'Descripciones de letras'[Código de letra], Letras[Código de letra]))

Recibo un error, "Se proporcionó una tabla de varios valores donde se esperaba un solo valor". Tengo entendido que esto significa que hay valores duplicados en la tabla Descripciones de cartas, sin embargo, no hay duplicados/espacios en blanco. El tipo de datos de ambas tablas es Texto. La columna Código de letra de la tabla Cartas tendrá duplicados porque se envían varias cartas cada día con el mismo código de letra, sin embargo, parece que debería funcionar como vlookup en Excel y los duplicados en la tabla Cartas no deberían causar un problema al aplicar la misma descripción a los mismos códigos de letras.

¿Puede explicar en qué me equivoqué, o por qué esta búsqueda, aparentemente fácil, está causando un problema?

  • Hola @Cellblime ,
    Parece que estás en el camino correcto con el uso LOOKUP, pero el error que se produce normalmente significa que hay varios valores coincidentes en la tabla Descripciones de letras para un código de letra determinado. Vuelva a comprobar que el La columna Código de letra de la tabla Descripciones de letras tiene realmente valores únicos.

    Use FIRSTNONBLANK BUT NOTE: Esto solo devolverá el primer valor que no esté en blanco encontrado, ignorando todos los demás.

    Letter Description = 
    CALCULATE(
        FIRSTNONBLANK('Letter Descriptions'[Description], 1),
        FILTER('Letter Descriptions', 'Letter Descriptions'[Letter Code] = Letters[Letter Code])
    )


    Espero que esto te ayude, si es así, por favor acéptalo como solución y dale un Kudo.

    Gracias.

6 Replies

  • Esto se debe a que un código puede tener una descripción diferente. Debe volver a verificar sus datos para ver si hay algún espacio que haya causado este problema.

    Si el problema no se puede solucionar, proporcione algunos datos de muestra y ouptut esperado, o proporcione su archivo pbix

  • @Cellblime

    Sírvase proporcionar algunos datos de muestra.

    ¿Describe la tabla Letras como si solo tuviera 1 columna? Pero, ¿es realmente así? ¿Cuál es el objetivo de esa mesa?

    En este caso, ¿qué es una carta? ¿Algo así como A, B, etc., o una correspondencia escrita?

    Por lo que está tratando de hacer, parece que terminará con la misma mesa en ambos casos. ¿Ambos contienen la descripción de la letra y el código de la letra?

    Saludos

    Phil

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      La tabla Cartas tiene algunos campos adicionales, solo estaba tratando de evitar complicar la pregunta. Se consultan los datos de la tabla Cartas y no hay una descripción del código de letra en la base de datos, por lo que creé una hoja de Excel separada con la descripción y el código de letra correspondiente, y la importé para poder agregar la descripción que faltaba a la tabla Cartas. La tabla de cartas tiene los siguientes campos, fecha de la carta, código de la carta, método de entrega y número de cliente. El código de letra es un valor de 4 caracteres con una letra y tres números, como A123.

  • Hola

    Asegúrese de que la fórmula sea una fórmula de columna calculada (no una medida). Si esto no ayuda, comparta algunos datos con los que trabajar. Comparta datos en un formato que se pueda pegar en un archivo de MS Excel.

  • Hola @Cellblime ,
    Parece que estás en el camino correcto con el uso LOOKUP, pero el error que se produce normalmente significa que hay varios valores coincidentes en la tabla Descripciones de letras para un código de letra determinado. Vuelva a comprobar que el La columna Código de letra de la tabla Descripciones de letras tiene realmente valores únicos.

    Use FIRSTNONBLANK BUT NOTE: Esto solo devolverá el primer valor que no esté en blanco encontrado, ignorando todos los demás.

    Letter Description = 
    CALCULATE(
        FIRSTNONBLANK('Letter Descriptions'[Description], 1),
        FILTER('Letter Descriptions', 'Letter Descriptions'[Letter Code] = Letters[Letter Code])
    )


    Espero que esto te ayude, si es así, por favor acéptalo como solución y dale un Kudo.

    Gracias.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      ¡Eso funcionó, gracias! Había intentado algo similar a lo que proporcionó ChatGPT (ver más abajo), pero obtuve un error. ¡Su ayuda es muy apreciada!

      Carta Descripción =
      CALCULAR(
      FIRSTNONBLANK(LetterDescriptions[Descripción de la carta], 1),
      LetterDescriptions[Código de letra] = Letras[Código de letra]
      )