2017-04-12 1 views
0

Je développe un cube dans SSAS, je dois être en mesure de comparer les valeurs YTD entre l'année en cours et l'année dernière.SSAS comparer 2 valeurs YTD pour le même mois dans différentes années

J'ai le scénario ci-dessous:

  • types de budget par année: budget1-2016, budget2-2016, budget1-2017 , budget2-2017.
  • Les types budgétaires doivent être placés dans les colonnes
  • Unités: doivent être placés dans les lignes
  • La mesure est appelée « Billings »

je dois comparer la valeur YTD pour « Billings » entre budgets "budget1 - 2016" et "budget2-2017" (différents types de budget et année) pour un mois spécifique.

lorsque le mois du calendrier est inclus dans le tout des lignes ou des colonnes fonctionne très bien, Expected Result

mais si elle est incluse dans le filtre et je choisis par exemple Février 2016 et Février 2017, les résultats ne sont pas comme prévu.

enter image description here enter image description here

Avec l'utilisation de la fonction TAIL, seul le mois supérieur est pris en considération et la colonne de 2016 est supprimée.

Existe-t-il un moyen de placer le mois du calendrier dans le filtre, de sélectionner le même mois d'années différentes et de voir leurs valeurs YTD?

+0

Utilisez-vous un calcul sur vos mesures. Billings? –

+0

J'utilise une expression pour la mesure: _Billings = _Billings * Rate . La valeur YTD est calculée comme suit: Somme (PeriodsToDate ([Date de données]. [Calendrier]. [Année civile], [Date de données]. [Calendrier] .CURRENTMEMBER), [Mesures]. [_ Factures]) –

Répondre

0

Le problème est que vous mettez deux membres dans le filtre. CurrentMember ne fonctionne pas avec deux tuples. Par conséquent [Date de données]. [Calendrier] .CurrentMember est [Date de données]. [Calendrier] .DefaultMember est [Date de données]. [Calendrier]. [Tous]. Il exécute le code suivant:

Sum(
    PeriodsToDate(
     [Data Date].[Calendar].[Calendar Year], 
     [Data Date].[Calendar].[All] 
    ), 
    [Measures].[_Billings] 
) 

Vous choisir deux mois à partir de différentes années, donc on ne sait pas ce que vous voulez revenir du PeriodsToDate() fonction. Les données depuis janvier 2016 ou janvier 2017? Choisir l'un des membres va résoudre votre problème et le rendre clair.

Je ne garantissons pas que est le code parfait pour travailler avec, mais il peut ne la magie ainsi, ajouter encore un autre des membres calculés pour résumer mois:

Sum(
    existing [Data Date].[Month].[Month].Members, 
    [Measures].[Billings] 
) 
+0

les données depuis janvier 2016 pour le budget1-2016 et depuis janvier 2017 pour le budget 2017.En résumé, je dois comparer les valeurs YTD du budget1 pour l'année 2016 au budget 2 pour l'année 2017 le même mois de l'année. –

+0

Si vous ajoutez le troisième membre, par exemple, juillet 2016 là. Renverra-t-il la somme de tous ces arbres? Cela signifie que la valeur de facturation de janvier 2016 sera incluse deux fois. Je pense que ta conception est fausse. J'ai mis à jour ma réponse avec une solution de contournement sale, mais essayez d'envisager une autre façon de le traiter. –

+0

La solution de contournement n'a pas wok non plus. Pas besoin de l'implémenter plus. L'ajout du mois calendaire dans les colonnes ou les lignes sera suffisant pour le client. –