
📎 This article includes 1 downloadable practice file ↓
In block storage (BSO) Essbase, a calc script without FIX calculates the whole cube. FIX…ENDFIX limits the calculation to the members you list, which is both faster and safer.
In this article
Basic structure
FIX ("Actual", "FY25", @RELATIVE("Total Entity", 0))
CALC DIM ("Account");
ENDFIX
Everything inside runs only for Actual, FY25 and the level-0 entities. @RELATIVE(member, 0) returns all level-0 descendants.
Common patterns
Aggregate sparse dimensions
FIX ("Actual", "FY25")
AGG ("Entity", "Product");
ENDFIX
Copy actuals into the forecast
FIX ("FY25", @LIST("Jan","Feb","Mar"))
DATACOPY "Actual" TO "Forecast";
ENDFIX
Clear before reloading
FIX ("Actual", "Mar", "FY25")
CLEARDATA "Sales";
ENDFIX
Simple allocation
FIX ("Budget", "FY26", @RELATIVE("Total Entity", 0))
"Rent" = "Rent"->"Corporate" * ("Headcount" / "Headcount"->"Total Entity");
ENDFIX
The -> (cross-dimensional) operator reads a value from another member combination.
Performance rules of thumb
- FIX on sparse members where possible — it reduces the number of blocks touched.
- Avoid calculating the same block twice in one script (it causes “passes”).
- Use
SET UPDATECALC OFF;and other SET commands deliberately, and test on a copy. - Check the application log for elapsed time after each change.
Automate running them with MaxL.
📎 Practice files for this article
- 🗃️All code from this post5 examples in one file, ready to open in your editor.⬇ SQL · 780 B
Free to use for learning. Files with macros (.bas) are plain text — import them with Alt+F11 → File → Import File, and always test on a copy.
Atul (AJ) builds office-automation and local-first AI tools as Atulya AI, and works with Excel, SAP and Oracle EPM every day. He writes about the shortcuts, macros and automations that actually save time — plus the occasional wacky fact. Videos on YouTube: Lazy Automator AI (@LazyAutomatorAI).
More posts by Atul →Stuck on a step? Ask a question and the AI answers using this article.