cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Syndicate_Admin
Administrator
Administrator

Cómo hacer un valor de recuento distinto con el filtro como constante

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:

LBUMetrics_IDCumplimiento medio %
EILUXPCM2360.10%
PAMCPCM0178.80%
PAMCPCM0381.30%
PAMCPCM0462.10%
PAMCPCM0956.80%
PAMCPCM1059.60%
PAMCPCM1968.60%
PAMCPCM2055.90%
PAMCPCM2385.90%
PAMCPCM3365.00%
PAMCPCM3447.80%
PAMCPCM3557.10%
PAMCPCM3662.00%
PCALKKPCM04100.00%

RESULTADOS ESPERADOS:

Resultados esperados para EILUX
LBUMetrics_IDCumplimiento medio %Denominador (único por Metrics_ID)Compliance_Value esperado (AVG) dividido por el número máximo de denominadores, es decir, 12
EILUXPCM2360.10%125.00%

Resultados esperados para PCALKK
LBUMetrics_IDCumplimiento medio %Denominador (único por Metrics_ID)Compliance_Value esperado (AVG) dividido por el número máximo de denominadores, es decir, 12
PCALKKPCM04100.00%128.33%
7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

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í:

image.png

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

@TomMartens

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

  • DISTiNCTCOUNT supera el contexto de filtro actual,
  • a hay métricas disponibles que no deben ser consideradas y ahora
  • si las métricas que deben considerarse no tienen valores a lo largo de ningún período ( no hay ningún período en los datos de muestra), estas métricas deben eliminarse de la tabla.

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):

  • definir una tabla con todas las métricas posibles (tal vez una tabla de dimensiones en el modelo de datos de esquema en estrella)
  • Reducir la tabla eliminando métricas basadas en reglas como "una métrica que no tiene valores en ningún período" tiene que ser eliminada, tal vez esta regla se transforme a ningún valor en el año en curso
  • utilice la tabla encontrada para contar el denominador y dentro de la división.

Saludos

Tom

Syndicate_Admin
Administrator
Administrator

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:
image.png
Saludos

Tom

@TomMartens

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
LBUMetrics_IDCumplimiento medio %Denominador (único por Metrics_ID)Compliance_Value esperado (AVG) dividido por el número máximo de denominadores, es decir, 12
PAMCPCM0178.80%126.57%
PAMCPCM0381.30%126.78%
PAMCPCM0462.10%125.18%
PAMCPCM0956.80%124.73%
PAMCPCM1059.60%124.97%
PAMCPCM1968.60%125.72%
PAMCPCM2055.90%124.66%
PAMCPCM2385.90%127.16%
PAMCPCM3365.00%125.42%
PAMCPCM3447.80%123.98%
PAMCPCM3557.10%124.76%
PAMCPCM3662.00%125.17%

Hola @Georgia_H ,

así es como se ven mis datos:
image.png
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?

Georgia_H_0-1660378660141.png

Helpful resources

Announcements
Carousel_PBI_Wave1

2023 Release Wave 1 Plans

Power BI release plans for 2023 release wave 1 describes all new features releasing from April 2023 through September 2023.

Power BI Summit Carousel 2

Global Power BI Training

Make sure you register today for the Power BI Summit 2023. Don't miss all of the great sessions and speakers!

BizApps LATAM 2023

Business Application LATAM Summit 2023

Join the biggest FREE Business Applications Event in LATAM this February.

Power Platform Bootcamp

Global Power Platform Bootcamp

In this bootcamp we will deep-dive into Microsoft’s Power Platform stack with hands-on sessions and labs, delivered to you by experts and community leaders.