Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Dr0idy
Helper I
Helper I

Suma de los últimos valores conocidos para la medición

Tengo una tabla de datos con las columnas a continuación. Para cada fecha, los Hogares de Cuidado pueden o no haber presentado su valor por muertes acumuladas. Me gustaría crear una medida que sea capaz de ser trazada con el tiempo y cortada en rodajas por el hogar de cuidado. La medida necesita obtener la suma de los últimos valores disponibles (si las muertes no se han presentado para ese día para un hogar de cuidado en particular, se recaería al último valor conocido).

FechaCare HomeMuertes acumuladas

Realmente atascado en esto.

7 REPLIES 7
Dr0idy
Helper I
Helper I

Publiqué el mismo problema en r/PowerBI y usted/Arklur respondió con lo siguiente que funcionó para mí.



Creo que te tengo. Primero copiaré pegar mis datos ficticios con los que trabajé, luego explicarélos con más detalles:

Código PQ para datos de muestra
Origen del let de datos
    á Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjIwMtAzMAUiJR0lRyA2NFCK1UETdwJiI0xhZ5AwmnIzmGMMOIgOIgY4xRhc1hys1RxS2gytFcA+RCrDUBmhMLAA", BinaryEncoding.Base64), Compression.Deflate)), let _t á ((texto de tipo) meta [Serialized.Text ? true]) en la tabla de tipos [Fecha - _t, CareHome , _t, AccumlativeDeaths , _t]),
    "Tipo cambiado" ? "CareHome", escriba text, "AccumlativeDeaths", Int64.Type)
en
    "Changed Type"
Código DAX para DateTable

