Forum Discussion
Pregunta de UDF
Creé una función de definición de usuario y parece estar funcionando, pero cuando la uso en una medida, está volviendo a reclamar un valor incorrecto.
DiscutussedFYTD = fnFYTDAverage([~PercentDiscussedWithEmployee])
Parece que te perdiste una definición del parámetro. Consulte el código de función a continuación, por favor. La función puede aceptar una medida de esta manera ": anyref expr" en lugar de considerarla como un escalar. Consulte también el documento aquí https://learn.microsoft.com/en-us/dax/best-practices/dax-user-defined-functions#type
DEFINE FUNCTION fnFYTDAverage_new = (_measure: anyref expr) => AVERAGEX( DATESYTD(DateTable[Datekey]), _measure )
4 Replies
- Syndicate_AdminAdministrator
Hola
Según un vistazo rápido, el DiscussedFYTD debería ser fnFYTDAverage([~PercentDiscussedWithEmployee]), ¿es esta la causa?
- Syndicate_AdminAdministrator
Sí, eso es lo que tengo en el pbix, actualicé mi publicación original
- Syndicate_AdminAdministrator
Parece que te perdiste una definición del parámetro. Consulte el código de función a continuación, por favor. La función puede aceptar una medida de esta manera ": anyref expr" en lugar de considerarla como un escalar. Consulte también el documento aquí https://learn.microsoft.com/en-us/dax/best-practices/dax-user-defined-functions#type
DEFINE FUNCTION fnFYTDAverage_new = (_measure: anyref expr) => AVERAGEX( DATESYTD(DateTable[Datekey]), _measure )
- Syndicate_AdminAdministrator
Hi @tomperro ,
Tu argumento _Measure (PercentDiscussedFYTD_AVG) devuelve texto, no un número porque lo envolviste con la función FORMAT().
En DAX, FORMAT() convierte un valor numérico en una cadena (texto). Cuando intenta usar ese valor de texto dentro de un iterador como AVERAGEX, DAX lo trata como en blanco o produce un error en la conversión implícita, lo que da lugar a resultados incorrectos.
Crear una medida numérica (sin FORMAT)
PercentDiscussedFYTD_AVG =
PROMEDIOX(
DATESYTD('Calendario'[Fecha], "9/30"),
[~ Porcentaje discutido con el empleado]
)
Úselo en su medida basada en funciones
DiscutussedFYTD = fnFYTDAverage([PercentDiscussedFYTD_AVG])
Si desea mostrarlo como un porcentaje con 2 decimales, formatee la medida final en el modelo o en el objeto visual.
DiscutidoFYTD =
VAR _Result = fnFYTDAverage([PercentDiscussedFYTD_AVG])
DEVOLUCIÓN
FORMAT(_Result, "0.00%")
establezca la cadena de formato de la medida en "0,00 %" en el modelo en lugar de usar FORMAT() en DAX.
Si mi respuesta resolvió su problema, acepte mi respuesta como solución y felicite
Gracias
Dinesh