Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
10 months ago

Balance General YTD

Hola a todos,

Mi conjunto de datos de balance general se ve así. Funciona bien cuando estoy creando el balance general del mes real, pero necesito crear un balance general para cada período para poder ver la variación entre meses. ¿Hay una manera de hacer eso?

Gracias

Cuenta de GLPeriodoUSD
11112025/0150000
11112025/056000
11112024/0390000

3 Replies

  • Hola @ljimenezvega84 ,

    Dado que las cuentas del libro mayor del balance son saldos acumulados de por vida hasta la fecha de las transacciones, si su lista es la lista de transacciones en las cuentas del libro mayor, puede utilizar el cálculo acumulativo, pero si sus datos son el saldo de BS preagregado, filtrará los datos por la fecha máxima. Podré proporcionar el cálculo si puedo aclarar si lo anterior es el saldo agregado o solo las transacciones en la cuenta de BS GL.

    Saludos

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Hola @DataNinja777 los datos son acumulativos de por vida hasta la fecha. El BS del 25 de noviembre debería tener todos los datos hasta el 25 de noviembre, pero el BS del 25 de junio debería tener todos los datos hasta el 25 de junio. ¿Esto aclara tu pregunta? Gracias

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        Hola @ljimenezvega84 ,

        Dado que su columna numérica representa el saldo acumulado de la vida hasta la fecha (es decir, el saldo normal del balance), puede crear una medida como la siguiente para asegurarse de que se recoja el último saldo.

        Balance as of Period = 
        
        // 1. Get the last date of the current period (e.g., "2024-May-31")
        VAR _LastDateInContext = 
            MAX ( Dim_Date[Date] )
        
        // 2. Find the last *actual* data point in the *entire* fact table
        VAR _LastOverallSnapshotDate = 
            CALCULATE(
                MAX(Fact_GL[Period]),
                ALL(Fact_GL) 
            )
        
        // 3. Check if a date filter is active on the visual (i.e., this is the matrix)
        VAR _IsDateContextFiltered = 
            ISFILTERED(Dim_Date[Date]) || 
            ISFILTERED(Dim_Date[YearMonth])
        
        // 4. Main Logic: Iterate per account to fix totals
        RETURN
        SUMX(
            // *** THIS IS THE FIX ***
            // Get the list of GL Accounts, but remove any date filters first.
            // This stops the iterator from being blank.
            CALCULATETABLE(
                VALUES(Fact_GL[GL Account]),
                REMOVEFILTERS(Dim_Date)
            ),
            
            // A. Find last snapshot date *for the current account*
            //    (This part was correct)
            VAR _LastSnapshotDateForAccount =
                CALCULATE (
                    MAX ( Fact_GL[Period] ),
                    REMOVEFILTERS ( Dim_Date ), 
                    Fact_GL[Period] <= _LastDateInContext 
                )
            
            // B. Get the value for that specific date
            //    (This part was correct)
            VAR _BalanceForAccount = 
                CALCULATE (
                    SUM ( Fact_GL[USD] ),
                    REMOVEFILTERS ( Dim_Date ),
                    Fact_GL[Period] = _LastSnapshotDateForAccount
                )
                
            // C. Apply the "no future" rule
            RETURN
            IF (
                _IsDateContextFiltered && _LastDateInContext > _LastOverallSnapshotDate, 
                BLANK(), 
                _BalanceForAccount
            )
        )

        El resultado se ve a continuación:

        Por favor, hágame saber si esto cumple con sus requisitos o no. Por lo general, si extrae el balance general de ERP, aunque no haya una transacción en un mes en particular, los saldos se generan como se indicó anteriormente, lo que arrastra el saldo de los últimos meses no en blanco.

        Adjunto un archivo pbix para su referencia.

        Saludos