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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Syndicate_Admin
Administrator
Administrator

Calcular DistinctCounts basado en Max Date dentro del intervalo de fechas seleccionado

Hola

Estoy tratando de calcular una medida para contar el número distinto de nuevas combinaciones, cancelaciones y restablecimientos en función de la fecha máxima de transacción.

Aquí están los datos de muestra.

Tabla de hechos

MiembroFecha de la transacciónEstado
Jblunes, 4 de enero de 2021Nueva unión
DcDomingo, 10 de enero de 2021Nueva unión
JbSábado, 6 de febrero de 2021Cancelar
Jblunes, 8 de febrero de 2021Reintegrar
DcMiércoles, 10 de febrero de 2021Cancelar

La tabla de hechos está conectada a la tabla Dim Date

Lo que estoy tratando de lograr es

Por ejemplo:

Si selecciono un intervalo de fechas del 1 de enero de 2021 al 5 de enero de 2021

Nuevas uniones (o) 1 (Solo JB tiene un nuevo estado de unión)

Cancelar (o) n.o 0 (ninguno de los miembros tiene el estado de cancelación)

Restablecer (o) 0 (ninguno de los miembros tiene el estado de restablecimiento)

Si selecciono el intervalo de fechas del 1 de enero de 2021 al 31 de enero de 2021

Nuevas Uniones (-) 2 (JB y DC tienen nuevo estado de unión)

Cancelar (o) n.o 0 (ninguno de los miembros tiene el estado de cancelación)

Restablecer (o) 0 (ninguno de los miembros tiene el estado de restablecimiento)

Si selecciono el rango de fechas del 1 de enero de 2021 al 7 de febrero de 2021

Nuevas uniones (-) 1 (este es el miembro DC y no JB)

Cancelar (o) 1 (ya que JB ahora está en estado de cancelación)

Restablecer (o) 0 (ninguno de los miembros tiene el estado de restablecimiento)

Si selecciono el rango de fechas del 1 de enero de 2021 al 28 de febrero de 2021

Nuevas uniones (-) - 0 (Ninguno de los miembros está en el nuevo estado de unión ahora)

Cancelar (o) 1 (ya que el controlador de dominio ahora está en estado de cancelación)

Restablecimiento (o) 1 (dado que JB ahora está en el estado de restablecimiento)

Espero haber podido explicar la pregunta.

Cualquier ayuda aquí es muy apreciada.

Gracias

3 ACCEPTED SOLUTIONS

No @JIGAR,

Pruebe la siguiente fórmula:

Result = 
var _Table = 
    FILTER(
        ALLSELECTED('Fact Table'), 
        'Fact Table'[Multiplier] = 1 
        && 'Fact Table'[Member] = MAX('Fact Table'[Member]) 
    )
var _Date = 
    MINX(
        _Table,
        'Fact Table'[Transaction Date]
    )
return 
    COALESCE(
        CALCULATE(
            MAX('Fact Table'[Status]),
            FILTER(
                _Table,
                'Fact Table'[Transaction Date] = _Date
            )
        ),
        "NA"
    )

v-kkf-msft_0-1614661824291.png

Este es mi archivo PBIX.

https://microsoftapc-my.sharepoint.com/:u:/g/personal/v-lazhang_microsoft_com/EefZ93NSdIZOrajS29WnBw...

Si el problema aún no se ha resuelto, proporcione información detallada sobre errores o el resultado esperado que espera. Hágamelo saber inmediatamente, esperando su respuesta.

Saludos
Winniz

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

View solution in original post

@v-kkf-msft : Esta cosa funcionó muy bien. Muchas gracias.

Sin embargo, ¿cómo calculo el recuento de miembros en cada estado.

Así que ir con el mismo ejemplo anterior:

Para este intervalo de fechas y resultado

JIGAR_0-1619805642071.png

¿Cómo puedo mostrar el recuento

Restablecer = 1

Nueva unión = 0

