Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago
Solved

INDEX MATCH en Power BI

Hola
He probado un montón de sugerencias en este foro, pero se están quedando un poco cortas para lo que estoy necesitando.
A continuación se muestran muestras de mis datos, primero a la izquierda está mi referencia de pn a modelo y el segundo es una lista de modelos con nombres locos pero que contienen los números de modelo de la primera tabla de datos. La última tabla es el resultado que estoy buscando. Tengo esto en Excel, pero me gustaría eliminar hacer esto en Excel primero y solo tenerlo aquí en Power Bi. Intenté cargar el archivo de Power Bi o el archivo de Excel, pero recibí un error de que no puede hacer eso.
Cualquier ayuda será muy apreciada.

2022-02-25_13-18-02.png

PLM_DATA
PLM_PNPLM_Model
PN144833MD456435763
PN1448343001MD32434
PN144835DM100216344
PN144830DS1616161

AP_DATA
aP_Model
DS1616161-F
DS1616161
MD456435763
101-MD456435763_1651
165165-3001MD32434
3001MD32434-G
3001MD32434_F
1_1_8 - DM100216344-A-AP_PART-1

DM100216344

AP_DATA
aP_Model_PN del partido
1_1_8 - DM100216344-A-AP_PART-1PN144835
DS1616161PN144830
3001MD32434-GPN144834
101-MD456435763_1651PN144833
165165-3001MD32434PN144834
DS1616161-FPN144830
3001MD32434_FPN144834
MD456435763PN144833
DM100216344PN144835

  • En ella, @Pretengineer

    Puede crear una columna calculada de la siguiente manera:

    Match _PN = 
    CALCULATE (
        MAX ( PLM_DATA[PLM_PN] ),
        FILTER ( PLM_DATA, CONTAINSSTRING ( AP_DATA[aP_Model], PLM_DATA[PLM_Model] ) )
    )

    Consulte mi archivo de muestra para obtener más detalles.

    Saludos
    Equipo de soporte de la comunidad _ Eason

7 Replies

  • En ella, @Pretengineer

    Puede crear una columna calculada de la siguiente manera:

    Match _PN = 
    CALCULATE (
        MAX ( PLM_DATA[PLM_PN] ),
        FILTER ( PLM_DATA, CONTAINSSTRING ( AP_DATA[aP_Model], PLM_DATA[PLM_Model] ) )
    )

    Consulte mi archivo de muestra para obtener más detalles.

    Saludos
    Equipo de soporte de la comunidad _ Eason

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      @v-easonf-msft

      Esto funcionó perfecto, gracias por eso. Sin embargo, cuando lo puse en mis datos reales, tuvo la ventana emergente de "funcionamiento" durante unos 20 minutos antes de que acabara de matar la aplicación. Con 298638 líneas en el PLM_DATA y 7824 líneas en el AP_DATA creo que es demasiado para procesar. Si calculara este derecho, si tomara un segundo por cada CONTAINSSTRING, tardaría 74 años en completarse. Es posible que primero deba intentar filtrar y obtener los números de PLM_DATA o AP_DATA más pequeños.

      El AP_DATA tiene otra columna llamada aP_PN donde algunos ya tienen válvulas. ¿Se puede agregar un filtro adicional para no escanearlos?
      Algo así como

      FILTER( AP_DATA, isblank (AP_DATA[AP_PN]))

      AP_DATA
      aP_Model_PN AP
      1_1_8 - DM100216344-A-AP_PART-1
      DS1616161
      3001MD32434-G
      101-MD456435763_1651PN144833
      165165-3001MD32434
      DS1616161-FPN144830
      3001MD32434_FPN144834
      MD456435763
      DM100216344



      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        En ella, @Pretengineer

        Si su conjunto de datos es demasiado grande, no creo que la solución original funcione para usted.

        Pruebe esta nueva solución.

        En 'Transformar datos', pruebe la función 'Combinar consultas' en la tabla 'AP_Data' para agregar una nueva columna de tabla
        (o 'Combinar consultas como nuevas' para agregar una nueva consulta de tabla)

        Resultado:

        Consulte mi archivo de muestra para obtener más detalles.

        Saludos
        Equipo de soporte de la comunidad _ Eason

  • Hola

    Esta fórmula de columna calculada en el AP_Data funciona

    Column = lookupvalue(PLM_Data[PLM_PN],PLM_Data[PLM_Model],FIRSTNONBLANK(FILTER(VALUES(PLM_Data[PLM_Model]),SEARCH(PLM_Data[PLM_Model],AP_Data[aP_Model],1,0)),1))

    Espero que esto ayude.

    Untitled.png

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Esta solución funciona muy bien para mi necesidad, gracias, ¿crees que también funciona bien para grandes cantidades de datos?

      Gracias de nuevo.