Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Recuento distinto del valor de columna de una tabla basada en la medida de otra tabla

Esta es una continuación de la publicación anterior: Resuelto: Re: Ayuda con la suma agrupada - Microsoft Power BI Community

Tengo estas dos tablas A y B.

Todos ConsumerIdtaskcodes en la tabla A también están en la tabla B.

Enlaces a CSV A y B:

https://drive.google.com/file/d/1-PquFaIlYsS_qeY-D1D1uiwXl2NZSUH8/view?usp=sharing

https://drive.google.com/file/d/1_pOz3eAUAxr5-tAdXAeZxrXwPbRLVQOE/view?usp=sharing

Hay algunos consumerIdtaskcode en B pero no en A.

La tabla B tiene la columna confidencescores, pero la tabla A no.

Olajumi_0-1629656255073.png

La tarea fisrt es crear una medida para contar el ConsumerIdTaskcode en la tabla B con puntuación de confianza (agregada por ConsumeridTaskcode) por encima de un threshhold (por ejemplo, 71). La medida siguiente trabaja para ésa:

Contar más de 71 =
COUNTROWS (
FILTRO (
VALORES ( 'informe ConsumerTaskCodes' [ConsumerIdTaskcode] ),
CALCULAR ( SUMA ( 'report ConsumerTaskCodes'[confidenceScore] ) ) > 71
)
)

Resultado de la Tabla B

Olajumi_1-1629656788929.png

Pregunta 1:

Aquí está mi siguiente tarea:

Identifique y cree una medida para determinar SOLO el recuento distinto de ConsumerIdtaskcodes en la tabla A que también están en B con confidencescore (en B) por encima de 71.

La respuesta debe ser 2: De la Tabla A

Resultado de la tabla A

Olajumi_2-1629657015653.png

Pregunta 2. Por extensión, cree un cálculo de dax para

