Dans mon cube SSAS, plusieurs mesures définies dans MDX fonctionnent correctement, sauf dans un type d'agrégation sur plusieurs périodes. Certains ne s'agrègent pas (et ne sont pas destinés à) mais on agrège mais donne les mauvaises réponses. Je peux voir pourquoi, mais pas ce qu'il faut faire pour l'empêcher. Le total mis en évidence dans la capture d'écran Excel ci-dessous (sacrément, pas autorisé à inclure une image, revenant à l'ancienne table) est le cas le plus simple de ce qui ne va pas. Dans cet exemple, 23 621 est et non le total général de 5 713 et 6 837.Agrégation d'une mesure calculée MDX lorsque plusieurs périodes sont sélectionnées
Active Commitments Acquisitions Net Lost Commitments Growth in Commitments
2009 88,526 13,185 5,713 7,472
2010 92,125 10,436 6,837 3,599
Total 23,621 23,621
- Engagements actifs fonctionne très bien. Il est calculé pour un moment précis et ne doit pas être agrégé sur plusieurs périodes.
- Les acquisitions fonctionnent bien.
- [Augmentation des engagements] = ([Mesures]. [Engagements actifs], [Date Dimension]. [Exercice hiérarchique] .currentMember) - ([Mesures]. [Engagements actifs], [Date Dimension .] [exercice Hiérarchie] .prevMember)
- [mesures] [engagements nets perdus] = ([mesures] [acquisitions] -... [mesures] [de croissance des engagements])
ce qui se passe dans la capture d'écran, le total des engagements nets perdus est calculé à partir du total des acquisitions (23 621) moins le total de la croissance des engagements (qui est nul).
L'agrégation des engagements perdus nets est logique et fonctionne pour les dimensions hors temps. Mais je veux qu'il montre null lorsque plusieurs périodes sont sélectionnées plutôt qu'une valeur erronée. Notez que ce n'est pas la même chose que de simplement désactiver toute agrégation sur la dimension temporelle. L'agrégation de Net Lost Commitment fonctionne bien dans la hiérarchie temporelle - la capture d'écran affiche les valeurs correctes pour 2009 et 2010, et si vous étendez à trimestres ou mois, vous obtenez toujours des valeurs correctes. Ce n'est que lorsque plusieurs périodes sont sélectionnées que l'agrégation échoue. Donc, ma question est de savoir comment changer la définition des engagements perdus nets de sorte qu'elle ne s'agrège pas lorsque plusieurs périodes sont sélectionnées, mais continue à s'agréger pour toutes les autres dimensions. Par exemple, est-il un moyen d'écriture dans MDX:
CREATE MEMBER CURRENTCUBE.[Measures].[Net Lost Commitments]
AS (iif([Date Dimension].[Fiscal Year Hierarchy].**MultipleMembersSelected**
, null
, [Measures].[Acquisitions] - [Measures].[Growth in Commitments]))
ADVthanksANCE,
Matt.
Autre idée ... le MDX définissant les mesures se trouve dans le script "Calculation" du cube SSAS. Alors peut-être que plutôt que de limiter l'agrégation dans la définition de mesure elle-même, je pourrais le faire via une instruction SCOPE. Existe-t-il un moyen dans une instruction SCOPE de dire "ce bloc n'applique que lorsque le contexte est un seul membre de la [Dimension de date]"? – MattClarke