2017-10-17 14 views
1

J'ai des données qui ressemble à ceci:DAX requête pour calculer% Différence

Gender Salary PayGrade 
M  40000 3 
F  35000 3 
M  50000 5 
M  65000 7 

Je crée un visuel PowerBI qui devrait afficher une barre horizontale pour chaque niveau de rémunération, montrant la différence de $ selon le sexe. C'EST À DIRE. Dans PayGrade 3, les hommes sont payés 5000 $ de plus que les femmes dans cet exemple.

Comment puis-je structurer une requête DAX pour modéliser cela? Devrait être quelque chose comme

=IF(SUM(MaleSalaries) > SUM(FemaleSalaries), 
    SUM(MaleSalaries) - SUM(FemaleSalaries)/COUNT(FemaleSalaries)). 

Je suppose que le partitionnement par grade se produira dans la visualisation.

Edit: Voici mon DAX interroge l'écart, et la colonne de genre:

WageGap = IF(COUNTROWS(VALUES('Ex 6A-Salary Analysis'[Gender])) > 1, 
      IF(CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]), 'Ex 6A-Salary Analysis'[Gender] = "M") > 
      CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]), 'Ex 6A-Salary Analysis'[Gender] = "F"),CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]), 'Ex 6A-Salary Analysis'[Gender] = "M") - 
      CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]), 'Ex 6A-Salary Analysis'[Gender] = "F"),CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]), 'Ex 6A-Salary Analysis'[Gender] = "F") - 
      CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]), 'Ex 6A-Salary Analysis'[Gender] = "M")) 
      ,0) 


ColumnGender = IF(COUNTROWS(VALUES('Ex 6A-Salary Analysis'[Gender]))>1,IF(CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]),'Ex 6A-Salary Analysis'[Gender]="M")>CALCULATE(AVERAGE('Ex 6A-Salary Analysis'[Annualized Salary]),'Ex 6A-Salary Analysis'[Gender]="F"),"M","F"),"") 

Répondre

1

Si vous êtes à la recherche de la différence des salaires moyens par PayGrade, je pense que vous voulez quelque chose comme ce qui suit:

WageGap = IF(DISTINCTCOUNT(Pay[Gender]) > 1, 
      CALCULATE(AVERAGE(Pay[Salary]), Pay[Gender] = "M") - 
      CALCULATE(AVERAGE(Pay[Salary]), Pay[Gender] = "F") 
      ,0) 

Pay est votre table de données et vous avez PayGrade sur votre axe de graphique. Cette mesure teste d'abord s'il y a plus d'un sexe dans une certaine catégorie de rémunération et prend ensuite la différence des salaires moyens.


Edit:

On dirait que vous essayez de faire cela dans un tableau de tornade. Pour que cela fonctionne, vous aurez besoin de deux mesures distinctes qui peuvent être définies en utilisant la mesure que j'ai écrite ci-dessus. Essayez de mettre ces deux mesures dans vos valeurs pour le visuel.

+0

Ceci est proche, mais j'ai besoin d'un IF pour voir quel genre est le plus élevé pour chaque catégorie de rémunération. C'EST À DIRE. il ne montrera qu'une barre pour chaque catégorie de salaire, soit le mâle ou la femelle. – gattoun

+0

J'ai été capable d'intégrer l'instruction IF. Ma requête DAX et graphique: https://ibb.co/bBE60m https://ibb.co/eVJYfm ... J'ajouterais idéalement, s'il n'y a qu'un homme ou une femme (mais pas les deux) dans un salaire donné grade, alors aucune valeur ne devrait afficher. – gattoun

+0

Peut-être cela pourrait-il être réalisé avec la mesure dans l'image ci-dessus, couplé avec une colonne supplémentaire qui dénote "M" ou "F" sur la base de ce qui était supérieur pour cette catégorie de rémunération? – gattoun