Most of the information in this post will be redundant for people who started working with Essbase prior to the cloud era. The Groovy API provides a mechanism for clearing partial data in ASO straight from Calculation Manager using the Groovy API. Two parameters must be given.
- Clear Data Region
- Logical or Physical clear
Logical Clear Vs Physical Clear
The data is not removed when using logical clear; instead, it is offset to zeros. Physical clear removes the data from the intersections. As a result, logical clear is always considerably faster than physical clear. We see #Missing (or I may say MISSING in MDX :)) because physical clear wipes off the data.
Define the intersections
It is indeed ASO, thus level zero intersections are needed. Any reference to higher level members, as far as I can tell, does not result in errors either. I’ve been using a basic crossjoin string generator function that produces nested cross joins from multiple sets from different dimensions. The behavior is mentioned in one of my previous post.
Cube cube = operation.getApplication().getCube('ASOCube')
String mdxRegion = getCrossJoins([['[No Season]'], ['[FY20]'], ['[No Scenario]'], ['[No Version]'], ['[No Channel]'], ['[Day00]'], ['[No Product]'], ['MemberRange([Feb],[Jan])']])
Boolean physical = true
def startTime = currentTimeMillis()
try {
cube.clearPartialData(mdxRegion, physical)
} catch (e) {
println e.message
}
println "Total Time Elapsed : ${(currentTimeMillis() - startTime) / 1000} Secs."
String getCrossJoins(List<List<String>> essIntersection) {
String crossJoinString
if (essIntersection.size() > 1) {
crossJoinString = essIntersection[1..-1].inject('{' + essIntersection[0].join(',') + '}') { concat, members -> "CrossJoin(" + concat + ',{' + members.join(',') + '})' }
}
return crossJoinString
}
Execution
It takes a long time to physically clear. I don’t have access to an on-premises instance to run the test on. I asked a few of my friends who use physical clear often. They also notified me of this. Let’s see if the performance is improved in the upcoming updates.