Forum Discussion
Contar con múltiples condiciones - DAX
hola
Estoy tratando de contar órdenes que deben enviarse hoy usando una fórmula DAX y no estoy obteniendo resultados.
Los pedidos de envío deben estar determinados por:
- Fecha creada
- Tiempo creado
- Prioridad de anfitrión
Los requisitos empresariales son los siguientes: cuente todos los pedidos con la prioridad de host 10-29 siempre y cuando no se hayan creado después de las 15:15 de hoy y cuente todos los pedidos hospedan la prioridad 9 y más bajo siempre y cuando no se hayan creado después de las 16:15 de hoy.
Hice una fórmula de recuento de pedidos:
CALCULAR (
[Recuento de órdenes],
FILTRO (
Encabezados
SWITCH (
CIERTO (),
Encabezados[Fecha creada] = MAX ( 'Hora de fecha actual'[Fecha] )
&& ( Encabezados[Tiempo creado] > "15:15" ), NO ( Encabezados[Prioridad de host] >= "10"),
Encabezados[Fecha creada] = MAX ( 'Hora de fecha actual'[Fecha] )
&& ( Encabezados[Tiempo creado] > "16:15" ), NO ( Encabezados[Prioridad de host] < "10")
)
)
)
¿Qué estoy haciendo mal?
Así son mis datos:
No hay @b2wise
Creo un archivo de ejemplo en modo DQ, aquí están mis pasos de operación.
-
Cambiar el tipo de columna [Fecha creada] a Fecha
Dado que el tipo de las 3 columnas es texto y no se puede cambiar, así que cree las medidas a continuación.
sortbytime = //we need to create this measure so that we can sort by [Time Created], because type of this column is text VAR _timecreated = SELECTEDVALUE ( Headers[Time Created] ) RETURN VALUE ( LEFT ( _timecreated, 2 ) ) * 100 + VALUE ( MID ( _timecreated, 4, 2 ) )get priority = //the reason to create this measure is same as the measure above VAR _pri = SELECTEDVALUE ( Headers[Host Priority] ) VAR _lenvalue = IF ( LEN ( _pri ) > 1, LEN ( _pri ) - 1 ) VAR _getnumfromtext = RIGHT ( _pri, _lenvalue ) VAR _vau = IF ( ISERROR ( VALUE ( _pri ) ), _getnumfromtext, VALUE ( _pri ) ) RETURN _vaua continuación, cree el recuento de medidas y colótelo en el visual Tarjeta.
count = VAR _timecreated = SELECTEDVALUE ( Headers[Time Created] ) VAR _time = VALUE ( LEFT ( _timecreated, 2 ) ) * 100 + VALUE ( MID ( _timecreated, 4, 2 ) ) VAR _count = CALCULATE ( COUNTROWS ( Headers ), FILTER ( ALL ( Headers ), ( Headers[Date Created] < DATE ( 2021, 5, 25 )//I replace your MAX ( 'Current Date Time'[Date] ) with DATE ( 2021, 5, 25 ), because I dont know the structure of 'Current Date Time'[Date], you can change it back later. && [get priority] >= 1 && [get priority] <= 29 ) || ( Headers[Date Created] = DATE ( 2021, 5, 25 ) && [get priority] >= 10 && [sortbytime] < 1515 ) || ( Headers[Date Created] = DATE ( 2021, 5, 25 ) && [get priority] < 10 && [sortbytime] < 1615 ) ) ) RETURN _countresultado:
Saludos
Equipo de apoyo a la comunidad _ Tang
Si esta publicación ayuda,por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
4 Replies
- Syndicate_Admin
Administrator
Primero querrá cambiar los tipos de datos. La fecha de creación es fecha y debe ser fecha, y las columnas de hora y prioridad son Texto (esas no funcionarán bien en expresión donde se usa <, >, etc. Una vez que lo hagas, puedes usar una expresión como esta:
Debe enviar pedidos =
Máx. VAR =
MAX ( 'Hora de fecha actual'[Fecha] )
devolución
CALCULAR (
[Recuento de órdenes],
Encabezados[Fecha creada] = maxdate,
FILTRO (
ALL ( Encabezados[Creados en tiempo], Encabezados[Prioridad de host] ) ,
O (
Encabezados[Tiempo creado] > TIME ( 15, 15, 0 )
&& Encabezados[Prioridad host] <= 10,
Encabezados[Tiempo creado] > TIME ( 16, 15, 0 )
&& Encabezados[Prioridad de host] > 10
)
)
)¿Está seguro de que solo desea contar los creados en la fecha máxima?
palmadita
- Syndicate_Admin
Administrator
Gracias por la respuesta.
Dejé fuera algunos puntos:un. Esto está en consulta directa, así que no creo que pueda cambiar los tipos de datos
B. La columna prioritaria de forma ocasional tiene texto (por ejemplo, P3), así que creo que necesito dejarla como texto
C. Necesito contar todos los pedidos de prioridad de host 1 a 29 si la fecha creada es mayor que hoy, si la fecha creada es hoy contar todos los pedidos creados antes de las 15:15 si la prioridad de host >= 10 y todos los pedidos creados antes de las 16:15 si la prioridad de host es <10
Gracias de nuevo por su ayuda
- Syndicate_Admin
Administrator
@mahoneypat sentimos I'm nuevo en el complejo y didn't darse cuenta de que tiene que "@" alguien para que ver que respondió. ¿Puede ver mi última respuesta?
- Syndicate_Admin
Administrator
No hay @b2wise
Creo un archivo de ejemplo en modo DQ, aquí están mis pasos de operación.
-
Cambiar el tipo de columna [Fecha creada] a Fecha
Dado que el tipo de las 3 columnas es texto y no se puede cambiar, así que cree las medidas a continuación.
sortbytime = //we need to create this measure so that we can sort by [Time Created], because type of this column is text VAR _timecreated = SELECTEDVALUE ( Headers[Time Created] ) RETURN VALUE ( LEFT ( _timecreated, 2 ) ) * 100 + VALUE ( MID ( _timecreated, 4, 2 ) )get priority = //the reason to create this measure is same as the measure above VAR _pri = SELECTEDVALUE ( Headers[Host Priority] ) VAR _lenvalue = IF ( LEN ( _pri ) > 1, LEN ( _pri ) - 1 ) VAR _getnumfromtext = RIGHT ( _pri, _lenvalue ) VAR _vau = IF ( ISERROR ( VALUE ( _pri ) ), _getnumfromtext, VALUE ( _pri ) ) RETURN _vaua continuación, cree el recuento de medidas y colótelo en el visual Tarjeta.
count = VAR _timecreated = SELECTEDVALUE ( Headers[Time Created] ) VAR _time = VALUE ( LEFT ( _timecreated, 2 ) ) * 100 + VALUE ( MID ( _timecreated, 4, 2 ) ) VAR _count = CALCULATE ( COUNTROWS ( Headers ), FILTER ( ALL ( Headers ), ( Headers[Date Created] < DATE ( 2021, 5, 25 )//I replace your MAX ( 'Current Date Time'[Date] ) with DATE ( 2021, 5, 25 ), because I dont know the structure of 'Current Date Time'[Date], you can change it back later. && [get priority] >= 1 && [get priority] <= 29 ) || ( Headers[Date Created] = DATE ( 2021, 5, 25 ) && [get priority] >= 10 && [sortbytime] < 1515 ) || ( Headers[Date Created] = DATE ( 2021, 5, 25 ) && [get priority] < 10 && [sortbytime] < 1615 ) ) ) RETURN _countresultado:
Saludos
Equipo de apoyo a la comunidad _ Tang
Si esta publicación ayuda,por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.