Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
4 years ago
Solved

Tabla calculada

Hola

Tengo una tabla en Excel (para importar a Power Bi) que tiene fechas en un lado (desde enero de 2010 hasta el futuro)
Mis columnas son vehículos A, B y C (pero más de 100 de ellos) y la fecha dentro de la hoja de cálculo es millas acumuladas

mwild_0-1641398235262.png


Estoy buscando crear una nueva tabla que me muestre las millas diarias en su lugar, por lo que A mostraría 232, que es la diferencia entre 15 y 16

¿Alguien sabe de una manera de hacer esto, por favor?



  • En primer lugar te recomendaría Unpivot las columnas de Vehículos.

    Unpivot.jpg

    A continuación, puede crear una columna calculada para obtener el kilometraje diario de cada vehículo utilizando:

    Daily Mileage =
    VAR PrevDate =
        CALCULATE (
            SUM ( 'DataTable'[Mileage] ),
            FILTER (
                'DataTable',
                'DataTable'[Vehicle] = EARLIER ( 'DataTable'[Vehicle] )
                    && 'DataTable'[Date]
                        = EARLIER ( 'DataTable'[Date] ) - 1
            )
        )
    VAR CurrDate =
        CALCULATE (
            SUM ( 'DataTable'[Mileage] ),
            FILTER (
                'DataTable',
                'DataTable'[Vehicle] = EARLIER ( 'DataTable'[Vehicle] )
                    && 'DataTable'[Date] = EARLIER ( 'DataTable'[Date] )
            )
        )
    RETURN
        CurrDate - PrevDate
    

    Llegar:

    Daily Mielage.jpg

    Si desea que el "Kilometraje diario" para la primera fecha (mínima) esté en blanco, use:

    Daily Mileage =
    VAR MinDate =
        MIN ( 'DataTable'[Date] )
    VAR PrevDate =
        CALCULATE (
            SUM ( 'DataTable'[Mileage] ),
            FILTER (
                'DataTable',
                'DataTable'[Vehicle] = EARLIER ( 'DataTable'[Vehicle] )
                    && 'DataTable'[Date]
                        = EARLIER ( 'DataTable'[Date] ) - 1
            )
        )
    VAR CurrDate =
        CALCULATE (
            SUM ( 'DataTable'[Mileage] ),
            FILTER (
                'DataTable',
                'DataTable'[Vehicle] = EARLIER ( 'DataTable'[Vehicle] )
                    && 'DataTable'[Date] = EARLIER ( 'DataTable'[Date] )
            )
        )
    RETURN
        IF ( 'DataTable'[Date] = MinDate, BLANK (), CurrDate - PrevDate )
    

    He adjuntado el archivo PBIX de ejemplo

3 Replies

  • En primer lugar te recomendaría Unpivot las columnas de Vehículos.

    Unpivot.jpg

    A continuación, puede crear una columna calculada para obtener el kilometraje diario de cada vehículo utilizando:

    Daily Mileage =
    VAR PrevDate =
        CALCULATE (
            SUM ( 'DataTable'[Mileage] ),
            FILTER (
                'DataTable',
                'DataTable'[Vehicle] = EARLIER ( 'DataTable'[Vehicle] )
                    && 'DataTable'[Date]
                        = EARLIER ( 'DataTable'[Date] ) - 1
            )
        )
    VAR CurrDate =
        CALCULATE (
            SUM ( 'DataTable'[Mileage] ),
            FILTER (
                'DataTable',
                'DataTable'[Vehicle] = EARLIER ( 'DataTable'[Vehicle] )
                    && 'DataTable'[Date] = EARLIER ( 'DataTable'[Date] )
            )
        )
    RETURN
        CurrDate - PrevDate
    

    Llegar:

    Daily Mielage.jpg

    Si desea que el "Kilometraje diario" para la primera fecha (mínima) esté en blanco, use:

    Daily Mileage =
    VAR MinDate =
        MIN ( 'DataTable'[Date] )
    VAR PrevDate =
        CALCULATE (
            SUM ( 'DataTable'[Mileage] ),
            FILTER (
                'DataTable',
                'DataTable'[Vehicle] = EARLIER ( 'DataTable'[Vehicle] )
                    && 'DataTable'[Date]
                        = EARLIER ( 'DataTable'[Date] ) - 1
            )
        )
    VAR CurrDate =
        CALCULATE (
            SUM ( 'DataTable'[Mileage] ),
            FILTER (
                'DataTable',
                'DataTable'[Vehicle] = EARLIER ( 'DataTable'[Vehicle] )
                    && 'DataTable'[Date] = EARLIER ( 'DataTable'[Date] )
            )
        )
    RETURN
        IF ( 'DataTable'[Date] = MinDate, BLANK (), CurrDate - PrevDate )
    

    He adjuntado el archivo PBIX de ejemplo