ALLNOBLANKROW
S’applique à :Colonne calculéeTable calculéeMesureCalcul visuel
À partir de la table parent d’une relation, retourne toutes les lignes sauf la ligne vide, ou toutes les valeurs distinctes d’une colonne sauf la ligne vide, et ignore tous les filtres de contexte qui peuvent exister.
Syntaxe
ALLNOBLANKROW( {<table> | <column>[, <column>[, <column>[,…]]]} )
Paramètres
Terme | Définition |
---|---|
tableau | Table sur laquelle tous les filtres de contexte sont supprimés. |
colonne | Colonne sur laquelle tous les filtres de contexte sont supprimés. |
Un seul paramètre doit être passé ; le paramètre est soit une table, soit une colonne.
Valeur de retour
Une table, quand le paramètre passé était une table, ou une colonne de valeurs, quand le paramètre passé était une colonne.
Remarques
La fonction ALLNOBLANKROW filtre uniquement la ligne vide qu’une table parent, dans une relation, affiche quand les valeurs d’une ou plusieurs lignes de la table enfant n’ont pas de valeurs correspondantes dans la colonne parent. Consultez l’exemple ci-dessous pour obtenir une explication détaillée.
Le tableau suivant récapitule les variantes de ALL proposées dans DAX et leurs différences :
Fonction et utilisation Description ALL(Column) Supprime tous les filtres de la colonne spécifiée de la table ; tous les autres filtres sur les autres colonnes de la table continuent de s’appliquer. 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 sauf la ligne vide, ou toutes les valeurs distinctes d’une colonne sauf la ligne vide, et ignore tous les filtres de contexte qui peuvent exister. Pour obtenir une description générale de la façon dont la fonction ALL opère ainsi que des exemples pas à pas qui utilisent ALL(Table) et ALL(Column), consultez ALL, fonction.
Cette fonction n’est pas prise en charge pour une utilisation en mode DirectQuery quand elle est utilisée dans des colonnes calculées ou des règles de sécurité au niveau des lignes (RLS).
Exemple
Dans les données d’exemple, la table ResellerSales_USD contient une ligne sans valeurs qui ne peut donc être associée à aucune table parent dans les relations du classeur. Vous allez utiliser cette table dans un tableau croisé dynamique pour observer le comportement des lignes vides et voir comment gérer les décomptes dans les données non liées.
Étape 1 : Vérifier les données non liées
Ouvrez la fenêtre Power Pivot, puis sélectionnez la table ResellerSales_USD. Dans la colonne ProductKey, filtrez les valeurs vides. Il reste une ligne. Dans cette ligne, toutes les valeurs de colonne doivent être vides, sauf pour SalesOrderLineNumber.
Étape 2 : Créer un tableau croisé dynamique
Créez un tableau croisé dynamique, puis faites glisser la colonne datetime.[Année civile] vers le volet Étiquettes de ligne. Le tableau suivant présente les résultats attendus :
Étiquettes de ligne |
---|
2005 |
2006 |
2007 |
2008 |
Total général |
Comme vous pouvez le constater, il y a une étiquette vide entre 2008 et Total général. Cette étiquette vide représente le Membre inconnu, qui est un groupe spécial créé pour prendre en compte les valeurs de la table enfant qui n’ont pas de valeur correspondante dans la table parent, dans cet exemple la colonne datetime.[Année civile].
La présence de cette étiquette vide dans le tableau croisé dynamique est le signe qu’il y a soit des valeurs vides, soit des valeurs sans correspondance dans certaines tables associées à la colonne, datetime.[Année civile]. La table parent est celle dans laquelle figure l’étiquette vide, mais les lignes qui ne correspondent pas se trouvent dans une ou plusieurs des tables enfant.
Les lignes ajoutées au groupe de l’étiquette vide sont des valeurs qui ne correspondent à aucune valeur dans la table parent (par exemple, une date qui n’existe pas dans la table datetime) ou des valeurs null, c’est-à-dire sans aucune valeur pour la date. Dans cet exemple, nous avons placé une valeur vide dans toutes les colonnes de la table « sales » enfant. Le fait que la table parent contienne plus de valeurs que les tables enfant ne pose pas de problème.
Étape 3 : Compter les lignes avec ALL et ALLNOBLANK
Ajoutez les deux mesures suivantes à 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 les suivantes :
// 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'))
Dans un tableau croisé dynamique vide, ajoutez datetime.[Année civile] aux étiquettes de ligne, puis ajoutez les mesures nouvellement créées. Les résultats doivent ressembler au tableau suivant :
Étiquettes de ligne | Countrows ALLNOBLANK of datetime | Countrows ALL of datetime |
---|---|---|
2005 | 1 280 | 1281 |
2006 | 1 280 | 1281 |
2007 | 1 280 | 1281 |
2008 | 1 280 | 1281 |
1 280 | 1281 | |
Total général | 1 280 | 1281 |
Les résultats montrent une différence de 1 ligne dans le nombre de lignes de table. Cependant, si vous ouvrez la fenêtre Power Pivot et que vous 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érifier que le nombre est juste
Pour prouver que ALLNOBLANKROW ne compte pas de lignes véritablement vides et ne gère que la ligne vide spéciale de la table parente, ajoutez les deux mesures suivantes à la table ResellerSales_USD : Countrows ALLNOBLANKROW of ResellerSales_USD, Countrows ALL of ResellerSales_USD.
Créez un tableau croisé dynamique, puis faites glisser la colonne datetime.[Année civile] vers le volet Étiquettes de ligne. Ajoutez maintenant les mesures que vous venez de créer. Les résultats doivent se présenter comme suit :
Étiquettes de ligne | Countrows ALLNOBLANKROW of ResellerSales_USD | Countrows ALL of ResellerSales_USD |
---|---|---|
2005 | 60856 | 60856 |
2006 | 60856 | 60856 |
2007 | 60856 | 60856 |
2008 | 60856 | 60856 |
60856 | 60856 | |
Total général | 60856 | 60856 |
À présent, les deux mesures présentent les mêmes résultats. Cela est dû au fait que la fonction ALLNOBLANKROW ne compte pas les lignes véritablement vides dans une table, mais traite uniquement la ligne vide qui est un cas spécial généré dans une table parent quand une ou plusieurs des tables enfant de la relation contiennent des valeurs non correspondantes ou des valeurs vides.