ALL
Van toepassing op:berekende kolomberekende tabelMetingVisuele berekening
Retourneert alle rijen in een tabel of alle waarden in een kolom, waarbij alle filters worden genegeerd die mogelijk zijn toegepast. Deze functie is handig voor het wissen van filters en het maken van berekeningen voor alle rijen in een tabel.
Syntaxis
ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )
Parameters
Term | Definitie |
---|---|
table |
De tabel waarop u filters wilt wissen. |
column |
De kolom waarop u filters wilt wissen. |
Het argument voor de functie ALL moet een verwijzing naar een basistabel of een verwijzing naar een basiskolom zijn. U kunt geen tabelexpressies of kolomexpressies gebruiken met de functie ALL.
Retourwaarde
De tabel of kolom met filters verwijderd.
Opmerkingen
Deze functie wordt niet zelf gebruikt, maar fungeert als een tussenliggende functie die kan worden gebruikt om de set resultaten te wijzigen waarvoor een andere berekening wordt uitgevoerd.
Het normale gedrag voor DAX expressies met de functie ALL() is dat alle toegepaste filters worden genegeerd. Er zijn echter enkele scenario's waarin dit niet het geval is vanwege
auto-exist
, een DAX-technologie die het filteren optimaliseert om de hoeveelheid vereiste verwerking voor bepaalde DAX query's te verminderen. Een voorbeeld waarbij automatisch bestaan en ALL() onverwachte resultaten opleveren, is wanneer u filtert op twee of meer kolommen van dezelfde tabel (zoals bij het gebruik van slicers) en er een meting is voor diezelfde tabel die gebruikmaakt van ALL(). In dit geval wordt automatisch bestaan samenvoegen de meerdere filters in één en wordt alleen gefilterd op bestaande combinaties van waarden. Door deze samenvoeging wordt de meting berekend op de bestaande combinaties van waarden en wordt het resultaat gebaseerd op gefilterde waarden in plaats van alle waarden zoals verwacht. Zie voor meer informatie over automatisch bestaan en het effect ervan op berekeningen microsoft MVP Alberto Ferrari's Understanding DAX Auto-Exist artikel over sql.bi.com.In de volgende tabel wordt beschreven hoe u de functies ALL en ALLEXCEPT in verschillende scenario's kunt gebruiken.
Functie en gebruik Beschrijving ALL() Verwijdert alle filters overal. ALL() kan alleen worden gebruikt om filters te wissen, maar niet om een tabel te retourneren. ALL(tabel) Hiermee verwijdert u alle filters uit de opgegeven tabel. In feite retourneert ALL(Tabel) alle waarden in de tabel, waarbij alle filters worden verwijderd uit de context die anders mogelijk is toegepast. Deze functie is handig wanneer u met veel groeperingsniveaus werkt en een berekening wilt maken waarmee een verhouding van een geaggregeerde waarde tot de totale waarde wordt gemaakt. In het eerste voorbeeld ziet u dit scenario. ALL (Kolom[, Kolom[, ...]]) Verwijdert alle filters uit de opgegeven kolommen in de tabel; alle andere filters op andere kolommen in de tabel zijn nog steeds van toepassing. Alle kolomargumenten moeten afkomstig zijn uit dezelfde tabel. De variant ALL(Kolom) is handig als u de contextfilters voor een of meer specifieke kolommen wilt verwijderen en alle andere contextfilters wilt behouden. In de tweede en derde voorbeelden ziet u dit scenario. ALLEXCEPT(tabel, kolom1 [,kolom2]...) Hiermee verwijdert u alle contextfilters in de tabel, behalve filters die worden toegepast op de opgegeven kolommen. Dit is een handige snelkoppeling voor situaties waarin u de filters op veel, maar niet alle kolommen in een tabel wilt verwijderen. Deze functie wordt niet ondersteund voor gebruik in de DirectQuery-modus wanneer deze wordt gebruikt in regels voor beveiliging op rijniveau (berekende kolommen of beveiliging op rijniveau).
Voorbeeld 1
Verhouding van categorieverkoop tot totale verkoop berekenen
Stel dat u de hoeveelheid verkopen voor de huidige cel in de draaitabel wilt vinden, gedeeld door de totale verkoop voor alle resellers. Om ervoor te zorgen dat de noemer hetzelfde is, ongeacht hoe de draaitabelgebruiker de gegevens kan filteren of groeperen, definieert u een formule die gebruikmaakt van ALL om het juiste eindtotaal te maken.
In de volgende tabel ziet u de resultaten wanneer een nieuwe meting, All Reseller Sales Ratio, wordt gemaakt met behulp van de formule die wordt weergegeven in de codesectie. Als u wilt zien hoe dit werkt, voegt u het veld CalendarYear toe aan het gebied rijlabels gebied van de draaitabel en voegt u het veld ProductCategoryName toe aan het gebied kolomlabels. Sleep vervolgens de meting All Reseller Sales Rationaar het Waarden gebied van de draaitabel. Als u de resultaten wilt weergeven als percentages, gebruikt u de opmaakfuncties van Excel om een getalnotatiepercentage toe te passen op de cellen die de meting bevatten.
Rijlabels | Accessoires | Fietsen | Kleding | Onderdelen | Eindtotaal |
---|---|---|---|---|---|
2005 | 0,02% | 9.10% | 0.04% | 0,75% | 9.91% |
2006 | 0.11% | 24.71% | 0,60% | 4.48% | 29.90% |
2007 | 0,36% | 31.71% | 1.07% | 6,79% | 39.93% |
2008 | 0,20% | 16.95% | 0,48% | 2.63% | 20.26% |
Eindtotaal | 0,70% | 82.47% | 2.18% | 14,65% | 100.00% |
formule
= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/SUMX(ALL(ResellerSales_USD), ResellerSales_USD[SalesAmount_USD])
De formule wordt als volgt samengesteld:
De teller,
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
, is de som van de waarden in ResellerSales_USD[SalesAmount_USD] voor de huidige cel in de draaitabel, met contextfilters die zijn toegepast op CalendarYear en ProductCategoryName.Voor de noemer geeft u eerst een tabel op, ResellerSales_USD en gebruikt u de functie ALL om alle contextfilters in de tabel te verwijderen.
Vervolgens gebruikt u de functie SUMX om de waarden in de kolom ResellerSales_USD[SalesAmount_USD] op te tellen. Met andere woorden, u krijgt de som van ResellerSales_USD[SalesAmount_USD] voor alle resellers verkopen.
Voorbeeld 2
De verhouding tussen de productverkoop en de totale verkoop per huidig jaar berekenen
Stel dat u een tabel wilt maken met het verkooppercentage in de loop van de jaren voor elke productcategorie (ProductCategoryName). Als u het percentage voor elk jaar voor elke waarde van ProductCategoryName wilt verkrijgen, moet u de som van de verkoop voor dat specifieke jaar en de productcategorie delen door de som van de verkoop voor dezelfde productcategorie gedurende alle jaren. Met andere woorden, u wilt het filter op ProductCategoryName behouden, maar het filter op het jaar verwijderen bij het berekenen van de noemer van het percentage.
In de volgende tabel ziet u de resultaten wanneer een nieuwe meting, Reseller Sales Year, wordt gemaakt met behulp van de formule die wordt weergegeven in de codesectie. Als u wilt zien hoe dit werkt, voegt u het veld CalendarYear toe aan het rijlabels gebied van een draaitabel en voegt u het veld ProductCategoryName toe aan het kolomlabels gebied. Als u de resultaten wilt weergeven als percentages, gebruikt u de opmaakfuncties van Excel om een getalnotatie voor percentages toe te passen op de cellen met de meting, Reseller Sales Year.
Rijlabels | Accessoires | Fietsen | Kleding | Onderdelen | Eindtotaal |
---|---|---|---|---|---|
2005 | 3.48% | 11.03% | 1.91% | 5.12% | 9.91% |
2006 | 16.21% | 29.96% | 27.29% | 30,59% | 29.90% |
2007 | 51.62% | 38.45% | 48.86% | 46.36% | 39.93% |
2008 | 28.69% | 20,56% | 21.95% | 17.92% | 20.26% |
Eindtotaal | 100.00% | 100.00% | 100.00% | 100.00% | 100.00% |
formule
= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(DateTime[CalendarYear]))
De formule wordt als volgt samengesteld:
De teller,
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
, is de som van de waarden in ResellerSales_USD[SalesAmount_USD] voor de huidige cel in de draaitabel, met contextfilters die zijn toegepast op de kolommen CalendarYear en ProductCategoryName.Voor de noemer verwijdert u het bestaande filter op CalendarYear met behulp van de functie ALL(Kolom). Hiermee wordt de som berekend van de resterende rijen in de ResellerSales_USD tabel, nadat de bestaande contextfilters van de kolomlabels zijn toegepast. Het netto-effect is dat voor de noemer de som wordt berekend op de geselecteerde ProductCategoryName (het impliciete contextfilter) en voor alle waarden in Jaar.
Voorbeeld 3
De bijdrage van productcategorieën berekenen aan de totale verkoop per jaar
Stel dat u een tabel wilt maken waarin het percentage verkoop voor elke productcategorie per jaar wordt weergegeven. Als u het percentage voor elke productcategorie in een bepaald jaar wilt verkrijgen, moet u de som van de verkoop voor die specifieke productcategorie (ProductCategoryName) in jaar n berekenen en vervolgens de resulterende waarde delen door de som van de verkoop voor het jaar n over alle productcategorieën. Met andere woorden, u wilt het filter op jaar behouden, maar het filter op ProductCategoryName verwijderen bij het berekenen van de noemer van het percentage.
In de volgende tabel ziet u de resultaten wanneer een nieuwe meting, Reseller Sales CategoryName, wordt gemaakt met behulp van de formule die wordt weergegeven in de codesectie. Als u wilt zien hoe dit werkt, voegt u het veld CalendarYear toe aan het gebied rijlabels gebied van de draaitabel en voegt u het veld ProductCategoryName toe aan het gebied Kolomlabels. Voeg vervolgens de nieuwe meting toe aan het gebied Waarden van de draaitabel. Als u de resultaten wilt weergeven als percentages, gebruikt u de opmaakfuncties van Excel om een getalnotatie voor percentages toe te passen op de cellen die de nieuwe meting bevatten, Reseller Sales CategoryName.
Rijlabels | Accessoires | Fietsen | Kleding | Onderdelen | Eindtotaal |
---|---|---|---|---|---|
2005 | 0,25% | 91.76% | 0,42% | 7,57% | 100.00% |
2006 | 0,38% | 82.64% | 1.99% | 14.99% | 100.00% |
2007 | 0,90% | 79.42% | 2.67% | 17.01% | 100.00% |
2008 | 0,99% | 83.69% | 2.37% | 12.96% | 100.00% |
Eindtotaal | 0,70% | 82.47% | 2.18% | 14,65% | 100.00% |
formule
= SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])/CALCULATE( SUM( ResellerSales_USD[SalesAmount_USD]), ALL(ProductCategory[ProductCategoryName]))
De formule wordt als volgt samengesteld:
De teller,
SUMX(ResellerSales_USD, ResellerSales_USD[SalesAmount_USD])
, is de som van de waarden in ResellerSales_USD[SalesAmount_USD] voor de huidige cel in de draaitabel, met contextfilters toegepast op de velden CalendarYear en ProductCategoryName.Voor de noemer gebruikt u de functie, ALL(Kolom), om het filter op ProductCategoryName te verwijderen en de som te berekenen van de resterende rijen in de ResellerSales_USD tabel, nadat u de bestaande contextfilters van de rijlabels hebt toegepast. Het netto-effect is dat voor de noemer de som wordt berekend over het geselecteerde jaar (het impliciete contextfilter) en voor alle waarden van ProductCategoryName.