Forum Discussion

1katznir's avatar
1katznir
Regular Visitor
6 years ago
Solved

Running Total Cohort DAX

Hola

Tengo la siguiente tabla:

  • first_day_of_month (por ejemplo, '2020-01-01')
  • cohort_month (por ejemplo, 0, 1, 2, 3, etc.)
  • customer_type (mensual, anual
  • plan_type (básico, profesional, premium)
  • order_total_amount (número de decimel de moneda)

Me gustaría crear una medida similar a: sum(order_total_amount) over (partición por orden first_day_of_month por cohort_month)

El informe debe contener filtros por: customer_type y plan_type por lo que afectaría a la nueva medida personalizada.

*Nota: la medida personalizada se utiliza en un informe que admite estos desgloses y también sin los desgloses (así que sólo los totales por first_day_of_month), si eso no es posible tenga en cuenta

  • Anonymous's avatar
    Anonymous
    6 years ago

    Hola @1katznir

    Creo que desea calcular el total de ejecución para cada Start_OF_Month_Date por Cohort_Month.

    Y compare el gasto con la medida para calcular el mínimo Cohort_Month para cada Start_OF_Month.

    Construyo dos medidas:

    Running Total Booking Amount = 
    SUMX (
        FILTER (
            ALL ( BOOKING_MONTHLY_COHORT ),
            BOOKING_MONTHLY_COHORT[Start_OF_Month_Date]
                = MAX ( BOOKING_MONTHLY_COHORT[Start_OF_Month_Date] )
                && BOOKING_MONTHLY_COHORT[Cohort_Month]
                    <= MAX ( BOOKING_MONTHLY_COHORT[Cohort_Month] )
        ),
        BOOKING_MONTHLY_COHORT[Booking_Amount]
    )
    M.Cohort_Month = 
    VAR _RunningTotalExpense_Amount =
        SUMX (
            FILTER (
                ALL ( BOOKING_MONTHLY_COHORT ),
                BOOKING_MONTHLY_COHORT[Start_OF_Month_Date]
                    = MAX ( BOOKING_MONTHLY_COHORT[Start_OF_Month_Date] )
                    && BOOKING_MONTHLY_COHORT[Cohort_Month]
                        <= MAX ( BOOKING_MONTHLY_COHORT[Cohort_Month] )
            ),
            BOOKING_MONTHLY_COHORT[Expense_Amount]
        )
    VAR _COHORT =
        MINX (
            FILTER (
                ALL ( BOOKING_MONTHLY_COHORT ),
                BOOKING_MONTHLY_COHORT[Start_OF_Month_Date]
                    = MAX ( BOOKING_MONTHLY_COHORT[Start_OF_Month_Date] )
                    && [Running Total Booking Amount] >= _RunningTotalExpense_Amount
            ),
            BOOKING_MONTHLY_COHORT[Cohort_Month]
        )
    RETURN
    IF(NOT(ISBLANK(_COHORT)),IF(MAX(BOOKING_MONTHLY_COHORT[Cohort_Month])=_COHORT,_COHORT,BLANK()),BLANK())

    El resultado es el siguiente.

    1.png

    Puede descargar el archivo pbix desde este enlace: Ejecución de Total Cohort DAX

    Saludos

    Rico Zhou

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

9 Replies

  • @1katznir

    ¿Puede compartir algunos datos de muestra y el resultado esperado para tener una comprensión clara de su pregunta?
    Puedes guardar tus archivos en OneDrive, Google Drive o cualquier otra plataforma de uso compartido en la nube y compartir el enlace aquí.
    ____________________________________
    ¿Cómo pegar datos de muestra con su pregunta?
    ¿Cómo obtener respuestas a sus preguntas rápidamente?

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

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

    Youtube Linkedin

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hola @1katznir

      Descargo su pbix, pero cuando lo abro, dice que necesito firmar en copo de nieve o no puedo ver nada sobre su modelo de datos.

      ¿Puede mostrarme una captura de pantalla de su modelo de datos y decirme su lógica de cálculo, y puede hacer que sea más fácil para mí entender sus requisitos.

      Aquí voy a dar un consejo.

      Creo que puede probar esta medida:

      Measure =
      SUMX (
          FILTER (
              BOOKING_MONTHLY_COHORT,
              [START_OF_MONTH_DATE] = MAX ( [START_OF_MONTH_DATE] )
                  && [COHORT_MONTH] = MAX ( [COHORT_MONTH] )
          ),
          [BOOKING_AMOUNT]
      )

      Saludos

      Rico Zhou

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

      • 1katznir's avatar
        1katznir
        Regular Visitor

        Gracias por responder, todavía no funciona como se esperaba,

        por favor tenga en cuenta que me gustaría tener el total de carrera en el mes de la cohorte, así que creo que debo usar < (por favor, corríjame si me equivoco)

        1katznir_0-1602674873271.png

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hola @1katznir

    ¿Podría decirme si su problema ha sido resuelto? Si es así, acédi es la solución. Más gente se beneficiará de ello. O todavía está confundido al respecto, por favor proporcione más detalles sobre su tabla y su problema o compártame con su archivo pbix de su Onedrive for Business.

    Saludos

    Rico Zhou

  • 1katznir's avatar
    1katznir
    Regular Visitor

    Here is a sample of the data structure, note:

    - Additional columns exists that provide further breakdowns as described above

     

     

     

     

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hola @1katznir

      Creo que desea calcular el total de ejecución para cada Start_OF_Month_Date por Cohort_Month.

      Y compare el gasto con la medida para calcular el mínimo Cohort_Month para cada Start_OF_Month.

      Construyo dos medidas:

      Running Total Booking Amount = 
      SUMX (
          FILTER (
              ALL ( BOOKING_MONTHLY_COHORT ),
              BOOKING_MONTHLY_COHORT[Start_OF_Month_Date]
                  = MAX ( BOOKING_MONTHLY_COHORT[Start_OF_Month_Date] )
                  && BOOKING_MONTHLY_COHORT[Cohort_Month]
                      <= MAX ( BOOKING_MONTHLY_COHORT[Cohort_Month] )
          ),
          BOOKING_MONTHLY_COHORT[Booking_Amount]
      )
      M.Cohort_Month = 
      VAR _RunningTotalExpense_Amount =
          SUMX (
              FILTER (
                  ALL ( BOOKING_MONTHLY_COHORT ),
                  BOOKING_MONTHLY_COHORT[Start_OF_Month_Date]
                      = MAX ( BOOKING_MONTHLY_COHORT[Start_OF_Month_Date] )
                      && BOOKING_MONTHLY_COHORT[Cohort_Month]
                          <= MAX ( BOOKING_MONTHLY_COHORT[Cohort_Month] )
              ),
              BOOKING_MONTHLY_COHORT[Expense_Amount]
          )
      VAR _COHORT =
          MINX (
              FILTER (
                  ALL ( BOOKING_MONTHLY_COHORT ),
                  BOOKING_MONTHLY_COHORT[Start_OF_Month_Date]
                      = MAX ( BOOKING_MONTHLY_COHORT[Start_OF_Month_Date] )
                      && [Running Total Booking Amount] >= _RunningTotalExpense_Amount
              ),
              BOOKING_MONTHLY_COHORT[Cohort_Month]
          )
      RETURN
      IF(NOT(ISBLANK(_COHORT)),IF(MAX(BOOKING_MONTHLY_COHORT[Cohort_Month])=_COHORT,_COHORT,BLANK()),BLANK())

      El resultado es el siguiente.

      1.png

      Puede descargar el archivo pbix desde este enlace: Ejecución de Total Cohort DAX

      Saludos

      Rico Zhou

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

    • Anonymous's avatar
      Anonymous
      Not applicable

      Hola @1katznir

      ¿Podría decirme si su problema ha sido resuelto? Si es así, acédi es la solución. Más gente se beneficiará de ello. O todavía está confundido al respecto, por favor proporcione más detalles sobre su tabla y el resultado que desea o compártame con su archivo pbix de su Onedrive for Business.

      Saludos

      Rico Zhou