Forum Discussion

ka047's avatar
ka047
Helper I
5 years ago
Solved

Ayuda de DAX Measure - First Post

Estoy tratando de poner un IF( AND( declaraciones añadidas en mi medida dax (que voy a publicar a continuación). El problema con el que me estoy ejecutando es dónde poner esas declaraciones y cómo basar en el campo que no es una medida. Lo que el campo es que estoy tratando de introducir es tal;

IF([DropShippedInd-0, [Shipdays] > 3 entonces es a tiempo. Por lo tanto, si la fecha de entrega y la fecha de envío confirmada son > 3 , 1,0)

El siguiente es

IF([DropShippedInd-1, [Shipdays] > 1 entonces es a tiempo. Por lo tanto, si la fecha de entrega y la fecha de envío confirmada son > 1 , 1,0)

Así que lo anterior necesita ir a algún lugar en la medida DAX que he creado a continuación; con el [DropShippedInd] es un campo, no una medida calculada. Así que puede que tenga que probar como SUMX o algo antes para conseguirlo en.

OTD ?
var resumen de var ?
resumir (Fact_SalesCogs,
Fact_SalesCogs[SalesOrder],
Fact_SalesCogs[ShippingDateConfirmed],
Fact_SalesCogs[DeliveryDate],
"Shipdays",
calcular(
AVERAGEX(
Fact_SalesCogs, datediff(Fact_SalesCogs[ShippingDateConfirmed], Fact_SalesCogs[DeliveryDate], day)
))

)

devolución
sumx(resumen,
si(
y(
not(isblank([ShippingDateConfirmed])),
y(
not(isblank([DeliveryDate]))

,
[días de envío] > 0
)
),
1,0
)

)
  • No @ka047 ,

    Si crees que hay algo mal con tus partes amarillas en tu fomula, puedes modificarlo así:

    NOT ISBLANK ( [DeliveryDate] ) && [Shipdays] == 0

    Toda la fórmula:

    Measure 3 =
    VAR summary =
        SUMMARIZE (
            Fact_SalesCogs,
            Fact_SalesCogs[SalesOrder],
            Fact_SalesCogs[ShippingDateConfirmed],
            Fact_SalesCogs[DeliveryDate],
            Fact_SalesCogs[DropShippedInd],
            "Shipdays",
                CALCULATE (
                    AVERAGEX (
                        Fact_SalesCogs,
                        DATEDIFF (
                            Fact_SalesCogs[ShippingDateConfirmed],
                            Fact_SalesCogs[DeliveryDate],
                            DAY
                        )
                    )
                )
        )
    RETURN
        SUMX (
            summary,
            IF (
                NOT ISBLANK ( [ShippingDateConfirmed] )
                    && (
                        NOT ISBLANK ( [DeliveryDate] )
                            && [Shipdays]
                                == 0
                                    || (
                                        NOT ISBLANK ( [DeliveryDate] )
                                            && ( Fact_SalesCogs[DropShippedInd] = 1
                                            && [Shipdays] <= 1
                                            && [Shipdays] >= 0
                                            || Fact_SalesCogs[DropShippedInd] = 0
                                            && [Shipdays] <= 3
                                            && [Shipdays] >= 0 )
                                    )
                    ),
                1,
                0
            )
        )
    

    Si [Shipdays] es una columna de tipo de número, [Shipdays] a 0 y [Shipdays] a 0 son diferentes:

    t.pngtt.png

    Saludos
    Equipo de apoyo a la comunidad _ Yingjie Li
    Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

11 Replies

  • Ahora he alterado la medida DAX para ser el siguiente, pero no está seguro de si está funcionando o no. ¿Alguna ayuda o confirmación?

    OTD

    var resumen de var ?

    resumir (Fact_SalesCogs,

    Fact_SalesCogs[SalesOrder],

    Fact_SalesCogs[ShippingDateConfirmed],

    Fact_SalesCogs[DeliveryDate],

    Fact_SalesCogs[DropShippedInd],

    "Shipdays",

    calcular(

    AVERAGEX(

    Fact_SalesCogs, datediff( Fact_SalesCogs[ShippingDateConfirmed],Fact_SalesCogs[DeliveryDate], day)

    ))

    )

    devolución

    sumx(resumen,

    si(

    y(

    not(isblank([ShippingDateConfirmed])),

    O(

    y(

    not(isblank([DeliveryDate]))

    ,

    [Días de envío] 0)

    ,

    y(

    not(ISBLANK([DeliveryDate]))

    ,

    o( Fact_SalesCogs[DropShippedInd] á 1 && AND(

    [Días de envío] <-1,[Días de envío] > 0),

    Fact_SalesCogs[DropShippedInd] á 0 && AND(

    [Días de envío] <-3,[Días de envío] > .0)

    )

    )

    )

    ),

    1,0

    )

    )

  • en lugar de AND() puede usar &&.

    if(a>3 && b-0 && c<10 && d-5,this,that)

    para OR() se puede utilizar el número de

    • ka047's avatar
      ka047
      Helper I

      Para la siguiente medida, ¿qué cambiaría con respecto a lo que se refirió?

      Medición 3 - var resumen ?
      resumir (Fact_SalesCogs,
      Fact_SalesCogs[SalesOrder],
      Fact_SalesCogs[ShippingDateConfirmed],
      Fact_SalesCogs[DeliveryDate],
      Fact_SalesCogs[DropShippedInd],
      "Shipdays",
      calcular(
      AVERAGEX(
      Fact_SalesCogs, datediff( Fact_SalesCogs[ShippingDateConfirmed],Fact_SalesCogs[DeliveryDate], day)
      ))

      )

      devolución
      sumx(resumen,
      si(
      y(
      not(isblank([ShippingDateConfirmed])),

      O(
      y(
      not(isblank([DeliveryDate]))
      ,
      [Días de envío] 0)
      ,
      y(
      not(ISBLANK([DeliveryDate]))
      ,
      o( Fact_SalesCogs[DropShippedInd] á 1 && AND(
      [Días de envío] <-1,[Días de envío] > 0),
      Fact_SalesCogs[DropShippedInd] á 0 && AND(
      [Días de envío] <-3,[Días de envío] > .0)
      )

      )
      )
      ),
      1,0
      )

      )
  • Esta es su fórmula:

    lbendlin_0-1609380608780.png

    Puede reescribir como:

    lbendlin_1-1609381263595.png

    Conjunto completo:

    medida 3 :
    Fue Resumen =
    Resumir (
    Fact_SalesCogs,
    Fact_SalesCogs[SalesOrder],
    Fact_SalesCogs[ShippingDateConfirmed],
    Fact_SalesCogs[DeliveryDate],
    Fact_SalesCogs[DropShippedInd],
    "Días de barco",
    Calcular (
    AVERAGEX (
    Fact_SalesCogs,
    Datediff (
    Fact_SalesCogs[ShippingDateConfirmed],
    Fact_SalesCogs[DeliveryDate],
    Día
    )
    )
    )
    )
    devolución
    SUMX (
    Resumen,
    Si (
    No ISBLANK ( [ShippingDateConfirmed] )
    && (
    No ISBLANK ( [Fecha de entrega] )
    && [Días de envío] 0
    || (
    No ISBLANK ( [Fecha de entrega] )
    && ( Fact_SalesCogs[DropShippedInd] 1
    && [Días de envío] < 1
    && [Días de envío] > 0
    || Fact_SalesCogs[DropShippedInd] 0
    && [Días de envío] < 3
    && [Días de envío] > 0 )
    )
    ),
    1,
    0
    )
    )

    Como puede ver, hay un par de redundancias que podría eliminar con las instrucciones IN.

    • ka047's avatar
      ka047
      Helper I

      @amitchandak @lbendlin

      Me pregunto si necesitamos los Días de Los Barcos 0, en el primer punto. Porque lo que yo esperaría es que al no hacer que DropShipppedInd sea 0, y dar un trilla de ❤️ o <1, que nuestras entregas en tiempo aumentaría en comparación con antes, cuando tenían que ser 0.

      Creo que el problema está en esta parte;

      ka047_0-1609425153194.png

      Lo que realmente quiero devolver es si la fecha de entrega o la fecha de envío confirmada no son BLANK, luego datediff(DeliveryDate, ShippingDateConfirmed,DAY) y el dropShippedInd está siendo ❤️ o <1.

      Espero que tenga sentido.

      • v-yingjl's avatar
        v-yingjl
        Community Support

        No @ka047 ,

        Si crees que hay algo mal con tus partes amarillas en tu fomula, puedes modificarlo así:

        NOT ISBLANK ( [DeliveryDate] ) && [Shipdays] == 0

        Toda la fórmula:

        Measure 3 =
        VAR summary =
            SUMMARIZE (
                Fact_SalesCogs,
                Fact_SalesCogs[SalesOrder],
                Fact_SalesCogs[ShippingDateConfirmed],
                Fact_SalesCogs[DeliveryDate],
                Fact_SalesCogs[DropShippedInd],
                "Shipdays",
                    CALCULATE (
                        AVERAGEX (
                            Fact_SalesCogs,
                            DATEDIFF (
                                Fact_SalesCogs[ShippingDateConfirmed],
                                Fact_SalesCogs[DeliveryDate],
                                DAY
                            )
                        )
                    )
            )
        RETURN
            SUMX (
                summary,
                IF (
                    NOT ISBLANK ( [ShippingDateConfirmed] )
                        && (
                            NOT ISBLANK ( [DeliveryDate] )
                                && [Shipdays]
                                    == 0
                                        || (
                                            NOT ISBLANK ( [DeliveryDate] )
                                                && ( Fact_SalesCogs[DropShippedInd] = 1
                                                && [Shipdays] <= 1
                                                && [Shipdays] >= 0
                                                || Fact_SalesCogs[DropShippedInd] = 0
                                                && [Shipdays] <= 3
                                                && [Shipdays] >= 0 )
                                        )
                        ),
                    1,
                    0
                )
            )
        

        Si [Shipdays] es una columna de tipo de número, [Shipdays] a 0 y [Shipdays] a 0 son diferentes:

        t.pngtt.png

        Saludos
        Equipo de apoyo a la comunidad _ Yingjie Li
        Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

  • @ka047 , Puede crear dos nuevas columnas como

    Shipdays á datediff([Delivery Date],[Confirmed Ship Date],day)

    En el tiempo: if([Días de envío] >-3 && [DropShippedInd] 0 ,1 , 0)

    Pero creo que debería ser [Shipdays] ❤️

    • ka047's avatar
      ka047
      Helper I

      Entonces, ¿cómo escribirías la medida en base a lo que tengo? No creo que pueda crear los columbs porque podemos tener varios campos que están en tablas diferentes pero que comparten el mismo nombre. Como la fecha de entrega

      Medida 3 - Resumen del VAR ?
      RESUMIR (
      Fact_SalesCogs,
      Fact_SalesCogs[SalesOrder],
      Fact_SalesCogs[ShippingDateConfirmed],
      Fact_SalesCogs[DeliveryDate],
      Fact_SalesCogs[DropShippedInd],
      "Shipdays",
      CALCULAR (
      AVERAGEX (
      Fact_SalesCogs,
      DATEDIFF (
      Fact_SalesCogs[ShippingDateConfirmed],
      Fact_SalesCogs[DeliveryDate],
      Día
      )
      )
      )
      )
      devolución
      SUMX (
      Resumen
      SI (
      NO ISBLANK ( [ShippingDateConfirmed] )
      && (
      NO ISBLANK ( [DeliveryDate] )
      && [Días de envío] a 0
      || (
      NO ISBLANK ( [DeliveryDate] )
      && ( Fact_SalesCogs[DropShippedInd] n.o 1
      && [Días de envío] <-1
      && [Días de envío] > 0
      || Fact_SalesCogs[DropShippedInd] a 0
      && [Días de envío] <-3
      && [Días de envío] > 0 )
      )
      ),
      1,
      0
      )
      )
  • No completamente, usted tiene contradicciones en su descripción (y lindos corazones 🙂).

    Anote su lógica de negocios, pida a otra persona que la confirme y, a continuación, aplique la reducción booleana.

    • ka047's avatar
      ka047
      Helper I

      Ese corazón debe ser y 3, me disculpo por la confusión.

      @mahoneypat @AlB @PhilipTreacy @AllisonKennedy etiquetarlos, ya que veo que cada uno de ustedes eran los mejores autores de soluciones el mes pasado. Si pudieran ayudarme, se lo agradecería mucho. Espero aclarar cualquier pregunta que usted tendría también. ¡Gracias!

      • AllisonKennedy's avatar
        AllisonKennedy
        Community Champion

        @ka047 Parece que tienes una solución cercana de @lbendlin . ¿Con cuántas mesas trabajas?

        Si necesita una solución exacta más eficiente, proporcione una tabla de datos de ejemplo o al menos nombres de tablas y columnas y cualquier relación.

        Entonces, si usted puede describir la lógica sucintamente en inglés (no con DAX), entonces podemos sugerir nuestros mejores enfoques a partir de ahí. 🙂