2015-11-26 6 views
1

J'essaie de créer un membre calculé qui devrait renvoyer les commandes moyennes par semaine et par personne. Ci-dessous, la capture d'écran où le client cherchera à prévoir la charge de travail. Le personnel ne peut pas travailler tous les jours dans une semaine.Calcul des commandes moyennes par jour en utilisant MDX

Le calcul sera: Nombre d'ordres/Nombre de jours prévus dans la semaine.

Il ne serait pas très difficile de calculer ceci si le nom de la semaine est dans la même hiérarchie de la date, mais dans ce cas il n'est pas dans la hiérarchie, mais seulement membre de la dimension.

enter image description here

Required Output

C'est le MDX J'ai essayé:

Avg (Descendants 
([Date Planned].[Date Planned].CurrentMember, [Date Planned].[Date Planned].[Date Planned]), 
[Measures].[Orders Qty]) 
+0

Partager le script que vous avez essayé jusqu'à présent afin de vous aider. –

+0

Je sais que c'est faux car il n'y a pas de date spécifiée sur les lignes. Moy (Descendants ([Date planifiée]. [Date planifiée] .CurrentMember, [Date prévue]. [Date planifiée]. [Date prévue]), [Mesures]. [Quantité commandes]) – Murty

+0

Avez-vous besoin de la moyenne par semaine? Si oui, éditez le titre de votre question. Pourquoi n'avez-vous pas utilisé l'attribut 'week'? –

Répondre

0

Il serait beaucoup plus facile quand vous avez la semaine et le jour supplémentaire dans la hiérarchie, mais si vous ne N'ont pas la possibilité d'avoir cela ajouté, il existe une solution différente non élégante.

Si vous supposer que ce membre sera toujours utilisé avec la semaine sur les lignes de votre calcul membre serait comme suit: enter image description here

Cela ne fonctionnera correctement avec des semaines sur les lignes - donc je recommande de prolonger votre Calendrier hiérarchie par semaine et par jour, puis nous pouvons avoir une discussion sur une solution beaucoup plus élégante.

+0

Merci pour votre réponse.Cela peut ne pas fonctionner pour moi dans ce scénario car aucun jour n'est fixé. Cela pourrait être n'importe quoi entre 1 et 7 selon l'individu. Cependant, si je considère votre suggestion de l'ajouter dans la hiérarchie si je ne trouve aucune solution. Merci encore pour votre suggestion – Murty

+0

Quand vous aurez ajouté la semaine et le jour dans la hiérarchie, alors je peux vous aider à terminer ceci - bien sûr si vous auriez besoin de mon aide. – wbargiel

0

Essayez d'utiliser ceci:

WITH MEMBER [Measures].[avg_week] AS 
    Avg (EXISTING { [Date Planned].[Week Of Year].[Week Of Year] }, 
    [Measures].[Orders Qty]) 
SELECT [Measures].[avg_week] ON COLUMNS, 
NON EMPTY 
{ [Person].[PersonName].[PersonName] * [Date Planned].[Week Of Year].[Week Of Year] } ON ROWS 
FROM [Your cube] 

Laissez-moi savoir si cela peut vous aider.

0

Peut-être quelque chose comme ce qui suit:

WITH 
    MEMBER [Measures].[PlannedDayCnt] AS 
    Count 
    (
     Exists 
     (
     (EXISTING 
      [Date Planned].[Date Planned].[Date Planned].MEMBERS) 
     ,[Date Planned].[Week Of Year].currentmember 
    ) 
    ) 
    MEMBER [Measures].[Averge Orders] AS 
    [Measures].[Orders Qty]/[Measures].[PlannedDayCnt] 
SELECT 
    { 
    [Measures].[Orders Qty] 
    ,[Measures].[PlannedDayCnt] 
    ,[Measures].[Averge Orders] 
    } ON 0 
, 
    [Person].[PersonName].[PersonName] 
    * [Date Planned].[Week Of Year].[Week Of Year] ON 1 
FROM [aCube]; 

Je voudrais tester, mais ne savez pas comment modéliser votre scénario dans le cube AdvWrks.

0

Je voudrais d'abord voir combien de "dates" appartiennent à la semaine. Ce serait facile comme ce serait les jours où les ordres ont été placés pour cette personne cette semaine.

NonEmpty 
     (
     [Date Planned].[Date Planned].[Date Planned].MEMBERS, 
     (
      [Date Planned].[Week Of Year].currentmember, 
      [Person].[PersonName].currentmember, 
      [Measures].[Orders Qty] 
     ) 
     ) 

Maintenant que vous avez les dates requises pour la semaine et la personne « actuelle » « actuelle », vous devez calculer la quantité moyenne de commande pour ces ensemble de dates. Il ressemblerait à ceci:

AVG 
    (
    NonEmpty 
      (
      [Date Planned].[Date Planned].[Date Planned].MEMBERS, 
      (
       [Date Planned].[Week Of Year].currentmember, 
       [Person].[PersonName].currentmember, 
       [Measures].[Orders Qty] 
      ) 
      ) 
    , [Measures].[Orders Qty] 
    ) 

Votre construction finale devrait être:

WITH MEMBER Measures.AverageOrderPerDay AS 
AVG 
    (
    NonEmpty 
      (
      [Date Planned].[Date Planned].[Date Planned].MEMBERS, 
      (
       [Date Planned].[Week Of Year].currentmember, 
       [Person].[PersonName].currentmember, 
       [Measures].[Orders Qty] 
      ) 
      ) 
    , [Measures].[Orders Qty] 
    ) 

SELECT 
    { 
    [Measures].AverageOrderPerDay, 
    [Measures].[Orders Qty] 
    } 
ON 0, 
    [Person].[PersonName].[PersonName].MEMBERS 
    * [Date Planned].[Week Of Year].[Week Of Year].MEMBERS ON 1 
FROM [YourCube]