Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
5 years ago
Solved

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:

Recuento de pedidos = DISTINCTCOUNTNOBLANK(Headers[Fulfillment No])
Y lo colocó en esta fórmula:
Debe enviar 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:

image.png

  • 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

    v-xiaotang_0-1622014079429.png

    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
        _vau

    a 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
        _count

    resultado:

    v-xiaotang_1-1622014079433.png

    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

  • 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's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      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's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        @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?

  • 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

    v-xiaotang_0-1622014079429.png

    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
        _vau

    a 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
        _count

    resultado:

    v-xiaotang_1-1622014079433.png

    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.