DAX: recuento de tickets abiertos por año y mes

Un usuario Pregunto ✅

sureshsay2

Hola a todos,

Soy nuevo en Power BI, estoy tratando de obtener recuentos de tickets abiertos similares al usuario en el caso resuelto a continuación.

https://community.powerbi.com/t5/Desktop/dax-how-to-count-open-tickets/td-p/100614

pero mis datos están disponibles en varios años y no solo en un año como en la publicación original.

Resultado esperado del informe:

Total activo Abrió Cerrado
16 DE DICIEMBRE 2 2 0
17 de enero 3 1 2
17 de febrero 2 1 0
Mar17 5 3 0
17 ABR 6 1 2

Data de muestra:

Id_problema OPENYM CLOSEYM
T1 201612
T2 201612 201701
T3 201701 201701
T4 201703
T5 201703
T6 201704
T7 201705 201705
T8 201705 201706

Probé el siguiente dax pero el recuento no es correcto

Tabla resumen =
SELECCIONAR COLUMNAS (
ADDCOLUMNS (FILTER (DISTINCT (SELECTCOLUMNS (UNION (VALUES (Prob_Aug[CloseYM]), VALORES (Prob_Aug[OpenYM])),»Mes»,[CloseYM])),[Month]<> EN BLANCO ()),
«Abrir», COUNTAX (FILTER (ALL (Prob_Aug),[OpenYM]= ANTES ([Month]) || Y ([OpenYM]= ANTES ([Month]), Prob_Aug[CloseYM]> MAX (Prob_Aug[OpenYM]))),[PROBLEM_ID]),
«Cerrar», CONTADOR (FILTRO (TODOS (Prob_Aug),[CloseYM]= ANTES ([Month])),[PROBLEM_ID]),
«Total», COUNTAX (FILTER (ALL (Prob_Aug), Prob_Aug[OpenYM]<= ANTES ([Month]) && OR (Prob_Aug[CloseYM]> = ANTES ([Month]), Prob_Aug[CloseYM]= EN BLANCO ())),[PROBLEM_ID])),
«Mes»,[Month],
«Cerrar», si ([Close]> 0,[Close], 0),
«Abierto», si ([Open]> 0,[Open], 0),
«Total», si ([Total]> 0,[Total], 0))

Hola @ sureshsay2,

Podemos intentar crear una tabla calculada y tres medidas para cumplir con sus requisitos:

Tabla calculada: la columna «MMM-AA» está ordenada por la columna «ordenar»

Calendar = 
VAR StartDate =
    MIN ( 'Prob_Aug'[OPENYM] )
VAR EndDate =
    MAX ( 'Prob_Aug'[CLOSEYM] )
RETURN
    ADDCOLUMNS (
        CALENDAR (
            DATE ( INT ( StartDate / 100 ), MOD ( StartDate, INT ( StartDate / 100 ) ), 1 ),
            DATE ( INT ( EndDate / 100 ), MOD ( EndDate, INT ( EndDate / 100 ) ) + 1, 1 ) - 1
        ),
        "MMM-YY", FORMAT ( [Date], "MMM YY" ),"sort",CONVERT(FORMAT ( [Date], "YYYYMM" ),INTEGER)
    )

La medida:

Total Active = 
CALCULATE (
    DISTINCTCOUNT ( Prob_Aug[Problem_id] ),
    FILTER (
        'Prob_Aug',
        AND (
            IF (
                ISBLANK ( 'Prob_Aug'[CLOSEYM] ),
                TRUE (),
                DATE ( INT ( 'Prob_Aug'[CLOSEYM] / 100 ), MOD ( 'Prob_Aug'[CLOSEYM], INT ( 'Prob_Aug'[CLOSEYM] / 100 ) ) + 1, 1 )
                    > MAX ( 'Calendar'[Date] )
            ),
            DATE ( INT ( 'Prob_Aug'[OPENYM] / 100 ), MOD ( 'Prob_Aug'[OPENYM], INT ( 'Prob_Aug'[OPENYM] / 100 ) ), 1 )
                <= max('Calendar'[Date])
        )
    )
)