(Este no es realmente el mejor enfoque para hacer uno, pero... Tengo uno bastante complejo y acaba de quitar lo que es innecesario para mí ahora, didn't realmente reescribir todo el asunto, obviamente el uso de MINX aquí es un movimiento tonto... De todos modos, sólo tiene una tabla de fechas :))

DateTable - 
VAR vMinYear -
    Año (
        MINX ( ? MIN (
                Data[Date] )
            ?
            [Valor]
    )
VAR vMaxYear -
    Año (
        MAXX ( ? MAX (
                Data[Date] )
            ?
            [Valor]
    )
CALENDARIO DE DEVOLUCION
    ( FECHA ( vMinYear; 1; 1 ); FECHA ( vMaxYear; 12; 31 ) )

No olvide crear la relación entre las 2 tablas, utilizando las columnas Date.

Medidas DAX
SumAccumulativeDeath á 
VAR vCurrDate ? MAX ( DateTable[Date] )
RETURN CALCULATE (
        SUMX ( 
            ADDCOLUMNS ( SUMMARIZE ;
                    Data;
                    Datos[CareHome]        
                );
                " cLastKnownAccumulativeDeath";
                VAR vLastReportedDate á 
                    CALCULATE ( MAX ( 
                        Data[Date] );
                        Data[Date] <-vCurrDate
                    ) RETURN CALCULATE ( SUM (
                        Data[AccumlativeDeaths] );
                        Data[Date] á vLastReportedDate
                    )
            );
            [cLastKnownAccumulativeDeath]
        );
        CROSSFILTER (
            Datos[Fecha];
            DateTable[Fecha];
            None
        )
    )

HasDataRows ? INT ( NOT ( ISEMPTY ( Data ) ) )
Resultado

https://i.imgur.com/1jFtuaA.png

Explicación

así que... Voy a ser honesto, no entiendo al 100% por qué funciona esto. Quería hacer esto sin usar el CROSSFILTER, porque con él, debe usar la medida HasDataRows como filtro para el objeto visual (condición 1), por lo que solo se muestran las fechas para las que tiene datos. Lo que hace la medida es más o menos lo que necesita. Para todo CareHome, calcule la última vez que reportaron las muertes, luego tome el valor para esa fecha (usé SUM, pero en caso de que obtenga datos duplicados, puede usar MAX, podría tener más sentido), luego SUMX.

Los filtros también funcionan, puede filtrar en Data[CareHome] o DateTable[Date], según mis pruebas todo está funcionando como se esperaba --> https://i.imgur.com/5IusBmI.png.

Lo que es realmente importante, es no olvidarse de establecer ese filtro (mediante la medida HasDataRows) en el objeto visual, debido a que no lo establece, obtendrá un montón de datos futuros, suponiendo que la tabla de fechas se ejecuta de 01.01 a 12.31 --> https://i.imgur.com/RrKZ7Jx.png.

Como habrá notado, no hay ningún valor para 2020.05.09, si necesita ver todas las fechas entre el MIN ( Data [Date] ) y MAX ( Data[Date] ) entonces... necesitas ajustar una lógica un poco.

EDIT: /u/Data_cruncher, /u/itsnotaboutthecell lo siento por la invocación. Si tienes tiempo, ¿podrías explicar mi solución? Creo que es más hacky de lo que debería ser, estoy bastante seguro de que hay una manera más elegante de hacer esto.

EDITAR2: Gracias a @data_cruncher, probablemente haya una medida mejor y más de rendimiento para lograr el mismo objetivo:

SqlbiSolution - 
VAR MaxDate ?
    MAX ( DateTable[Date] )
VAR LastDates ?
    ADDCOLUMNS (
        CALCULATETABLE ( VALUES (
            Data[CareHome] );
            ALL ( DateTable )
        );
        " LastDay"; CALCULATE (
            MAX ( Data[Date] );
            ALL ( DateTable );
            DateTable[Date] <-MaxDate
        ) ) ) VAR
LastDatesWithLineage -
    TREATAS (
        LastDates;
        Datos[CareHome];
        DateTable[Fecha]
    ) Resultado del VAR - CALCULATE ( SUM (
        Data[AccumlativeDeaths] );
        LastDatesWithLineage
    ) Resultado de
RETURN
    



AlB
Super User
Super User

Hola @Dr0idy

Debe crear una tabla de fechas. Entonces la medida es relativamente simple:

Measure =
VAR latest_date_ =
    MAX ( Table1[Date] )
RETURN
    CALCULATE ( SUM ( Table1[CummulativeDeaths] ), Table1[Date] = latest_date_ )

A continuación, puede, por ejemplo, utilizar un gráfico visual con CareHome en el eje y Medir en valores

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si los mensajes son útiles.

Póngase en contacto conmigo en privado para obtener asistencia con cualquier necesidad de BI a gran escala

Salud

SU18_powerbi_badge

@AlB

Gracias por la respuesta rápida. Intenté lo que habías sugerido. Sin embargo, cuando lo pongo en el gráfico no se traza correctamente. Debería ver una inclinación constante sin caídas, pero en su lugar obtengo el gráfico a continuación. Si siempre está retrocediendo al último valor no creo que esto deba suceder. He comprobado los datos. Hay problemas menores que necesitan ser remediados, pero nada que explique una caída de 40.

Deaths.PNG

@Dr0idy

Si va a usar Date en el eje en lugar de CareHome como sugerí, y suponiendo que los valores acumulados son correctos, simplemente puede tomar el máximo:

Measure2 =
SUMX(DISTINCT(Table1[CareHome]), CALCULATE(MAX(Table1[CumulativeDeaths]), ALL(DateTable[Date])))

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar felicitaciones si los mensajes son útiles.

Póngase en contacto conmigo en privado para obtener asistencia con cualquier necesidad de BI a gran escala

Salud

SU18_powerbi_badge

@AlB

Todavía no puedo conseguir esto para mostrar lo que quiero. Aunque podría ser yo sólo me falte algo.

Sigue obteniendo el gráfico siguiente cuando se utiliza la nueva medida que especificó.

New Deaths.PNG

@Dr0idy , ¿Puede compartir datos de ejemplo y salida de muestra.

@amitchandak @AlB

aquí es (lo que espero es) una explicación más clara de mi problema.

Tengo datos que se parecen a:

Date Care Home Accumulative Deaths

06/05/2020A12
06/05/2020B3
05/05/2020A10
05/05/2020B2
05/05/2020C20

Lo que todas las sugerencias realizadas hasta ahora es que el 06/05/2020 muestre que las muertes son 15 y 05/05/2020 mostraron las muertes como 22.

Lo que quiero es poder crear un gráfico de líneas con Date como el eje x que muestre 06/05/2020 muertes como 25 (usando el último valor conocido de cuidado de la casa C proporcionado ya que no se presentaron el 06/05/2020) y 22 en 05/05/2020. También necesito esta tabla para poder ser cortada por el hogar de cuidado para mostrar una tabla para el hogar de cuidado en particular.

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors