Partager via


Fonction HASONEVALUE (DAX)

Retourne TRUE lorsque le contexte de columnName a été filtré sur une seule valeur distincte. Sinon, il a la valeur FALSE.

Syntaxe

HASONEVALUE(<columnName>)

Paramètres

  • columnName
    Nom d'une colonne existante, dans la syntaxe DAX standard. Il ne peut pas s'agir d'une expression.

Valeur de retour

TRUE lorsque le contexte de columnName a été filtré sur une seule valeur distincte. Sinon, il a la valeur FALSE.

Notes

  • COUNTROWS(VALUES(<columnName>)) = 1 est une expression équivalente pour HASONEVALUE().

Exemple

Dans l'exemple suivant, vous voulez créer une formule qui vérifie si le contexte est segmenté en fonction d'une valeur, afin d'estimer un pourcentage par rapport à un scénario prédéfini ; dans le cas présent, vous voulez comparer les ventes du revendeur aux ventes de 2007, puis vous devez déterminer si le contexte est filtré en fonction d'années uniques. En outre, si la comparaison n'est pas significative, vous voulez retourner la valeur BLANK.

Si vous voulez suivre le scénario, vous pouvez télécharger la feuille de calcul et le modèle à partir de la feuille de calcul des exemples de données PowerPivot.

Créez une mesure nommée [ResellerSales compared to 2007] à l'aide de l'expression suivante :

=IF(HASONEVALUE(DateTime[CalendarYear]),SUM(ResellerSales_USD[SalesAmount_USD])/CALCULATE(SUM(ResellerSales_USD[SalesAmount_USD]),DateTime[CalendarYear]=2007),BLANK())
  1. Après avoir créé la mesure, vous devez obtenir un résultat vide sous [ResellerSales compared to 2007], comme indiqué ci-dessous :

    ResellerSales compared to 2007

    La cellule BLANK du résultat est due au fait que vous n'avez pas de filtres d'année unique dans votre contexte.

  2. Faites glisser DateTime[CalendarYear] vers la zone Étiquettes de colonne ; votre table doit ressembler à ceci :

    Étiquettes de colonne

    2005

    2006

    2007

    2008

    ResellerSales compared to 2007

    24.83 %

    74.88 %

    100.00 %

    50.73 %

  3. Faites glisser ProductCategory[ProductCategoryName] vers la zone Étiquettes de ligne pour obtenir quelque chose qui ressemble à ceci :

    ResellerSales compared to 2007

    Étiquettes de colonne

    Étiquettes de ligne

    2005

    2006

    2007

    2008

    Accessories

    6.74 %

    31.40 %

    100.00 %

    55.58 %

    Bikes

    28.69 %

    77.92 %

    100.00 %

    53.46 %

    Clothing

    3.90 %

    55.86 %

    100.00 %

    44.92 %

    Components

    11.05 %

    65.99 %

    100.00 %

    38.65 %

    Total général

    24.83 %

    74.88 %

    100.00 %

    50.73 %

    Avez-vous remarqué que Total général s'est affiché au bas des colonnes mais pas des lignes ? Cela est dû au fait que le contexte de Total générals pour les lignes implique plusieurs années ; en revanche, pour les colonnes, il n'implique qu'une seule année.

  4. Faites glisser DateTime[CalendarYear] vers la zone Segments horizontaux et faites glisser SalesTerritory[SalesTerritoryGroup] vers la zone Étiquettes horizontales. Vous devez avoir un jeu de résultats vide, car votre table contient des données pour plusieurs années. Sélectionnez 2006 dans le segment, et votre table doit maintenant avoir à nouveau des données. Essayez d'autres années pour voir comment cela affecte les résultats.

  5. En résumé, HASONEVALUE() vous permet de déterminer si votre expression est évaluée dans le contexte d'une valeur unique pour columnName.