Nous présentons ici un exemple de MDX très avancé que nous avons rencontré chez l'un de nos clients. Notez qu'il utilise une fonctionnalité d'icCube qui permet à un tuple d'avoir la même hiérarchie définie plusieurs fois.
Le cas d'utilisation
Le cas d'utilisation implique plusieurs hiérarchies temporelles au sein d'une seule dimension temporelle de manière non standard.
La structure simplifiée est la suivante :
- Dimension : Calendrier
- Hiérarchie : Année
- Niveau : Année
- Hiérarchie : Période
- Niveau : Valeur de la période (PV)
- Niveau : Période (P)
- Hiérarchie : Année
Exemple de hiérarchie des périodes (enfants PV et P) :
- 1
- P1 2024
- P1 2025
- P1 2026
- 2
- P2 2024
- P2 2025
- P2 2026
- ...
L'objectif est de calculer les ventes de l'année précédente tout en affichant l'année, la valeur nominale et P. Voici la requête initiale :
WITH
MEMBER [Measures].[Sales Prev Year] AS ([Calendar].[Year].currentMember.prevMember, [Measures].[Sales])
SELECT
{ [Measures].[Sales], [Measures].[Sales Prev Year] } on 0
[Calendar].[Year].[Year] *
[Calendar].[Period]
.[PV] *
[Calendar].[Period]
.[P] on 1
[Product].[Product].[Product] on 2
FROM [Cube]
Dans notre exemple, nous cherchons quelque chose comme :
Mais ce que nous avons obtenu :
Que s'est-il passé ici ?
L'année et la période étant des hiérarchies distinctes, l'expression
devient (après complétion à partir du contexte défini par les axes) :
Pourquoi ?
Nous avons obtenu :
Visuellement :
Ce que nous devons faire
Solution
Spécifiez le CurrentMember de la période pour remplacer la valeur par défaut :
Comme on peut le lire dans la doc currentMember:
Depuis icCube 4.8, cette fonction renvoie un ensemble de membres si le tuple contient deux membres de la même hiérarchie. Cette fonctionnalité nécessite que la propriété icCube 'DimensionalityCheck' soit définie sur false.
Points à prendre en compte :
- Vous pouvez utiliser la même hiérarchie sur un ou plusieurs axes, mais cela peut compliquer vos calculs.
- Dans ce scénario, currentMember renvoie un set.
Ce scénario subtil et avancé met en évidence la façon dont les interactions hiérarchiques peuvent fausser silencieusement les résultats. Des outils tels qu'un Débogueur MDX sont d'une valeur inestimable pour suivre ces calculs étape par étape.