Lire en anglais

Partager via


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

DAX
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 :

DAX
// 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.

Fonctions de filtrage
ALL, fonction
FILTER, fonction