Opened = CALCULATE (
    DISTINCTCOUNT ( Prob_Aug[Problem_id] ),
    FILTER (
        'Prob_Aug',
            DATE ( INT ( 'Prob_Aug'[OPENYM] / 100 ), MOD ( 'Prob_Aug'[OPENYM], INT ( 'Prob_Aug'[OPENYM] / 100 ) ), 1 )
                in DISTINCT('Calendar'[Date])
        )
    )+0

Closed = CALCULATE (
    DISTINCTCOUNT ( Prob_Aug[Problem_id] ),
    FILTER (
        'Prob_Aug',
        IF(ISBLANK('Prob_Aug'[CLOSEYM]),FALSE(),
            DATE ( INT ( 'Prob_Aug'[CLOSEYM] / 100 ), MOD ( 'Prob_Aug'[CLOSEYM], INT ( 'Prob_Aug'[CLOSEYM] / 100 ) ), 1 )
                in DISTINCT('Calendar'[Date])
        )
    ))+0

Si no cumple con sus requisitos, ¿podría mostrar el resultado esperado exacto en función de las tablas que ha compartido? los casos abiertos para el 17 de febrero parecen ser 0 en lugar de 1.

Por cierto, archivo PBIX adjunto.

Atentamente,

sureshsay2

En respuesta a v-lid-msft

Disculpas por la demora, el problema fue con los datos que estaba usando, tenía algunos duplicados debido al proceso de extracción de ETL, la fórmula a continuación funciona correctamente, tuve que eliminar el signo igual en la fórmula de conteo abierto y me dio resultados perfectos.

Tabla resumen =
SELECCIONAR COLUMNAS (
ADDCOLUMNS (FILTER (DISTINCT (SELECTCOLUMNS (UNION (VALUES (Prob_Aug[CloseYM]), VALORES (Prob_Aug[OpenYM])),»Mes»,[CloseYM])),[Month]<> EN BLANCO ()),
«Creado», COUNTAX (FILTER (ALL (Prob_Aug),[OpenYM]= ANTES ([Month]) || Y ([OpenYM]= ANTES ([Month]), Prob_Aug[CloseYM]> MAX (Prob_Aug[OpenYM]))),[PROBLEM_ID]),
«Cerrado», COUNTAX (FILTER (ALL (Prob_Aug),[CloseYM]= ANTES ([Month])),[PROBLEM_ID]),
«Abrir», COUNTAX (FILTER (ALL (Prob_Aug), Prob_Aug[OpenYM]<= ANTES ([Month]) && OR (Prob_Aug[CloseYM]> ANTES ([Month]), Prob_Aug[CloseYM]= EN BLANCO ())),[PROBLEM_ID])),
«Mes»,[Month],
«Cerrado», si ([Closed]> 0,[Closed], 0),
«Creado», si ([Created]> 0,[Created], 0),
«Abierto», si ([Open]> 0,[Open], 0))

Hola @ sureshsay2,

¿Qué tal el resultado después de seguir las sugerencias mencionadas en mi publicación original? ¿Podría proporcionar más detalles al respecto si no cumple con sus requisitos?

Atentamente,

sureshsay2

En respuesta a v-lid-msft

Disculpas por la demora, el problema fue con los datos que estaba usando, tenía algunos duplicados debido al proceso de extracción de ETL, la fórmula a continuación funciona correctamente, tuve que eliminar el signo igual en la fórmula de conteo abierto y me dio resultados perfectos.

Tabla resumen =
SELECCIONAR COLUMNAS (
ADDCOLUMNS (FILTER (DISTINCT (SELECTCOLUMNS (UNION (VALUES (Prob_Aug[CloseYM]), VALORES (Prob_Aug[OpenYM])),»Mes»,[CloseYM])),[Month]<> EN BLANCO ()),
«Creado», COUNTAX (FILTER (ALL (Prob_Aug),[OpenYM]= ANTES ([Month]) || Y ([OpenYM]= ANTES ([Month]), Prob_Aug[CloseYM]> MAX (Prob_Aug[OpenYM]))),[PROBLEM_ID]),
«Cerrado», COUNTAX (FILTER (ALL (Prob_Aug),[CloseYM]= ANTES ([Month])),[PROBLEM_ID]),
«Abrir», COUNTAX (FILTER (ALL (Prob_Aug), Prob_Aug[OpenYM]<= ANTES ([Month]) && OR (Prob_Aug[CloseYM]> ANTES ([Month]), Prob_Aug[CloseYM]= EN BLANCO ())),[PROBLEM_ID])),
«Mes»,[Month],
«Cerrado», si ([Closed]> 0,[Closed], 0),
«Creado», si ([Created]> 0,[Created], 0),
«Abierto», si ([Open]> 0,[Open], 0))

