Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Administrator
4 years ago
Solved

FECHAS CONDICIONALES

Hola

Estoy desarrollando un informe diario en Power BI, pero si el usuario selecciona una fecha en la que no hay datos, Power BI debe seleccionar los datos de la última fecha con información:

CASO 1 - El usuario seleccionó una fecha con datos: Power BI debe enumerar la información de la fecha seleccionada.

CASO 2 - El usuario seleccionó una fecha sin datos: Power BI debe mostrar información de la última fecha para cada instalación:

Valores de fecha de las instalaciones

---------------------------------

FAC001 2021-08-16 3.000

FAC002 2020-10-01 2.500

FAC003 03-11-2019 4.000

¿Hay alguna manera de hacer esto?

Gracias

Benedito Almeida.

  • Syndicate_Admin's avatar
    Syndicate_Admin
    4 years ago

    Probar:

    Sum Values =
    VAR MaxDate = MAXX(FILTER(ALL(Table[Date), Table[Date] <= SELECTEDVALUE(IndDate[Date]) && NOT(ISBLANK(SUM(Table[Values])))), Table[Date])
    
    RETURN
    
    CALCULATE(SUM(Table[Values]), FILTER(ALL(Table[Date]), Table[Date] = MaxDate)

8 Replies

  • @Benedito_1967 Tal vez algo como:

    Measure =
      VAR __Date = SELECTEDVALUE('Calendar'[Date])
      VAR __Value = CALCULATE(SUM('Table'[Values]),[Date]=__Date)
      VAR __NewDate = IF(ISBLANK(__Value),MAX('Table'[Date]),__Date)
    RETURN
      CALCULATE(SUM('Table'[Values]),[Date]=__NewDate)
  • Probar:

    Valores de suma =
    VAR MaxDate = MAXX(ALL(Table), Table [Date] <= MAX([Date]) && NOT(ISBLANK(SUM(Table[Values]))), Table[Date])

    DEVOLUCIÓN

    CALCULATE(SUMA(Tabla[Valores]), FILTRO(TODO(Tabla), Tabla[Fecha] = MaxDate)

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Administrator

      Buenos días, Pablo.

      Muchas gracias por su aportación.

      Traté de usar su sugestión, pero el informe ahora devuelve el mismo valor para todas las INSTALACIONES, así:

      Valores de fecha de las instalaciones

      ---------------------------------

      FAC001 16/08/2021 90,24

      FAC002 16/08/2021 90,24

      FAC003 16/08/2021 90,24

      Lo que realmente necesito es que para cada FACILITY el informe devuelva su última fecha y valor.

      Benedito Almeida.

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Administrator

        Probar:

        Sum Values =
        VAR MaxDate = MAXX(FILTER(ALL(Table[Date), Table[Date] <= SELECTEDVALUE(IndDate[Date]) && NOT(ISBLANK(SUM(Table[Values])))), Table[Date])
        
        RETURN
        
        CALCULATE(SUM(Table[Values]), FILTER(ALL(Table[Date]), Table[Date] = MaxDate)
  • Allí, @Benedito_1967

    Simulé algunas fechas opcionales, con la esperanza de lograr los resultados esperados.

    1. Cree una nueva columna en la tabla Fecha.

    New date = 
    IF (
        [Selectable date]
            = CALCULATE (
                MAX ( 'Table'[Date ] ),
                FILTER ( 'Table', [Date ] = EARLIER ( 'Date'[Selectable date] ) )
            ),
        [Selectable date],
        CALCULATE (
            MAX ( 'Table'[Date ] ),
            FILTER ( 'Table', [Date ] < EARLIER ( 'Date'[Selectable date] ) )
        )
    )
    
    New value = 
    CALCULATE (
        MAX ( 'Table'[Values] ),
        FILTER ( 'Table', [Date] = EARLIER ( 'Date'[New date] ) )
    )
    

    vzhangti_0-1637034399495.png

    2. La nueva tabla de fechas debe establecer una relación con la tabla original.

    vzhangti_1-1637034438085.png

    3. Cree una nueva segmentación de datos de fecha en la vista y el resultado final se muestra en la figura.

    vzhangti_2-1637034464280.jpeg

    Si el método que proporcioné anteriormente no puede resolver su problema, ¿cuál es su resultado esperado? ¿Podría proporcionar más detalles al respecto?

    Saludos

    Equipo de soporte de la comunidad _Charlotte

    Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Administrator

      Hola a todos

      Me gustaría agradecerles a todos por su ayuda.

      He decidido crear un procedimiento almacenado para seleccionar los datos que necesito para el informe.

      El SP está trabajando en correlación.

      Mi pregunta ahora es: ¿puedo pasar la segmentación de datos de informes (es una fecha) como parámetro al procedimiento almacenado?

      Esto resolvería mi problema por completo.

      Gracias a todos.

      Benedito_1967.

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Administrator

        Hi, @Benedito_1967

        Cree una nueva tabla de calendario.

        Date = CALENDAR(MIN('Table'[Date]),MAX('Table'[Date]))

        La nueva medida toma la fecha seleccionada en la segmentación de datos.

        New Date = MAX('Date'[Date])
        
        Output date = 
        IF (
            [New Date] = MAX ( 'Table'[Date] ),
            CALCULATE (
                MAX ( 'Table'[Date] ),
                FILTER ( ALL ( 'Table' ), [Date] = MAX ( 'Table'[Date] ) )
            ),
            CALCULATE (
                MAX ( 'Table'[Date] ),
                FILTER ( ALL ( 'Table' ), [Date] < MAX ( 'Date'[Date] ) )
            )
        )
        
        New Facilities =
        CALCULATE (
            MAX ( 'Table'[Facilities] ),
            FILTER ( ALL ( 'Table' ), [Output date] = MAX ( 'Table'[Date] ) )
        )
        
        New value = 
        CALCULATE (
            MAX ( 'Table'[Values] ),
            FILTER ( ALL('Table'), [Date] =MAX('Table'[Date] ) )
        )
        

        ¿Es este el caso cuando la segmentación de datos de fecha que mencionó está seleccionada como parámetro? Si tiene alguna otra pregunta, por favor responda.

        Saludos

        Equipo de soporte de la comunidad _Charlotte

        Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.