Problema de medidas semi-aditivas: sumar instantáneas de cada mes, pero no en meses
Pregunta
Competente con SQL pero nuevo en MDX, tengo problemas para entender esto:
Tengo una tabla de hechos que contiene instantáneas de saldos de cuentas mensuales. Necesito resumir los saldos como una medida semi-aditiva, la suma recta no funciona, obviamente, para saldos. Sin embargo, SÍ debo sumar todos los saldos dentro de CADA mes, por separado, al sumar los saldos de todas las cuentas, y por lo tanto el " lastnonempty " La noción tampoco me funciona. Ejemplo, si los hechos se parecen a esto:
Date AccountNo Balance
2009-01-31 1111 $100
2009-01-31 2222 $100
2009-01-31 4444 $100
2009-01-31 5555 $100
2009-02-28 1111 $100
2009-02-28 2222 $200
2009-02-28 3333 $500
2009-02-28 5555 $50
etc.
Y tengo una dimensión de cuenta que agrupa las cuentas en una categoría principal / categoría menor / jerarquía de cuentas, necesito un resultado como este que sume los saldos de cada mes en todas las cuentas:
Month Total
January 09 $400
February 09 $850
Y desglosado por tipo de cuenta:
Month Total
January 09 $400
Type 1 $200
1111 $100
2222 $100
Type 2 $200
February 09 $850
Type 1 $300
Type 2 $550
PERO, los saldos NO deben sumarse en meses, trimestres o años, porque no tiene sentido, y se contabilizarían dos veces. Cualquier intervalo de tiempo más largo debe mostrar el cierre del período:
Quarter WRONG Correct
Q1 $1250 $850 // should be the sum of balances for the *last* month in Q1
Type 1 $500 $300
Type 2 $759 $550
Si uso la acción " lastnonempty " agregación, parece que solo obtengo la última fila literal de la cuenta durante un mes, no la suma de los saldos de la cuenta del último mes. Es como si el total del mes muestra solo el saldo tomado de una cuenta aleatoria presente en ese mes, y no el total. (Estoy seguro de que no es realmente aleatorio, probablemente esté eligiendo uno según el orden de almacenamiento o algo así)
Estoy seguro de que solo estoy haciendo algo simple, mal ...
Solución
Creo que resolví este problema: mis datos de origen con los saldos eran muy escasos: solo había una fila para los saldos distintos de cero y NO filas para las cuentas cuando el saldo es cero. Eso hizo que todo fuera un poco complicado (imagínese como inventario, donde tiene recuentos de partes, y esos recuentos a menudo son cero, pero cuando son 0, entonces la fila simplemente falta en la tabla de datos)
Pude crear una vista en la fuente de datos que " volvería a agregar en " todas las filas adicionales, con saldo cero, y después de eso, la función ClosingPeriod () comenzó a funcionar como se esperaba.