Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
5 years ago
Solved

Consulta SQL a DAX

Hola a todos

Necesito ayuda para convertir una consulta SQL a DAX con un ligero cambio.

La siguiente consulta me dará lo que necesito para el mes de abril, pero lo que necesito es que mi DAX sea dinámico en función del mes seleccionado.

Por lo tanto, si mi mes actual es marzo, por ejemplo, el DAX debe darme reservas para la fecha de reserva entre 20210301 y 20210330 y donde la fecha de cancelación no está entre 20210301 y 20210330 y la fecha de caducidad no está entre 20210301 y 20210330. Y del mismo modo si se selecciona cualquier otro mes. Espero que esto tenga sentido!

Gracias por su ayuda!

Kartiklal03_0-1626259797805.png

  • Syndicate_Admin's avatar
    Syndicate_Admin
    5 years ago

    @Kartiklal03

    Los modifiqué:

    Bookings = 
    
    var __startdate = min( 'Calendar'[Date Key] )
    var __enddate = max( 'Calendar'[Date Key] )  
    return
    
    CALCULATE (
        DISTINCTCOUNT ( Booking[Booking Number] ),
            FILTER(
                ALL(Booking),
                Booking[Booking Date] >= __startdate &&
                Booking[Booking Date] <= __enddate  &&
    
                OR(
                    NOT( Booking[Cancellation Date] >= __startdate &&
                    Booking[Cancellation Date] <= __enddate ),
                    ISBLANK( Booking[Cancellation Date] )
                )
                &&
                OR(
                    NOT( Booking[Expiry Date] >= __startdate &&
                    Booking[Expiry Date] <= __enddate ),
                    ISBLANK( Booking[Expiry Date] )
                )
                
            ),  
            Booking[Channel Name] = "Internet"&&
            Booking[Original Booking Status] IN {"Firm", "Normal", "Requested", "OP"}
    )

    Revenue = 
    
    var __startdate = min( 'Calendar'[Date Key] )
    var __enddate = max( 'Calendar'[Date Key] )  
    return
    
    CALCULATE (
        sum ( Booking[Booking Price EUR] ),
            FILTER(
                ALL(Booking),
                Booking[Booking Date] >= __startdate &&
                Booking[Booking Date] <= __enddate  &&
    
                OR(
                    NOT( Booking[Cancellation Date] >= __startdate &&
                    Booking[Cancellation Date] <= __enddate ),
                    ISBLANK( Booking[Cancellation Date] )
                )
                &&
                OR(
                    NOT( Booking[Expiry Date] >= __startdate &&
                    Booking[Expiry Date] <= __enddate ),
                    ISBLANK( Booking[Expiry Date] )
                )
    
            ),  
            Booking[Channel Name] = "Internet"&&
            Booking[Original Booking Status] IN {"Firm", "Normal", "Requested", "OP"}
    )

11 Replies

  • @Kartiklal03

    Hola, inserte una segmentación de datos en el informe e incluya la fecha de reserva y filtre a abril. A continuación, agregue las dos medidas siguientes:

    Bookings = 
    
    var __startdate = min( 'Calendar'[Date Key] )
    var __enddate = max( 'Calendar'[Date Key] )  
    return
    
    CALCULATE (
        DISTINCTCOUNT ( Booking[Booking Number] ),
            FILTER(
                ALL(Booking),
                Booking[Booking Date] >= __startdate &&
                Booking[Booking Date] <= __enddate  &&
    
                NOT( Booking[Cancellation Date] >= __startdate &&
                Booking[Cancellation Date] <= __enddate )
                &&
                NOT( Booking[Expiry Date] >= __startdate &&
                Booking[Expiry Date] <= __enddate )
            ),  
            Booking[Channel Name] = "Internet"&&
            Booking[Original Booking Status] IN {"Firm", "Normal", "Requested", "OP"}
    )

    Revenue = 
    
    var __startdate = min( 'Calendar'[Date Key] )
    var __enddate = max( 'Calendar'[Date Key] )  
    return
    
    CALCULATE (
        SUM( Booking[Booking Price EUR] ),
            FILTER(
                ALL(Booking),
                Booking[Booking Date] >= __startdate &&
                Booking[Booking Date] <= __enddate  &&
    
                NOT( Booking[Cancellation Date] >= __startdate &&
                Booking[Cancellation Date] <= __enddate )
                &&
                NOT( Booking[Expiry Date] >= __startdate &&
                Booking[Expiry Date] <= __enddate )
            ),  
            Booking[Channel Name] = "Internet"&&
            Booking[Original Booking Status] IN {"Firm", "Normal", "Requested", "OP"}
    )

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Administrator

      No @Fowmy,

      Gracias por su respuesta, pero no creo que me dará lo que estoy buscando.

      Necesito poder mostrar mis datos para cada mes calendario en el año, similar a la captura de pantalla a continuación.

      Kartiklal03_0-1626261978930.png

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Administrator

        @Kartiklal03

        Debe proporcionar más información sobre el modelo y cómo desea visualizarlo. ¿Tienes una tabla de calendario?

        Mejor, comparta un archivo PBIX de ejemplo.