Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreGet certified in Microsoft Fabric—for free! For a limited time, get a free DP-600 exam voucher to use by the end of 2024. Register now
Hola
Necesita ayuda. Aquí están mis datos de muestra.
He derivado esta medida para contar distinta por Metrics_ID en mi conjunto de datos de muestra, que me dará 12. Quiero que el recuento se muestre como 12 en cada fila como mi denominador (Recuento único por Metrics_ID) en lugar de 1 en cada fila. ¿Cómo puedo lograr eso en DAX Measure?
Denominador =
VAR Count_PCM_denominator=CALCULATE(DISTINCTCOUNT('rep F_ITS_MetricsLanding'[Metrics_ID]),FILTER('rep F_ITS_MetricsLanding','rep F_ITS_MetricsLanding'[Metrics_ID] en {"PCM01","PCM03","PCM04","PCM09","PCM10","PCM19","PCM20","PCM23","PCM33","PCM34","PCM35","PCM36"}),ALL('rep F_ITS_MetricsLanding'[Metrics_ID],'rep F_ITS_MetricsLanding'[LBU]))
COUNT_PCM_DENOMINATOR DE RETORNO
DATOS DE MUESTRA:
LBU | Metrics_ID | Cumplimiento medio % |
EILUX | PCM23 | 60.10% |
PAMC | PCM01 | 78.80% |
PAMC | PCM03 | 81.30% |
PAMC | PCM04 | 62.10% |
PAMC | PCM09 | 56.80% |
PAMC | PCM10 | 59.60% |
PAMC | PCM19 | 68.60% |
PAMC | PCM20 | 55.90% |
PAMC | PCM23 | 85.90% |
PAMC | PCM33 | 65.00% |
PAMC | PCM34 | 47.80% |
PAMC | PCM35 | 57.10% |
PAMC | PCM36 | 62.00% |
PCALKK | PCM04 | 100.00% |
RESULTADOS ESPERADOS:
Resultados esperados para EILUX | ||||
LBU | Metrics_ID | Cumplimiento medio % | Denominador (único por Metrics_ID) | Compliance_Value esperado (AVG) dividido por el número máximo de denominadores, es decir, 12 |
EILUX | PCM23 | 60.10% | 12 | 5.00% |
Resultados esperados para PCALKK | ||||
LBU | Metrics_ID | Cumplimiento medio % | Denominador (único por Metrics_ID) | Compliance_Value esperado (AVG) dividido por el número máximo de denominadores, es decir, 12 |
PCALKK | PCM04 | 100.00% | 12 | 8.33% |
Hola @Georgia_H ,
Cambié el denominador y la medida de división en mi ejemplo. Tenga en cuenta que solo utilicé dos métricas dentro de ambas medidas para crear una tabla virtual.
El denominador ahora es más o menos una constante:
denominator =
var metricsToCount = {"PCM01" , "PCM23"}
var metricsCount = COUNTROWS( metricsToCount )
return metricsCount
Puede ampliar la definición del denominador de la siguiente manera:
denominator check =
var metricsToCount = {"PCM01" , "PCM23"}
var metricsCount = COUNTROWS( metricsToCount )
return
IF( FIRSTNONBLANK( 'Table'[Metrics_ID] , 'Table'[Metrics_ID] ) in metricsToCount
, metricsCount
, BLANK()
)
La medida de división ahora se ve así:
division =
var metricsToCount = {"PCM01" , "PCM23"}
var metricsCount = COUNTROWS( metricsToCount )
return
AVERAGEX(
'Table'
, if( FIRSTNONBLANK( 'Table'[Metrics_ID] , 'Table'[Metrics_ID] ) in metricsToCount
, DIVIDE( 'Table'[Avg Compliance %] , metricsCount )
, BLANK()
)
) * 100
El visual de la tabla se ve así:
Por supuesto, es posible crear una tabla a partir de las 12 métricas, entonces no tiene que repetir la definición en ambas medidas, pero si solo se usan en dos medidas, probablemente usaría la definición de medida.
Como la métrica se usa dentro de su tabla, contribuirá al contexto de filtro actual, pero el contexto de filtro actual no se expandirá, por esta razón, DISTINCTCOUNT devolverá 1.
Con suerte, esto ayudará a abordar su desafío.
Saludos
Tom
Solo una pregunta rápida, en lugar de codificar la lista de métricas en el var a continuación, ¿es posible verificar la lista de Metrics_ID que están presentes en la tabla? La razón es que algunos Metrics_ID nuevos pueden no tener datos para ningún período en particular, por lo tanto, no deben contarse como 1 como mi denominador constante. Con esta sintaxis, siempre obtengo el recuento de Metrics_ID codificado. Gracias.
var metricsToCount = {"PCM01" , "PCM23"}
Hola @Georgia_H ,
Es difícil proporcionar una solución que se adapte a sus necesidades si no describe sus requisitos por completo. Asegúrese de que los datos de ejemplo que proporcione representen el modelo de datos (tablas, relaciones, columnas calculadas y medidas). Considere la posibilidad de crear un archivo pbix que contenga datos de ejemplo, cargue el archivo pbix en onedrive o Dropbox y comparta el vínculo. si está utilizando Excel para crear los datos de ejemplo en lugar del método de entrada manual, comparta también el xlsx.
Comenzando con la pregunta sobre cómo tener
No es una buena idea cambiar la dirección de la pregunta inicial, ya que esto puede confundir a otros usuarios, ya que estos usuarios no considerarán este hilo para encontrar una respuesta a su problema.
Es mejor comenzar un nuevo hilo en su lugar.
El enfoque general para encontrar una solución para su problema podría verse así (estoy bastante seguro de que echo de menos información importante):
Saludos
Tom
Hola @Georgia_H ,
tal vez estas dos medidas proporcionen lo que está buscando:
denominador (básicamente un recuento distinto de la columna metrics_id, con ALL (la tabla) )
denominator =
CALCULATE(
DISTINCTCOUNT( 'Table'[Metrics_ID] )
, ALL( 'Table' )
)
Y la división (esta es más compleja ya que estoy usando la función de iterador de tabla AVERAGEX para calcular el promedio después de la división)
division =
AVERAGEX(
'Table'
, DIVIDE( 'Table'[Avg Compliance %] , [denominator] )
) * 100
Esto permite crear una tabla visual como la siguiente:
Saludos
Tom
Gracias por la rápida respuesta. El problema es que para aquellos con múltiples filas como PAMC en mi conjunto de datos, si selecciona PAMC, aún se mostrará como 1 en cada fila, en lugar de 12 en cada fila. Ese es el problema al que me enfrento. Además, tengo un filtro en ciertas metrics_ID para mi denominador.
Mi resultado esperado debería ser:
Resultados esperados para PAMC | ||||
LBU | Metrics_ID | Cumplimiento medio % | Denominador (único por Metrics_ID) | Compliance_Value esperado (AVG) dividido por el número máximo de denominadores, es decir, 12 |
PAMC | PCM01 | 78.80% | 12 | 6.57% |
PAMC | PCM03 | 81.30% | 12 | 6.78% |
PAMC | PCM04 | 62.10% | 12 | 5.18% |
PAMC | PCM09 | 56.80% | 12 | 4.73% |
PAMC | PCM10 | 59.60% | 12 | 4.97% |
PAMC | PCM19 | 68.60% | 12 | 5.72% |
PAMC | PCM20 | 55.90% | 12 | 4.66% |
PAMC | PCM23 | 85.90% | 12 | 7.16% |
PAMC | PCM33 | 65.00% | 12 | 5.42% |
PAMC | PCM34 | 47.80% | 12 | 3.98% |
PAMC | PCM35 | 57.10% | 12 | 4.76% |
PAMC | PCM36 | 62.00% | 12 | 5.17% |
Hola @Georgia_H ,
así es como se ven mis datos:
Aquí encontrarás mi pbix https://tommartens-my.sharepoint.com/:u:/g/personal/tom_minceddata_com/EUMsIS3jsJBAt6dpaI5hngsB9wwHO...
Saludos
Tom
Hi Tom,
Probé el concepto en mi conjunto de datos real.
Mi conjunto de datos real tiene más de 12 Metrics_ID, sin embargo, solo necesito contar con 12 Metrics_ID, por lo tanto, mi medida se escribe como:
ALCULADO(DISTINCTCOUNT('rep F_ITS_MetricsLanding'[Metrics_ID]),FILTRO('representante F_ITS_MetricsLanding','rep F_ITS_MetricsLanding'[Metrics_ID] en {"PCM01","PCM03","PCM04","PCM09","PCM10","PCM19","PCM20","PCM23","PCM33","PCM34","PCM35","PCM36"}),Todo(«representante F_ITS_MetricsLanding»[Metrics_ID]))
No obtengo los mismos resultados que el tuyo (12 en cada fila). Todavía obtengo 1 en las filas relevantes. ¿Qué podría estar mal con mi sintaxis dax?
Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.