Cancelar = 0

Este recuento debe cambiar en función del intervalo de fechas seleccionado y también conservar la lógica anterior.

¿Puede ayudarme con esa lógica DAX?

Gracias

View solution in original post

No @JIGAR,

Pruebe la siguiente fórmula:

Measure = 
var _count=
    IF(
        MAX('Fact Table'[Status]) = [Result],
        COUNT('Fact Table'[Multiplier])
    )
var total = 
    CALCULATE(
        DISTINCTCOUNT('Fact Table'[Member]),
        FILTER(
            'Fact Table',
            [Result] <> "NA"
        )
    )
return 
    IF(
        ISFILTERED('Fact Table'[Status]),
        _count,
        total
    )

image.png

Si el problema aún no se ha resuelto, proporcione información detallada sobre errores o el resultado esperado que espera. Hágamelo saber inmediatamente, esperando su respuesta.

Saludos
Winniz

View solution in original post

11 REPLIES 11
Syndicate_Admin
Administrator
Administrator

@JIGAR , Crear una medida como

Measure 7 = Sumx(SUMMARIZE(Table3,Table3[Member],"_1",if(CALCULATE(max(Table3[Status]), filter(Table3, Table3[Transaction Date] =CALCULATE(max(Table3[Transaction Date]), filter(ALLSELECTED(Table3), Table3[Member] =max(Table3[Member]))))) ="New Join",1,0)),[_1])

Muchas gracias @amitchandak

Esta lógica funcionó perfectamente bien hasta que intenté trazar estas medidas en un gráfico de líneas/gráfico de columnas.

Al trazar estas medidas en un gráfico de líneas, es doble contar los miembros.

Para un intervalo de fechas del 1 de enero de 2021 al 28 de febrero de 2021,

JB está ahora en estado de reinstaurado

DC está ahora en estado de cancelación.

La captura de pantalla siguiente muestra que hay 2 miembros en Nuevas Uniones y 1 cada uno en restablecer y cancelar.

JIGAR_0-1613490603651.png

Las tarjetas KPI en la parte superior muestran los números correctos.

¿Alguna idea de cómo manejo esto?

Gracias de nuevo por su ayuda 😊

No @JIGAR ,

Pruebe la siguiente fórmula para crear dos medidas:

RecentDate = 
CALCULATE(
  MAX( 'Fact Table'[Transaction Date] ), 
  FILTER( 
    ALLSELECTED( 'Fact Table' ), 
    'Fact Table'[Member] = MAX( 'Fact Table'[Member] )
  )
)
MemberCount = 
VAR MemberSegment = 
    FILTER(
        ALLSELECTED('Fact Table'),
        VAR NewDate = [RecentDate]
        VAR SegmentForMember = 
            FILTER (
                'Fact Table',
                'Fact Table'[Member] = 'Fact Table'[Member]
                &&'Fact Table'[Transaction Date] = NewDate
            )
        VAR IsMemberInSegments = NOT ISEMPTY(SegmentForMember) 
        RETURN IsMemberInSegments 
    )
VAR Result = 
    CALCULATE (
        COUNTROWS( 'Fact Table' ),
        KEEPFILTERS(MemberSegment)
    )
RETURN COALESCE(Result,0)

image.png

Si el problema aún no se ha resuelto, proporcione información de error detallada o el resultado esperado que espera. Hágamelo saber inmediatamente, esperando su respuesta.

Saludos
Winniz
Si este post ayuda, entonces considera Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

@v-kkf-msft :

Disculpas por el retraso en la respuesta. Esta lógica funcionó correctamente cuando intenté trazarla en el gráfico de columnas. Muchas gracias por la fórmula de medida.

Sin embargo, la tabla muestra el recuento total de miembros como 5 (ver captura de pantalla). Debe mostrar 2 como se muestra en la medida adyacente.

JIGAR_2-1614632027935.png

Mi requisito ha cambiado un poco aquí.