Enumere los códigos que están en la tabla B pero no en A (todavía con Confidencescore > 71.

Enlaces a CSV A y B:

https://drive.google.com/file/d/1-PquFaIlYsS_qeY-D1D1uiwXl2NZSUH8/view?usp=sharing

https://drive.google.com/file/d/1_pOz3eAUAxr5-tAdXAeZxrXwPbRLVQOE/view?usp=sharing

@mahoneypat

2 ACCEPTED SOLUTIONS
Syndicate_Admin
Administrator
Administrator

@Olajumi Pregunta 1:

Count Over 71 Distinct = 
VAR __TableA = DISTINCT('dataTableA'[ConsumerIdTaskcode])
VAR __TableB =
    SELECTCOLUMNS(
        FILTER(
            SUMMARIZE(
                'report ConsumerTaskCodes',
                [ConsumerIdTaskcode],
                "__Confidence",SUM('report ConsumerTaskCodes'[confidenceScore])
            ),
            [__Confidence] > 71
        ),
        "ConsumerIdTaskcode",[ConsumerIdTaskcode]
    )
RETURN
    COUNTROWS(INTERSECT(__TableA,__TableB))

Pregunta 2:

Count Over 71 Distinct Reverse = 
VAR __TableA = DISTINCT('dataTableA'[ConsumerIdTaskcode])
VAR __TableB =
    SELECTCOLUMNS(
        FILTER(
            SUMMARIZE(
                'report ConsumerTaskCodes',
                [ConsumerIdTaskcode],
                "__Confidence",SUM('report ConsumerTaskCodes'[confidenceScore])
            ),
            [__Confidence] > 71
        ),
        "ConsumerIdTaskcode",[ConsumerIdTaskcode]
    )
RETURN
    COUNTROWS(EXCEPT(__TableB,__TableA))

View solution in original post

@Olajumi Probar:

Count Over 71 Distinct Reverse = 
VAR __TableA = DISTINCT('dataTableA'[ConsumerIdTaskcode])
VAR __TableB =
    SELECTCOLUMNS(
        FILTER(
            SUMMARIZE(
                'report ConsumerTaskCodes',
                [ConsumerIdTaskcode],
                "__Confidence",SUM('report ConsumerTaskCodes'[confidenceScore])
            ),
            [__Confidence] > 71
        ),
        "ConsumerIdTaskcode",[ConsumerIdTaskcode]
    )
  VAR __Ids = EXCEPT(__TableB,__TableA)
  VAR __Table = FILTER('report ConsumerTaskCodes',[ConsumerIdTaskcode] IN __Ids)
RETURN
  CONCATENATEX(__Table,[taskCode],",")

View solution in original post

11 REPLIES 11
Syndicate_Admin
Administrator
Administrator

@Olajumi

Puede probar esto

Measure = 
VAR tbl=SUMMARIZE('dataTableB',dataTableB[ConsumerIdTaskcode],"sum",sum(dataTableB[confidenceScore]))
return COUNTROWS(FILTER(tbl,[sum]>71))

Measure 2 = 
VAR tbl=ADDCOLUMNS(SUMMARIZE('dataTableB',dataTableB[ConsumerIdTaskcode],"sum",sum(dataTableB[confidenceScore])),"check",if(maxx(FILTER(dataTableA,dataTableA[ConsumerIdTaskcode]=dataTableB[ConsumerIdTaskcode]),dataTableA[ConsumerIdTaskcode])<>"","Yes"))
return COUNTROWS(FILTER(tbl,[sum]>71&&[check]="Yes"))

1.PNG

Syndicate_Admin
Administrator
Administrator

@Olajumi Pregunta 1:

Count Over 71 Distinct = 
VAR __TableA = DISTINCT('dataTableA'[ConsumerIdTaskcode])
VAR __TableB =
    SELECTCOLUMNS(
        FILTER(
            SUMMARIZE(
                'report ConsumerTaskCodes',
                [ConsumerIdTaskcode],
                "__Confidence",SUM('report ConsumerTaskCodes'[confidenceScore])
            ),
            [__Confidence] > 71
        ),
        "ConsumerIdTaskcode",[ConsumerIdTaskcode]
    )
RETURN
    COUNTROWS(INTERSECT(__TableA,__TableB))

Pregunta 2:

Count Over 71 Distinct Reverse = 
VAR __TableA = DISTINCT('dataTableA'[ConsumerIdTaskcode])
VAR __TableB =
    SELECTCOLUMNS(
        FILTER(
            SUMMARIZE(
                'report ConsumerTaskCodes',
                [ConsumerIdTaskcode],
                "__Confidence",SUM('report ConsumerTaskCodes'[confidenceScore])
            ),
            [__Confidence] > 71
        ),
        "ConsumerIdTaskcode",[ConsumerIdTaskcode]
    )
RETURN
    COUNTROWS(EXCEPT(__TableB,__TableA))

@Greg_Deckler

En la pregunta 2,¿cómo determino los códigos de tarea reales (no ConsumerIdTaskcode) que están en la tabla B pero no en A (todavía con Confidencescore > 71? Aquí es donde me dirigía y pude averiguarlo, pero resultando difícil. Gracias. Creo que primero está bien.

@Olajumi Simplemente use CONCATENATEX en lugar de COUNTROWS.

@Greg_Deckler

La primera parte de ConsumerIdTaskcode es un número entero (longitud variable) mientras que la otra parte es un texto. Por ejemplo, para ConsumerIdTaskcode 1961L160, el Taskcode es L160. Así que necesito elegir el texto de ConsumerIdTaskcode para representar el Taskcode.

@Olajumi Utilice CONCATENATEX(EXCEPT(__TableB,__TableA), RIGHT([ConsumerIdTaskcode,4),", ") ?

Gracias de nuevo, @Greg_Deckler , ¿podemos informar de esto basado en la columna Taskcode en su lugar? En los datos de la vida real, la parte Taskcode de ConsumerIdTaskcode no siempre tiene 4 caracteres, varía mucho. También lo hace el ConsumerId. Por lo tanto, es más seguro informar de la columna Taskcode independiente.

@Olajumi Probar:

Count Over 71 Distinct Reverse = 
VAR __TableA = DISTINCT('dataTableA'[ConsumerIdTaskcode])
VAR __TableB =
    SELECTCOLUMNS(
        FILTER(
            SUMMARIZE(
                'report ConsumerTaskCodes',
                [ConsumerIdTaskcode],
                "__Confidence",SUM('report ConsumerTaskCodes'[confidenceScore])
            ),
            [__Confidence] > 71
        ),
        "ConsumerIdTaskcode",[ConsumerIdTaskcode]
    )
  VAR __Ids = EXCEPT(__TableB,__TableA)
  VAR __Table = FILTER('report ConsumerTaskCodes',[ConsumerIdTaskcode] IN __Ids)
RETURN
  CONCATENATEX(__Table,[taskCode],",")

¡Usted es increíble!

Hice algunas comprobaciones puntuales y se ve bien hasta ahora.

Olajumi_0-1629725765502.png

¿Se puede hacer una lista distinta y ordenar en una columna?

@Greg_Deckler

@Olajumi Bueno, no puede devolver una tabla en una medida. Tendría que ser una tabla calculada. Siento que estoy trabajando con como la mitad de la información sobre lo que estás tratando de lograr.

Gracias. Seguiré adelante y aceptaré la solución. Funciona para mí; Trato la visualización de la columna como otro problema fuera de esta copia.

Mientras tanto, ¿puede proporcionar una pista sobre cómo hacer que este resultado sean valores distintos para que los códigos no se repitan?

Count Over 71 Distinct Reverse = 
VAR __TableA = DISTINCT('dataTableA'[ConsumerIdTaskcode])
VAR __TableB =
    SELECTCOLUMNS(
        FILTER(
            SUMMARIZE(
                'report ConsumerTaskCodes',
                [ConsumerIdTaskcode],
                "__Confidence",SUM('report ConsumerTaskCodes'[confidenceScore])
            ),
            [__Confidence] > 71
        ),
        "ConsumerIdTaskcode",[ConsumerIdTaskcode]
    )
  VAR __Ids = EXCEPT(__TableB,__TableA)
  VAR __Table = FILTER('report ConsumerTaskCodes',[ConsumerIdTaskcode] IN __Ids)
RETURN
  CONCATENATEX(__Table,[taskCode],",")

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.