Share via


Fonction ALLNOBLANKROW (DAX)

À partir de la table parente d'une relation, retourne toutes les lignes à part la ligne vide, ou toutes les valeurs distinctes d'une colonne à part la ligne vide, et ignore tous les filtres de contexte qui peuvent exister.

Syntaxe

ALLNOBLANKROW(<table>|<column>)

Paramètres

Terme

Définition

table

Table dont sont supprimés tous les filtres de contexte.

column

Colonne dont sont supprimés tous les filtres de contexte.

Un seul paramètre doit être passé ; le paramètre est soit une table, soit une colonne.

Valeur de retour

Une table, lorsque le paramètre passé était une table, ou une colonne de valeurs, lorsque le paramètre passé était une colonne.

Notes

La fonction ALLNOBLANKROW filtre seulement la ligne vide qu'une table parent, dans une relation, affichera lorsque la table enfant contient une ou plusieurs lignes qui n'ont pas de valeurs correspondantes dans la colonne parent. Consultez l'exemple ci-dessous pour bénéficier d'une explication complète.

La table suivante résume les variations de la fonction ALL qui sont proposées dans le langage DAX, et leurs différences :

Fonction et utilisation

Description

ALL(colonne)

Supprime tous les filtres de la colonne spécifiée dans la table ; tous les autres filtres de la table, sur d'autres colonnes, restent applicables.

ALL(Table)

Supprime tous les filtres de la table spécifiée.

ALLEXCEPT(Table,Col1,Col2...)

Remplace tous les filtres de contexte de la table sauf sur les colonnes spécifiées.

ALLNOBLANK(table|colonne)

À partir de la table parent d'une relation, retourne toutes les lignes à part la ligne vide, ou toutes les valeurs distinctes d'une colonne à part la ligne vide, et ignore tous les filtres de contexte qui peuvent exister.

Pour obtenir une description générale du fonctionnement de la fonction ALL, avec des exemples pas à pas qui utilisent ALL(table) et ALL(colonne), consultez Fonction ALL (DAX).

Exemple

Dans l'exemple de données, la table ResellerSales_USD contient une ligne qui n'a pas de valeurs et, par conséquent, qui ne peut pas être en rapport avec l'une quelconque des tables parents dans les relations au sein du classeur. Vous utiliserez cette table dans un tableau croisé dynamique afin de pouvoir examiner le comportement avec les lignes vides et la manière de traiter les nombres sur des données non liées.

Étape 1 : vérifiez les données non liées

Ouvrez la fenêtre PowerPivot, puis sélectionnez la table ResellerSales_USD. Dans la colonne ProductKey, filtrez les valeurs vides. Une ligne restera. Dans cette ligne, toutes les valeurs de colonne doivent être vides à l'exception de SalesOrderLineNumber.

Étape 2 : créez un tableau croisé dynamique

Créez un tableau croisé dynamique, puis faites glisser la colonne datetime.[Année civile] dans le volet Étiquettes de ligne. Le tableau suivant indique les résultats attendus :

Étiquettes de ligne

2001

2002

2003

2004

 

Total général

Notez l'étiquette vide entre 2004 et Total général. Cette étiquette vide représente le membre inconnu, qui est un groupe spécial créé par PowerPivot pour représenter toutes les valeurs dans la table enfant qui n'ont pas de valeur correspondante dans la table parent, dans cet exemple, la colonne datetime.[année civile].

Lorsque vous voyez cette étiquette vide dans le tableau croisé dynamique, vous savez que dans certaines des tables en relation avec la colonne datetime.[année civile], il existe des valeurs vides ou des valeurs non correspondantes. La table parent est celle qui affiche l'étiquette vide, mais les lignes qui ne correspondent pas se trouvent dans une ou plusieurs des tables enfants.

Les lignes qui sont ajoutées à ce groupe d'étiquettes vides sont soit des valeurs qui ne correspondent à aucune valeur dans la table parent (par exemple, une date qui n'existe pas dans la table datetime), soit des valeurs NULL, ce qui signifie aucune valeur de date du tout. Dans cet exemple, nous avons placé une valeur vide dans toutes les colonnes de la table de ventes enfant. Le fait d'avoir plus de valeurs dans la table parent que dans les tables enfants ne provoque pas de problème.

Étape 3 : comptez les lignes à l'aide des fonctions ALL et ALLNONBLANK

Ajoutez les deux mesures suivantes dans la table datetime pour compter les lignes de la table : Countrows ALLNOBLANK of datetime, Countrows ALL of datetime. Les formules que vous pouvez utiliser pour définir ces mesures sont données dans la section de code ci-dessous.

Dans un tableau croisé dynamique vide, ajoutez la colonne datetime.[Année civile] aux étiquettes de ligne, puis ajoutez les mesures nouvellement créées. Les résultats doivent ressembler à la table suivante :

Étiquettes de ligne

Countrows ALLNOBLANK of datetime

Countrows ALL of datetime

2001

1280

1281

2002

1280

1281

2003

1280

1281

2004

1280

1281

 

1280

1281

Total général

1280

1281

Les résultats montrent une différence de 1 ligne dans le nombre de lignes de la table. Toutefois, si vous ouvrez la fenêtre PowerPivot et sélectionnez la table datetime, vous ne trouverez aucune ligne vide dans la table, car la ligne vide spéciale mentionnée ici est le membre inconnu.

Étape 4 : vérifiez que le nombre est exact

Afin de prouver que la fonction ALLNOBLANKROW ne compte aucune ligne vraiment vide et traite uniquement la ligne vide spéciale sur la table parente, ajoutez les deux mesures suivantes à la table ResellerSales_USD : Countrows ALLNOBLANKROW of ResellerSales_USD et Countrows ALL of ResellerSales_USD.

Créez un tableau croisé dynamique et faites glisser la colonne datetime.[Année civile] dans le volet Étiquettes de ligne. Ajoutez à présent les mesures que vous venez de créer. Les résultats doivent ressembler à :

Étiquettes de ligne

Countrows ALLNOBLANKROW of ResellerSales_USD

Countrows ALL of ResellerSales_USD

2001

60856

60856

2002

60856

60856

2003

60856

60856

2004

60856

60856

 

60856

60856

Total général

60856

60856

À présent, les deux mesures ont les mêmes résultats. Ceci est dû au fait que la fonction ALLNOBLANKROW ne compte pas les lignes vraiment vides dans une table, mais traite uniquement la ligne vide qui est un cas spécial généré dans une table parent, lorsqu'une ou plusieurs des tables enfants dans la relation contiennent des valeurs non correspondantes ou des valeurs vides.

// Countrows ALLNOBLANK of datetime
= COUNTROWS(ALLNOBLANKROW('DateTime'))

// Countrows ALL of datetime
= COUNTROWS(ALL('DateTime')) 

// Countrows ALLNOBLANKROW of ResellerSales_USD
=COUNTROWS(ALLNOBLANKROW('ResellerSales_USD'))

// Countrows ALL of ResellerSales_USD
=COUNTROWS(ALL('ResellerSales_USD'))

Voir aussi

Référence

Autres ressources