Mosha se está burlando de mí ahora, creo. De todos modos, aquí hay una solución al problema que aún es compatible con AS2K, no codifica los nombres de las dimensiones y no se basa en niveles con un número determinado de miembros:

CON
MEDIDAS DE MIEMBROS.PRUEBA COMO ‘»)»‘
DEMOSTRACIÓN DE CÁLCULO DE CELDAS PARA ‘({MEASURES.[TEST]})’ ME GUSTA ‘
IIF(CALCULCURRENTPASS()=129,»(«, «») +
DIMENSIONES(129 – CALCULATIONCURRENTPASS()).CURRENTMEMBER.NAME +
IIF(CALCULATIONCURRENTPASS()=(130-DIMENSIONS.COUNT),»», «,»)
+ CSTR(VALOR DE PASO DE CÁLCULO (MEDIDAS. PRUEBA, -1, RELATIVO))
‘, CALCULATION_PASS_NUMBER=129, CALCULATION_PASS_DEPTH=128, SOLVE_ORDER=2, CONDITION=’CALCULATIONCURRENTPASS()>(129-DIMENSIONS.COUNT)’

SELECCIONE {MEDIDAS.PRUEBA} EN 0 DE VENTAS

Dado que solo puede tener 128 dimensiones en un cubo en AS2K, está seguro en el pase de profundidad codificado, pero todavía no es una solución realmente satisfactoria para mí. Desafortunadamente, hasta que mi servidor de prueba de Yukon vuelva a funcionar (¡date prisa con la reinstalación, Colin!), no podré probar ninguna solución usando la nueva funcionalidad MDX.

Jon Axon y yo discutimos cuál podría ser la solución de Yukon: como señaló Jon, dado que Yukon resuelve automáticamente la recursividad infinita tomando el valor del paso de cálculo anterior, sin usar CalculationPassValue(), entonces el mismo enfoque que el anterior se vería mucho mejor cuando expresado en Yukon MDX. Pero Mosha dijo que su solución también usaba GENERATE(), así que creo que tiene una forma completamente diferente de hacerlo. Estoy seguro de que será deslumbrantemente obvio cuando finalmente me diga de qué se trata…