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
v-lid-msft
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))
v-lid-msft
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))
v-lid-msft
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