Quiero mostrar el primer estado positivo para cada miembro. es decir, - Estado basado en la fecha mínima de transacción donde el valor multiplicador es +1


Por ejemplo.

Para el intervalo de fechas 1/1/2021 a 2/28/2021

JB - Nueva unión

DC - Nueva unión

Para el intervalo de fechas 2/1/2021 a 2/28/2021

JB - ReInstate

DC - NA

Espero que eso explique la situación. ¿Puede ayudar en cómo manejar este escenario?

Consulte el nuevo formato de datos adjuntos a continuación:

JIGAR_1-1614631945006.png

Muchas gracias

saludos

No @JIGAR,

Pruebe la siguiente fórmula:

Result = 
var _Table = 
    FILTER(
        ALLSELECTED('Fact Table'), 
        'Fact Table'[Multiplier] = 1 
        && 'Fact Table'[Member] = MAX('Fact Table'[Member]) 
    )
var _Date = 
    MINX(
        _Table,
        'Fact Table'[Transaction Date]
    )
return 
    COALESCE(
        CALCULATE(
            MAX('Fact Table'[Status]),
            FILTER(
                _Table,
                'Fact Table'[Transaction Date] = _Date
            )
        ),
        "NA"
    )

v-kkf-msft_0-1614661824291.png

Este es mi archivo PBIX.

https://microsoftapc-my.sharepoint.com/:u:/g/personal/v-lazhang_microsoft_com/EefZ93NSdIZOrajS29WnBw...

Si el problema aún no se ha resuelto, proporcione información detallada sobre errores o el resultado esperado que espera. Hágamelo saber inmediatamente, esperando su respuesta.

Saludos
Winniz

Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los demás miembros a encontrarla más rápidamente.

@v-kkf-msft :

¿Puede ayudarme con la medida de mostrar los recuentos para cada estado?

Gracias

No @JIGAR,

Pruebe la siguiente fórmula:

Measure = 
IF(
    MAX('Fact Table'[Status]) = [Result],
    COUNT('Fact Table'[Multiplier])
)

image.png

Si el problema aún no se ha resuelto, proporcione información detallada sobre errores o el resultado esperado que espera. Hágamelo saber inmediatamente, esperando su respuesta.

Saludos
Winniz

@v-kkf-msft :

Esa lógica está bien. Sin embargo, el total parece ser incorrecto.

Este resultado sería incorrecto si usamos esta medida en una tarjeta.

JIGAR_0-1620191590335.png

No @JIGAR,

Pruebe la siguiente fórmula:

Measure = 
var _count=
    IF(
        MAX('Fact Table'[Status]) = [Result],
        COUNT('Fact Table'[Multiplier])
    )
var total = 
    CALCULATE(
        DISTINCTCOUNT('Fact Table'[Member]),
        FILTER(
            'Fact Table',
            [Result] <> "NA"
        )
    )
return 
    IF(
        ISFILTERED('Fact Table'[Status]),
        _count,
        total
    )

image.png

Si el problema aún no se ha resuelto, proporcione información detallada sobre errores o el resultado esperado que espera. Hágamelo saber inmediatamente, esperando su respuesta.

Saludos
Winniz

@v-kkf-msft : Esa cosa funcionó muy bien.

Muchas gracias por su ayuda !! Muy apreciado 😊

@v-kkf-msft : Esta cosa funcionó muy bien. Muchas gracias.

Sin embargo, ¿cómo calculo el recuento de miembros en cada estado.

Así que ir con el mismo ejemplo anterior:

Para este intervalo de fechas y resultado

JIGAR_0-1619805642071.png

¿Cómo puedo mostrar el recuento

Restablecer = 1

Nueva unión = 0

Cancelar = 0

Este recuento debe cambiar en función del intervalo de fechas seleccionado y también conservar la lógica anterior.

¿Puede ayudarme con esa lógica DAX?

Gracias

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors