VHosamane
Este es el escenario que tengo y necesito ayuda con la sintaxis de campo calculado DAX para llegar con los dos campos en la tabla de transacciones.
Tengo una tabla de búsqueda como se muestra, que tiene filas distintas con una combinación de ClientName y ProjectName.
Tabla de búsqueda
Nombre del cliente | Nombre del proyecto | Tipo de proyecto | Producto |
Cliente1 | Proyecto 1 | tecnología | SAAS |
Cliente2 | Proyecto2 | Servicio | ESO |
Cliente1 | Proyecto2 | tecnología | I+D |
Cliente2 | Proyecto 1 | Servicio | ESO |
Cliente3 | Proyecto3 | Ambos | SAAS |
Cliente3 | Proyecto 1 | Servicio | I+D |
Tabla de transacciones
Cliente Nombre |
Proyecto Nombre |
Proyecto Costo |
Emp Nombre |
Buscar EmpType |
Hoja de tiempo Fecha |
Aporte Hora |
Buscar Tasa Emp. |
Calcular EmpCost |
Calcular Producto |
Calcular Tipo de proyecto |
Cliente1 | Proyecto 1 | $9,999,999 | EmpA | Emp | 2-ene | 4 | $100 | $400 | SAAS | tecnología |
Cliente1 | Proyecto 1 | $9,999,999 | EmpB | Contrato | 2-ene | 4 | $200 | $800 | SAAS | tecnología |
Cliente1 | Proyecto 1 | $9,999,999 | EmpC | Emp | 2-ene | 4 | $100 | $400 | SAAS | tecnología |
Cliente1 | Proyecto 1 | $9,999,999 | EmpD | Emp | 2-ene | 4 | $100 | $400 | SAAS | tecnología |
Cliente1 | Proyecto2 | $1,000,000 | EmpA | Emp | 9 de febrero | 8 | $100 | $800 | I+D | tecnología |
Cliente1 | Proyecto2 | $1,000,000 | EmpB | Contrato | 9 de febrero | 8 | $200 | $1,200 | I+D | tecnología |
Cliente2 | Proyecto 1 | $5,000,000 | EmpM | Emp | 2-ene | 8 | $100 | $800 | ESO | Servicio |
Cliente2 | Proyecto 1 | $5,000,000 | EmpM | Emp | 12-ene | 8 | $100 | $800 | ESO | Servicio |
Cliente4 | Proyecto 1 | $7,500,000 | Emp A | Emp | 10-abr | 8 | $100 | $800 | N / A | N / A |
Cliente1 | Proyecto7 | $100,000 | EmpA | Emp | 2 de febrero | 8 | $100 | $800 | N / A |
N / A |
Según ClientName y Project name en Transaction-Table, debe buscar ProjectType & Product en la tabla de búsqueda y obtener el valor en Transaction-Table, Calc-Product y Calc-ProjectType respectivamente. Si la combinación de ClientName y ProjectName no existe, ingrese N/A en ambas columnas.
¿Puede ayudarme con la sintaxis del campo calculado DAX en la tabla de transacciones? ¿Sería posible sin unir/vincular las dos tablas?
picante
Use Power Query, combine las consultas en ClientName y ProjectName usando una unión IZQUIERDA (con la tabla de transacciones primero).
Expanda la columna ‘Tabla’ para devolver Producto y Tipo de proyecto.
Reemplace cualquier valor nulo con N/A
Anónimo
Sí, es posible, pero lo haría en Power Query como lo sugiere @HotChilli. Si su tabla de transacciones es realmente grande, entonces crear columnas calculadas como esta es NO-NO.
Pero una de las columnas sería (no recomiendo hacerlo de esta manera, TT – tabla de transacciones, LT – tabla de búsqueda):
Calc-Product = var __client = TT[Client Name] var __proj = TT[Project Name] var __product = CALCULATE( VALUES( LT[Product] ), TREATAS( {__client, __proj}, LT[Client Name], LT[Project Name] ), ) return if( __product = blank(), "N/A", __product )
Si esta expresión falla en alguna parte, significa que VALUES( LT[Product] ) devuelve más de 1 valor y tiene un problema con la duplicación en el LT. Tenga en cuenta que esto funcionará bien cuando NO HAY RELACIONES entre las dos tablas. Si los hay, entonces debe usar la función RELACIONADO.
Mejor
Darek
VHosamane
En respuesta a Anónimo
¿Qué hay de malo en la sintaxis de la fórmula calculada?
Anónimo
En respuesta a VHosamane
Elimina la coma antes del paréntesis que termina en CALCULATE.
Mejor
Darek
VHosamane
En respuesta a Anónimo
Gracias @Anónimo y @HotChilli. Probé ambas soluciones y opté por la solución mencionada por @HotChilli. Como @Anonymous mencionó correctamente en la nota, la solución funcionaría solo si no hay una relación. Así que es muy importante ir a través de los detalles. Muchas gracias a los dos.
VHosamane
En respuesta a Anónimo
Hola Darek,
Calc-Product = var __client = TT[Client_Name] var __proj = TT[Project_Name] var __product = CALCULATE( VALUES(LT[Product]), TREATAS( {__client, __proj}, LT[ClientName], LT[ProjectName] ), ) return IF(__product = BLANK(), "N/A", __product)
Intenté este código, pero aparece este error: Se requiere el argumento ‘3’ en la función CALCULATE.
picante
Use Power Query, combine las consultas en ClientName y ProjectName usando una unión IZQUIERDA (con la tabla de transacciones primero).
Expanda la columna ‘Tabla’ para devolver Producto y Tipo de proyecto.
Reemplace cualquier valor nulo con N/A
calero
En respuesta a picante
Hola @HotChilli,
Muchas gracias por esta respuesta, no sabía que era posible hacer uniones anidadas, es decir, fusionar dos tablas con más de una columna clave.
Estupendo,
¡feliz aprendizaje!
Fernando