Forum Discussion

NickProp28's avatar
NickProp28
Icon for Post Partisan rankPost Partisan
6 years ago
Solved

Convertir C a DAX

Querida comunidad,

Esto es parte de la importación de mi conjunto de datos desde Excel

PaísNo de paqueteMes
Nos1Enero
Sg2Enero
Nos7Febrero
Nos4Enero

Esta es la suma total de No paquetes con mes.

NickProp28_0-1597135959167.png

Tengo paquetes totales de estos artículos y me gustaría tener una medida DAX para determinar cuántos tamaños de pallet para conseguir en él.

Tengo 10 palets de tamaño y 20 palets de tamaño.
Por ejemplo, enero tengo 247items, así que calcule que requerirá doce palets de 20 tamaños y un palet de 10 tamaños. (247/20 a 12,35, el resto entrará en el palet de 10 tamaños.)

En lenguaje C,
si totalitem > 20,
{
Num20 - totalitem/20
Remain1 - totalitem % 20
}

si Remain1 > 0

{

Num10 - Permanecer1/10

Remain2 - Permanecer1 % 10
}

Y mi resultado esperado le gustará

PaísMesesNo de paquetesMedida
NosEnero24712 20s palet y 1 10s palet.

Le agradezco que se tome el tiempo para responder a mi pregunta. Estoy seguro de que está muy ocupado y gracias por tomarse el tiempo para responder personalmente a mí. Gracias de nuevo.

  • @NickProp28

    Prueba estas dos medidas para 20 y 10

    20 Plt = 
    
    INT(DIVIDE(SUM(TABLE[NO OF PACKAGES]),20))
    
    
    10 Plt = 
    
    ROUNDUP(MOD(sum(TABLE[NO OF PACKAGES]),20),-1)/10

    ________________________

    ¿He respondido a tu pregunta? Marque este post como una solución, esto ayudará a otros!.

    Haga clic en el icono Thumbs-Up a la derecha si le gusta esta respuesta 🙂

    YoutubeLinkedin

  • Hola, @NickProp28

    Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

    Mesa:

    a1.png

    Puede crear una medida como la siguiente.

    Result = 
    var _value = SUM('Table'[No of Packages])
    var _num20 = INT(DIVIDE(_value,20))
    var _remain1 = MOD(_value,20)
    var _num10 = ROUNDUP(DIVIDE(_remain1,10),0)
    var _remain2 = MOD(_remain1,10)
    return
    IF(
        _value>20,
        IF(
            _remain1>0,
            _num20&" 20s pallet and "&_num10&" 10s pallet",
            _num20&" 20s pallet"
        ),
        INT(DIVIDE(_value,10))&" 10s pallet"
    )

    Resultado:

    a2.png

    Saludos

    Allan

    Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

  • Fowmy's avatar
    Fowmy
    6 years ago

    @NickProp28

    Redondea un decimal a la izquierda del punto decimal.

    ________________________

    ¿He respondido a tu pregunta? Marque este post como una solución, esto ayudará a otros!.

    Haga clic en el icono Thumbs-Up a la derecha si le gusta esta respuesta 🙂

    YoutubeLinkedin

7 Replies

    • NickProp28's avatar
      NickProp28
      Icon for Post Partisan rankPost Partisan

      Estimado @amitchandak,

      Gracias por su pronta respuesta,

      NickProp28_0-1597138178707.png

      Me gustaría crear una medida basada en ningún paquete, pero im conseguir problema en ella.

      NickProp28_1-1597138296470.png

  • @NickProp28

    Prueba estas dos medidas para 20 y 10

    20 Plt = 
    
    INT(DIVIDE(SUM(TABLE[NO OF PACKAGES]),20))
    
    
    10 Plt = 
    
    ROUNDUP(MOD(sum(TABLE[NO OF PACKAGES]),20),-1)/10

    ________________________

    ¿He respondido a tu pregunta? Marque este post como una solución, esto ayudará a otros!.

    Haga clic en el icono Thumbs-Up a la derecha si le gusta esta respuesta 🙂

    YoutubeLinkedin

  • v-alq-msft's avatar
    v-alq-msft
    Icon for Community Support rankCommunity Support

    Hola, @NickProp28

    Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

    Mesa:

    a1.png

    Puede crear una medida como la siguiente.

    Result = 
    var _value = SUM('Table'[No of Packages])
    var _num20 = INT(DIVIDE(_value,20))
    var _remain1 = MOD(_value,20)
    var _num10 = ROUNDUP(DIVIDE(_remain1,10),0)
    var _remain2 = MOD(_remain1,10)
    return
    IF(
        _value>20,
        IF(
            _remain1>0,
            _num20&" 20s pallet and "&_num10&" 10s pallet",
            _num20&" 20s pallet"
        ),
        INT(DIVIDE(_value,10))&" 10s pallet"
    )

    Resultado:

    a2.png

    Saludos

    Allan

    Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

    • NickProp28's avatar
      NickProp28
      Icon for Post Partisan rankPost Partisan

      Dear Fowmy  v-alq-msft ,

       

      Really appreciate yous guys solution. Two of it works perfectly for me. Thanks! 

      Dear Fowmy .

      10 Plt = ROUNDUP(MOD(sum(Data[NO OF PACKAGES]),20),-1)/10 . May I know why there have -1 in this formula. Thank you for providing me with advice. 
       
      • Fowmy's avatar
        Fowmy
        Icon for Super User rankSuper User

        @NickProp28

        Redondea un decimal a la izquierda del punto decimal.

        ________________________

        ¿He respondido a tu pregunta? Marque este post como una solución, esto ayudará a otros!.

        Haga clic en el icono Thumbs-Up a la derecha si le gusta esta respuesta 🙂

        YoutubeLinkedin