on 2025 May 13 8:49 AM
Hi All,
We are trying to create non-standard allocation logic via Advanced formula step. Any suggestions on How we can configure this via advanced formula or standard allocation or mix of both.
Existing mapping between source and driver account data
ITEM CODE | Diver account |
SL1000 | AAC1 |
SL3000 | AAC2 |
SL8000 | AAC3 |
SL1000 | AAC4 |
Input data
AUDITTRAIL | VERSION | TIME | COMPCODE | ACCOUNT | COSTCENTER | ITEM_CODE | COLLECTION | CHANNEL | COUNTRY | BRAND | GENDER | PRODUCT | Amount |
DT01 | BUDGET | 202412 | CC01 | AAC5 | COSTC1 | SL1000 | # | 2 | # | # | # | # | 200.00 |
Driver based on existing mix %
AUDIT TRAIL | VERSION | TIME | COMP CODE | ACCOUNT | COSTCENTER | ITEM_CODE | COLLECTION | CHANNEL | COUNTRY | BRAND | GENDER | PRODUCT | Amount | Existing mix Driver% |
DT02 | BUDGET | 202412 | CC02 | AAC1 | SHOP1 | SL2000 | DM1M | 2 | US | DM1 | M | 10 | 1,000.00 | 0.25 |
DT02 | BUDGET | 202412 | CC02 | AAC4 | SHOP1 | SL2000 | DM1M | 2 | US | DM1 | M | 20 | 500.00 | 0.125 |
DT02 | BUDGET | 202412 | CC02 | AAC1 | SHOP1 | SL2000 | DM1M | 2 | US | DM1 | M | 30 | 2,500.00 | 0.625 |
DT02 | BUDGET | 202412 | CC02 | AAC2 | SHOP1 | SL2000 | DM1M | 2 | US | DM1 | M | 40 | 3,500.00 | 1 |
Output after applying Driver to input Data
FINAL RESULT | |||||||||||||
AUDIT TRAIL | VERSION | TIME | COMP CODE | ACCOUNT | COSTCENTER | ITEM_CODE | COLLECTION | CHANNEL | COUNTRY | BRAND | GENDER | PRODUCT | Amount |
DT03 | BUDGET | 202412 | CC01 | AAC5 | COSTC1 | SL1000 | DM1M | 2 | US | DM1 | M | 10 | 50 |
DT03 | BUDGET | 202412 | CC01 | AAC5 | COSTC1 | SL1000 | DM1M | 2 | US | DM1 | M | 20 | 25 |
DT03 | BUDGET | 202412 | CC01 | AAC5 | COSTC1 | SL1000 | DM1M | 2 | US | DM1 | M | 30 | 125 |
200.00 |
Request clarification before answering.
I don't know why your product 40 is not in the output, but this could be the code for the allocation to work
MEMBERSET [d/Measures] = "Amount"
AGGREGATE_DIMENSIONS = [d/COMPCODE], [d/ACCOUNT], [d/COSTCENTER], [d/ITEM_CODE]
AGGREGATE_WRITETO [d/COMPCODE] = "CC01"
AGGREGATE_WRITETO [d/ACCOUNT] = "AAC5"
AGGREGATE_WRITETO [d/COSTCENTER] = "COSTC1"
AGGREGATE_WRITETO [d/ITEM_CODE] = "SL1000"
VARIABLEMEMBER #TOTAL OF [d/AUDITTRAIL]
DATA([d/AUDITTRAIL] = #TOTAL, [d/COLLECTION] = "#", [d/COUNTRY] = "#", [d/BRAND] = "#", [d/GENDER] = "#", [d/PRODUCT] = "#") = RESULTLOOKUP([d/AUDITTRAIL] = "DT02")
DATA([d/AUDITTRAIL] = "DT03") = (RESULTLOOKUP([d/AUDITTRAIL] = "DT02") / RESULTLOOKUP([d/AUDITTRAIL] = #TOTAL, [d/COLLECTION] = "#", [d/COUNTRY] = "#", [d/BRAND] = "#", [d/GENDER] = "#", [d/PRODUCT] = "#")) * RESULTLOOKUP([d/AUDITTRAIL] = "DT01", [d/COLLECTION] = "#", [d/COUNTRY] = "#", [d/BRAND] = "#", [d/GENDER] = "#", [d/PRODUCT] = "#")
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Ok, then just add ITEM_CODE property to ACCOUNT dimension. Make sure to include AAC5 with SL1000 mapped.
AAC1 SL1000
AAC2 SL3000
AAC3 SL8000
AAC4 SL1000
AAC5 SL1000
Then add this line in MEMBERSET and it should do what you want.
Not sure about maintainability. SAC is not so good in further advanced property selections & re-usability of all of this. 🙂
MEMBERSET [d/ACCOUNT].[p/ITEM_CODE] = "SL1000"
User | Count |
---|---|
33 | |
22 | |
17 | |
8 | |
5 | |
5 | |
4 | |
4 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.