Hola @ sureshsay2,

Podemos intentar crear una tabla calculada y tres medidas para cumplir con sus requisitos:

Tabla calculada: la columna «MMM-AA» está ordenada por la columna «ordenar»

Calendar = 
VAR StartDate =
    MIN ( 'Prob_Aug'[OPENYM] )
VAR EndDate =
    MAX ( 'Prob_Aug'[CLOSEYM] )
RETURN
    ADDCOLUMNS (
        CALENDAR (
            DATE ( INT ( StartDate / 100 ), MOD ( StartDate, INT ( StartDate / 100 ) ), 1 ),
            DATE ( INT ( EndDate / 100 ), MOD ( EndDate, INT ( EndDate / 100 ) ) + 1, 1 ) - 1
        ),
        "MMM-YY", FORMAT ( [Date], "MMM YY" ),"sort",CONVERT(FORMAT ( [Date], "YYYYMM" ),INTEGER)
    )

La medida:

Total Active = 
CALCULATE (
    DISTINCTCOUNT ( Prob_Aug[Problem_id] ),
    FILTER (
        'Prob_Aug',
        AND (
            IF (
                ISBLANK ( 'Prob_Aug'[CLOSEYM] ),
                TRUE (),
                DATE ( INT ( 'Prob_Aug'[CLOSEYM] / 100 ), MOD ( 'Prob_Aug'[CLOSEYM], INT ( 'Prob_Aug'[CLOSEYM] / 100 ) ) + 1, 1 )
                    > MAX ( 'Calendar'[Date] )
            ),
            DATE ( INT ( 'Prob_Aug'[OPENYM] / 100 ), MOD ( 'Prob_Aug'[OPENYM], INT ( 'Prob_Aug'[OPENYM] / 100 ) ), 1 )
                <= max('Calendar'[Date])
        )
    )
)

Opened = CALCULATE (
    DISTINCTCOUNT ( Prob_Aug[Problem_id] ),
    FILTER (
        'Prob_Aug',
            DATE ( INT ( 'Prob_Aug'[OPENYM] / 100 ), MOD ( 'Prob_Aug'[OPENYM], INT ( 'Prob_Aug'[OPENYM] / 100 ) ), 1 )
                in DISTINCT('Calendar'[Date])
        )
    )+0

Closed = CALCULATE (
    DISTINCTCOUNT ( Prob_Aug[Problem_id] ),
    FILTER (
        'Prob_Aug',
        IF(ISBLANK('Prob_Aug'[CLOSEYM]),FALSE(),
            DATE ( INT ( 'Prob_Aug'[CLOSEYM] / 100 ), MOD ( 'Prob_Aug'[CLOSEYM], INT ( 'Prob_Aug'[CLOSEYM] / 100 ) ), 1 )
                in DISTINCT('Calendar'[Date])
        )
    ))+0

Si no cumple con sus requisitos, ¿podría mostrar el resultado esperado exacto en función de las tablas que ha compartido? los casos abiertos para el 17 de febrero parecen ser 0 en lugar de 1.

Por cierto, archivo PBIX adjunto.

Atentamente,

Amitchandak

@ sureshsay2

Aquí hay una solución muy similar. Crea una tabla de meses en lugar de la fecha y haz eso

https: //community.powerbi.com/t5/Community-Blog/HR-Analytics-Active-Employee-Hire-and-Termination-tr …

Conviértalos en el mes hasta la fecha como

Fecha de inicio = fecha (izquierda ([OPENYM], 4), derecha ([OPENYM], 2), 1)

Y usa un tipo de fórmula similar

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *