Forum Discussion
Utilice CALCULATE() sin usar expression
Hola gente 🙂
En primer lugar, aquà está mi archivo PBI: test2
Tengo un pequeño problema en una tabla calculada que he creado.
Mi tabla estándar sigue esta estructura:
| Bacalao | Fecha | Nivel |
| 00 | 12/01/2020 | M |
| 00 | 12/03/2020 | 1H |
| 11 | 12/03/2020 | 1H |
| 11 | 12/05/2020 | A |
| 11 | 12/05/2020 | A |
Como puede ver, en la columna COD los registros se pueden repetir y la columna DATE puede tener fechas diferentes para el mismo COD.
Me gustarĂa crear una tabla calculada que muestre todos los COD distintos y más recientes, y su respectivo NIVEL.
Basándose en la tabla de ejemplo anterior, la nueva tabla serĂa algo asĂ:
| Bacalao | Fecha | Nivel |
| 00 | 12/03/2020 | 1H |
| 11 | 12/05/2020 | A |
Con esta tabla calculada, puedo obtener todos los COD distintos y más recientes:
_newTable = SUMMARIZE('table'; 'table'[COD]; "LEVEL"; CALCULATE(MAX('table'[LEVEL]); ALLEXCEPT('table';'table'[COD])); "MAX VALUE"; CALCULATE(MAX('table'[DATE]);ALLEXCEPT('table';'table'[COD])))El único problema en esta tabla calculada es que la columna LEVEL no muestra el NIVEL real para ese COD y esa FECHA. Muestra el carácter de orden más alto en la escala alfabética y lo asocia con el COD más reciente. Descubrà que el problema está en esa parte del código:
"LEVEL", CALCULATE(MAX('table'[LEVEL])Esto trae la letra más alta de ese COD especĂfico en la escala alfabĂ©tica (si el mismo COD tiene NIVEL A, B y Z, siempre mostrará la letra Z). Un ejemplo de esto es analizar el COD 40501455 (en el archivo .pbix). El NIVEL más reciente de este COD es 1D, pero el _newTable muestra H porque H está por encima de un NIVEL que comienza con un nĂşmero en la escala alfabĂ©tica.
Pero si simplemente elimino este MAX del código, señala un error de sintaxis.
ÂżPuede alguien ayudarme, por favor?
3 Replies
- Vvelarde
Community Champion
Hola, intente crear esta tabla DAX:
ResultTable = SUMMARIZECOLUMNS ( Table1[COD]; "MAX"; MAX ( 'Table1'[Date] ); "LEVEL"; CALCULATE ( VALUES ( Table1[LEVEL] ); FILTER ( Table1; Table1[DATE] = MAX ( Table1[DATE] ) ) ) )saludos
Victor
- amitchandak
Super User
@req7 ,
Trate como
filter(SUMMARIZE('table'; 'table'[COD]; 'table'[LEVEL]; 'table'[DATE],"max_dt"CALCULATE(MAX('table'[DATE]);ALLEXCEPT('table';'table'[COD]))) ,[DATE]=[max_dt])- AnonymousNot applicable
Muchas gracias @amitchandak !!!!!
¡Esto es exactamente lo que quiero!