We’re modeling a General Ledger cube. For the most part it’s pretty general and simple. We’ve got Time, Chart of Accounts, and Accounting Unit dimensions. Then for measures we have one measure group with Actual Amt and Budgeted Amt.
Our chart of accounts dimension is a parent child dimension… it has a sign code at each level… its either a 1 or a -1. This sign code tells us if for a financial statement if the actual amt should be positive or negative. But for a trial balance report we always just want the raw amount.
Our first attempt we just ETL’d it and we separated it out in our measures. So we had a trial balance actual and a financial statement actual. This worked, but it was clunky and non-scalable. So then we headed down the path we are at now…
I’m trying to create a many to many intermediate fact table like so:
ChartOfAccounts.AccountId | Reports.ReportType | SignCode |
1 | FS | 1 |
2 | FS | 1 |
3 | FS | -1 |
1 | TB | 1 |
2 | TB | 1 |
3 | TB | 1 |
Then the ChartOfAccounts dimension
AccountId | AccountName | ParentAccountId |
1 | Income Statement | 0 |
2 | Balance Sheet | 0 |
3 | Special Charges | 2 |
Lastly the Reports dimension
ReportType | AccountName |
FS | Financial Statement |
TB | Trial Balance |
Once linking all that up in dimension usage tab and the dsv, etc… we thought we’d be able to simple add a calculated member that took (actual amount * sign code). But cannot seem to get the individual sign code for the reports account. Using sum obviously gives us the wrong multiplier. Using none or no aggregations gives us nothing.
I’m not sure if we’re headed down the wrong path totally or if we’re just missing something simple. Can anybody shed some light here?