Forum Discussion
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.
| PLM_DATA | |
| PLM_PN | PLM_Model |
| PN144833 | MD456435763 |
| PN144834 | 3001MD32434 |
| PN144835 | DM100216344 |
| PN144830 | DS1616161 |
| 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-1 | PN144835 |
| DS1616161 | PN144830 |
| 3001MD32434-G | PN144834 |
| 101-MD456435763_1651 | PN144833 |
| 165165-3001MD32434 | PN144834 |
| DS1616161-F | PN144830 |
| 3001MD32434_F | PN144834 |
| MD456435763 | PN144833 |
| DM100216344 | PN144835 |
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
- Syndicate_Admin
Administrator
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
Administrator
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í comoFILTER( 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_1651 PN144833 165165-3001MD32434 DS1616161-F PN144830 3001MD32434_F PN144834 MD456435763 DM100216344 - Syndicate_Admin
Administrator
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
- Syndicate_Admin
Administrator
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.
- Syndicate_Admin
Administrator
Esta solución funciona muy bien para mi necesidad, gracias, ¿crees que también funciona bien para grandes cantidades de datos?
Gracias de nuevo.
- Syndicate_Admin
Administrator
De nada. No hay mejor manera de saberlo que intentando.