SUMMARIZECOLUMNS
Van toepassing op: Berekende kolomBerekende tabelMetingVisuele berekening
Retourneert een samenvattingstabel over een set groepen.
Syntaxis
SUMMARIZECOLUMNS( <groupBy_columnName> [, < groupBy_columnName >]…, [<filterTable>]…[, <name>, <expression>]…)
Parameters
Term | Definitie |
---|---|
groupBy_columnName | Een volledig gekwalificeerde kolomreferentie (Tabel[Kolom]) naar een basistabel waarvoor de afzonderlijke waarden zijn opgenomen in de geretourneerde tabel. Elke groupBy_columnName kolom is gekoppeld (verschillende tabellen) of bestaat automatisch (dezelfde tabel) met de volgende opgegeven kolommen. |
filterTable | Een tabelexpressie die wordt toegevoegd aan de filtercontext van alle kolommen die zijn opgegeven als groupBy_columnName argumenten. De waarden in de filtertabel worden gebruikt om te filteren voordat cross-join/auto-exist wordt uitgevoerd. |
naam | Een tekenreeks die de kolomnaam vertegenwoordigt die moet worden gebruikt voor de volgende expressie die is opgegeven. |
Expressie | Een DAX-expressie die één waarde retourneert (geen tabel). |
Retourwaarde
Een tabel met combinaties van waarden uit de opgegeven kolommen op basis van de opgegeven groepering. Alleen rijen waarvoor ten minste één van de opgegeven expressies een niet-lege waarde retourneert, worden opgenomen in de geretourneerde tabel. Als alle expressies BLANK/NULL voor een rij opleveren, wordt die rij niet opgenomen in de geretourneerde tabel.
Opmerkingen
Deze functie garandeert geen sorteervolgorde voor de resultaten.
Een kolom kan niet meer dan één keer worden opgegeven in de parameter groupBy_columnName. De volgende formule is bijvoorbeeld ongeldig.
SUMMARIZECOLUMNS( Sales[StoreId], Sales[StoreId] )
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).
Filtercontext
Houd rekening met de volgende query:
SUMMARIZECOLUMNS (
'Sales Territory'[Category],
FILTER('Customer', 'Customer' [First Name] = "Alicia")
)
In deze query bevatten de groupBy-kolommen geen kolommen uit de FILTER-expressie (bijvoorbeeld uit de tabel Customer). Het filter wordt niet toegepast op de groupBy-kolommen. De tabellen Verkoopgebied en Klant kunnen indirect zijn gerelateerd via de feitentabel Reseller sales. Omdat ze niet rechtstreeks zijn gerelateerd, is de filterexpressie een no-op en worden de groupBy-kolommen niet beïnvloed.
Met deze query doet u echter het volgende:
SUMMARIZECOLUMNS (
'Sales Territory'[Category], 'Customer' [Education],
FILTER('Customer', 'Customer'[First Name] = "Alicia")
)
De groupBy-kolommen bevatten een kolom die wordt beïnvloed door het filter en dat filter wordt toegepast op de groupBy-resultaten.
Met IGNORE
De syntaxis IGNORE kan worden gebruikt om het gedrag van de functie SUMMARIZECOLUMNS te wijzigen door specifieke expressies weg te laten uit de BLANK/NULL-evaluatie. Rijen waarvoor alle expressies die niet gebruikmaken van IGNORE, retourneren BLANK/NULL, worden uitgesloten, ongeacht of de expressies waarvoor IGNORE wordt gebruikt, blank/NULL opleveren of niet. IGNORE kan alleen worden gebruikt binnen een SUMMARIZECOLUMNS-expressie.
Opmerking
SUMMARIZECOLUMNS(
Sales[CustomerId], "Total Qty",
IGNORE( SUM( Sales[Qty] ) ),
"BlankIfTotalQtyIsNot3", IF( SUM( Sales[Qty] )=3, 3 )
)
Hiermee wordt de kolom Sales[CustomerId] opgerold, waarmee een subtotaal wordt gemaakt voor alle klanten in de opgegeven groepering. Zonder IGNORE is het resultaat:
CustomerId | Totaal aantal | BlankIfTotalQtyIsNot3 |
---|---|---|
A | 5 | |
B | 3 | 3 |
E | 3 | 3 |
Met IGNORE,
CustomerId | Totaal aantal | BlankIfTotalQtyIsNot3 |
---|---|---|
B | 3 | 3 |
E | 3 | 3 |
Alle expressies genegeerd,
SUMMARIZECOLUMNS(
Sales[CustomerId], "Blank",
IGNORE( BLANK() ), "BlankIfTotalQtyIsNot5",
IGNORE( IF( SUM( Sales[Qty] )=5, 5 ) )
)
Hoewel beide expressies leeg retourneren voor sommige rijen, worden ze opgenomen omdat er geen niet-gnored expressies zijn die leeg retourneren.
CustomerId | Leeg | BlankIfTotalQtyIsNot5 |
---|---|---|
A | 5 | |
B | ||
E |
Met NONVISUAL
De functie NONVISUAL markeert een waardefilter in de functie SUMMARIZECOLUMNS als niet van invloed op meetwaarden, maar alleen van toepassing op groupBy-kolommen. NONVISUAL kan alleen worden gebruikt binnen een SUMMARIZECOLUMNS-expressie.
Opmerking
DEFINE
MEASURE FactInternetSales[Sales] = SUM(FactInternetSales[Sales Amount])
EVALUATE
SUMMARIZECOLUMNS
(
DimDate[CalendarYear],
NONVISUAL(TREATAS({2007, 2008}, DimDate[CalendarYear])),
"Sales", [Sales],
"Visual Total Sales", CALCULATE([Sales], ALLSELECTED(DimDate[CalendarYear]))
)
ORDER BY [CalendarYear]
Retourneert het resultaat waarbij [Visual Total Sales] het totaal is voor alle jaren:
DimDate[CalendarYear] | [Sales] | [Totale verkoop van visuals] |
---|---|---|
2007 | 9,791,060.30 | 29,358,677.22 |
2008 | 9,770,899.74 | 29,358,677.22 |
Dezelfde query daarentegen zonder de functie NONVISUAL:
DEFINE
MEASURE FactInternetSales[Sales] = SUM(FactInternetSales[Sales Amount])
EVALUATE
SUMMARIZECOLUMNS
(
DimDate[CalendarYear],
TREATAS({2007, 2008}, DimDate[CalendarYear]),
"Sales", [Sales],
"Visual Total Sales", CALCULATE([Sales], ALLSELECTED(DimDate[CalendarYear]))
)
ORDER BY [CalendarYear]
Retourneert het resultaat waarbij [Visual Total Sales] het totaal is voor de twee geselecteerde jaren:
DimDate[CalendarYear] | [Sales] | [Totale verkoop van visuals] |
---|---|---|
2007 | 9,791,060.30 | 19,561,960.04 |
2008 | 9,770,899.74 | 19,561,960.04 |
Met ROLLUPADDISSUBTOTAL
De toevoeging van de syntaxis ROLLUPADDISSUBTOTAL wijzigt het gedrag van de functie SUMMARIZECOLUMNS door samengetelde/subtotaalrijen toe te voegen aan het resultaat op basis van de groupBy_columnName kolommen. ROLLUPADDISSUBTOTAL kan alleen worden gebruikt binnen een SUMMARIZECOLUMNS-expressie.
Voorbeeld met één subtotaal
DEFINE
VAR vCategoryFilter =
TREATAS({"Accessories", "Clothing"}, Product[Category])
VAR vSubcategoryFilter =
TREATAS({"Bike Racks", "Mountain Bikes"}, Product[Subcategory])
EVALUATE
SUMMARIZECOLUMNS
(
ROLLUPADDISSUBTOTAL
(
Product[Category], "IsCategorySubtotal", vCategoryFilter,
Product[Subcategory], "IsSubcategorySubtotal", vSubcategoryFilter
),
"Total Qty", SUM(Sales[Qty])
)
ORDER BY
[IsCategorySubtotal] DESC, [Category],
[IsSubcategorySubtotal] DESC, [Subcategory]
Retourneert de volgende tabel,
Categorie | Subcategorie | IsCategorySubtotal | IsSubcategorySubtotal | Totaal aantal |
---|---|---|---|---|
Waar | Waar | 60398 | ||
Accessoires | Onwaar | Waar | 36092 | |
Accessoires | Fietsenrekken | Onwaar | Onwaar | 328 |
Fietsen | Mountainbikes | Onwaar | Onwaar | 4970 |
Kleding | Onwaar | Waar | 9101 |
Voorbeeld met meerdere subtotalen
SUMMARIZECOLUMNS (
Regions[State], ROLLUPADDISSUBTOTAL ( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL ( Sales[Date], "IsDateSubtotal"), "Total Qty", SUM( Sales[Qty] )
)
Verkoop wordt gegroepeerd op staat, per klant, op datum, met subtotalen voor 1. Verkoop per staat, op datum 2. Verkoop per staat, per klant 3. Samengeteld op zowel de klant als de datum die leidt tot de verkoop per staat.
Retourneert de volgende tabel,
CustomerID | IsCustomerSubtotal | Provincie | Totaal aantal | Datum | IsDateSubtotal |
---|---|---|---|---|---|
A | FALSE | WA | 5 | 10-7-2014 | |
B | FALSE | WA | 1 | 10-7-2014 | |
B | FALSE | WA | 2 | 7/11/2014 | |
E | FALSE | OF | 2 | 10-7-2014 | |
E | FALSE | OF | 1 | 7/11/2014 | |
TRUE | WA | 6 | 10-7-2014 | ||
TRUE | WA | 2 | 7/11/2014 | ||
TRUE | OF | 2 | 10-7-2014 | ||
TRUE | OF | 1 | 7/11/2014 | ||
A | FALSE | WA | 5 | TRUE | |
B | FALSE | WA | 3 | TRUE | |
E | FALSE | OF | 3 | TRUE | |
TRUE | WA | 8 | TRUE | ||
TRUE | OF | 3 | TRUE |
Met ROLLUPGROUP
Net als met de functie SUMMARIZE kan ROLLUPGROUP samen met ROLLUPADDISSUBTOTAL worden gebruikt om op te geven welke samenvattingsgroepen/granulariteiten (subtotalen) moeten worden opgenomen, waardoor het aantal geretourneerde subtotaalrijen wordt verminderd. ROLLUPGROUP kan alleen worden gebruikt binnen een SUMMARIZECOLUMNS- of SUMMARIZE-expressie .
Voorbeeld met meerdere subtotalen
SUMMARIZECOLUMNS(
ROLLUPADDISSUBTOTAL( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL(ROLLUPGROUP(Regions[City], Regions[State]), "IsCityStateSubtotal"),"Total Qty", SUM( Sales[Qty] )
)
Nog steeds gegroepeerd op plaats en staat, maar samengeteld bij het rapporteren van een subtotaal retourneert de volgende tabel,
Provincie | CustomerId | IsCustomerSubtotal | Totaal aantal | Plaats | IsCityStateSubtotal |
---|---|---|---|---|---|
WA | A | FALSE | 2 | Bellevue | FALSE |
WA | B | FALSE | 2 | Bellevue | FALSE |
WA | A | FALSE | 3 | Amsterdam | FALSE |
WA | B | FALSE | 1 | Amsterdam | FALSE |
OF | E | FALSE | 3 | Portland | FALSE |
WA | TRUE | 4 | Bellevue | FALSE | |
WA | TRUE | 4 | Amsterdam | FALSE | |
OF | TRUE | 3 | Portland | FALSE | |
A | FALSE | 5 | FALSE | ||
B | FALSE | 3 | TRUE | ||
E | FALSE | 3 | TRUE | ||
TRUE | 11 | TRUE |
Gerelateerde inhoud
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor