SUMMARIZECOLUMNS
Returnerer en oversigtstabel over et sæt grupper.
Syntaks
SUMMARIZECOLUMNS( <groupBy_columnName> [, < groupBy_columnName >]…, [<filterTable>]…[, <name>, <expression>]…)
Parametre
Begreb | Definition |
---|---|
groupBy_columnName | En fuldt kvalificeret kolonnereference (Table[Column]) til en basistabel, hvor de entydige værdier er inkluderet i den returnerede tabel. Hver groupBy_columnName kolonne er joinforbundet (forskellige tabeller) eller fandtes automatisk (samme tabel) med de efterfølgende angivne kolonner. |
filterTable | Et tabeludtryk, der føjes til filterkonteksten for alle kolonner, der er angivet som groupBy_columnName argumenter. De værdier, der findes i filtertabellen, bruges til at filtrere, før cross-join/auto-exist udføres. |
navn | En streng, der repræsenterer det kolonnenavn, der skal bruges til det efterfølgende angivne udtryk. |
Udtryk | Ethvert DAX-udtryk, der returnerer en enkelt værdi (ikke en tabel). |
Returværdi
En tabel, der indeholder kombinationer af værdier fra de angivne kolonner baseret på den angivne gruppering. Det er kun rækker, hvor mindst ét af de angivne udtryk returnerer en ikke-tom værdi, der er inkluderet i den returnerede tabel. Hvis alle udtryk evalueres til BLANK/NULL for en række, medtages denne række ikke i den returnerede tabel.
Bemærkninger
Denne funktion garanterer ikke nogen sorteringsrækkefølge for resultaterne.
En kolonne kan ikke angives mere end én gang i parameteren groupBy_columnName. Følgende formel er f.eks. ugyldig.
SUMMARIZECOLUMNS( Sales[StoreId], Sales[StoreId] )
Denne funktion understøttes ikke til brug i DirectQuery-tilstand, når den bruges i beregnede kolonner eller RLS-regler (row-level security).
Filterkontekst
Overvej følgende forespørgsel:
SUMMARIZECOLUMNS (
'Sales Territory'[Category],
FILTER('Customer', 'Customer' [First Name] = "Alicia")
)
Uden en måling indeholder groupBy-kolonnerne i denne forespørgsel ingen kolonner fra udtrykket FILTER (f.eks. fra tabellen Customer). Filteret anvendes ikke på groupBy-kolonnerne. Tabellerne Sales Territory og Customer kan være indirekte relateret via faktatabellen Reseller sales. Da de ikke er direkte relateret, er filterudtrykket et no-op, og groupBy-kolonnerne påvirkes ikke.
Men med denne forespørgsel:
SUMMARIZECOLUMNS (
'Sales Territory'[Category], 'Customer' [Education],
FILTER('Customer', 'Customer'[First Name] = "Alicia")
)
GroupBy-kolonnerne indeholder en kolonne, der påvirkes af filteret, og dette filter anvendes på groupBy-resultaterne.
Med IGNORE
IGNORE-syntaksen kan bruges til at ændre funktionsmåden for funktionen SUMMARIZECOLUMNS ved at udelade bestemte udtryk fra BLANK/NULL-evalueringen. Rækker, hvor alle udtryk, der ikke bruger IGNORE, returnerer BLANK/NULL, udelades uafhængigt af, om de udtryk, der bruger IGNORE, evalueres til BLANK/NULL eller ej. IGNORE kan kun bruges i et SUMMARIZECOLUMNS-udtryk.
Eksempel
SUMMARIZECOLUMNS(
Sales[CustomerId], "Total Qty",
IGNORE( SUM( Sales[Qty] ) ),
"BlankIfTotalQtyIsNot3", IF( SUM( Sales[Qty] )=3, 3 )
)
Dette akkumulerer kolonnen Sales[CustomerId] og opretter en subtotal for alle kunder i den angivne gruppering. Uden IGNORE er resultatet:
CustomerId | Samlet antal | BlankIfTotalQtyIsNot3 |
---|---|---|
A | 5 | |
F | 3 | 3 |
L | 3 | 3 |
Med IGNORE,
CustomerId | Samlet antal | BlankIfTotalQtyIsNot3 |
---|---|---|
F | 3 | 3 |
L | 3 | 3 |
Alle-udtrykket ignoreres,
SUMMARIZECOLUMNS(
Sales[CustomerId], "Blank",
IGNORE( BLANK() ), "BlankIfTotalQtyIsNot5",
IGNORE( IF( SUM( Sales[Qty] )=5, 5 ) )
)
Selvom begge udtryk returnerer tomme for nogle rækker, medtages de, da der ikke er nogen ikke-diagnosticerede udtryk, der returnerer tomme.
CustomerId | Tom | BlankIfTotalQtyIsNot5 |
---|---|---|
A | 5 | |
F | ||
C |
Med NONVISUAL
Funktionen NONVISUAL markerer et værdifilter i funktionen SUMMARIZECOLUMNS, som ikke påvirker målingsværdier, men kun gælder for groupBy-kolonner. NONVISUAL kan kun bruges i et SUMMARIZECOLUMNS-udtryk.
Eksempel
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]
Returnerer resultatet, hvor [Visual Total Sales] er totalen på tværs af alle år:
DimDate[CalendarYear] | [Salg] | [Samlet salg af visualiseringer] |
---|---|---|
2007 | 9,791,060.30 | 29,358,677.22 |
2008 | 9,770,899.74 | 29,358,677.22 |
I modsætning hertil er den samme forespørgsel uden funktionen 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]
Returnerer resultatet, hvor [Visual Total Sales] er totalen på tværs af de to valgte år:
DimDate[CalendarYear] | [Salg] | [Samlet salg af visualiseringer] |
---|---|---|
2007 | 9,791,060.30 | 19,561,960.04 |
2008 | 9,770,899.74 | 19,561,960.04 |
Med ROLLUPADDISSUBTOTAL
Tilføjelsen af syntaksen ROLLUPADDISSUBTOTAL ændrer funktionsmåden for funktionen SUMMARIZECOLUMNS ved at føje akkumulerede rækker/subtotalrækker til resultatet baseret på de groupBy_columnName kolonner. ROLLUPADDISSUBTOTAL kan kun bruges i et SUMMARIZECOLUMNS-udtryk.
Eksempel med enkelt subtotal
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]
Returnerer følgende tabel,
Kategori | Underkategori | IsCategorySubtotal | IsSubcategorySubtotal | Samlet antal |
---|---|---|---|---|
True | True | 60398 | ||
Accessories | Falsk | True | 36092 | |
Accessories | Cykelstativer | Falsk | Falsk | 328 |
Cykler | Mountain Bikes | Falsk | Falsk | 4970 |
Tøj | Falsk | True | 9101 |
Eksempel med flere subtotaler
SUMMARIZECOLUMNS (
Regions[State], ROLLUPADDISSUBTOTAL ( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL ( Sales[Date], "IsDateSubtotal"), "Total Qty", SUM( Sales[Qty] )
)
Salg grupperes efter delstat, efter kunde, efter dato med subtotaler for 1. Salg efter delstat, efter dato 2. Salg efter delstat, efter kunde 3. Opløftet på både kunde og dato, der fører til salg efter delstat.
Returnerer følgende tabel,
CustomerID | IsCustomerSubtotal | State | Samlet antal | Dato | IsDateSubtotal |
---|---|---|---|---|---|
A | FALSE | WA | 5 | 7/10/2014 | |
F | FALSE | WA | 0 | 7/10/2014 | |
F | FALSE | WA | 2 | 7/11/2014 | |
C | FALSE | ELLER | 2 | 7/10/2014 | |
C | FALSE | ELLER | 0 | 7/11/2014 | |
SANDT | WA | 6 | 7/10/2014 | ||
SANDT | WA | 2 | 7/11/2014 | ||
SANDT | ELLER | 2 | 7/10/2014 | ||
SANDT | ELLER | 0 | 7/11/2014 | ||
A | FALSE | WA | 5 | SANDT | |
F | FALSE | WA | 3 | SANDT | |
C | FALSE | ELLER | 3 | SANDT | |
SANDT | WA | 8 | SANDT | ||
SANDT | ELLER | 3 | SANDT |
Med ROLLUPGROUP
Ligesom med funktionen SUMMARIZE kan ROLLUPGROUP bruges sammen med ROLLUPADDISSUBTOTAL til at angive, hvilke oversigtsgrupper/granulariteter (subtotaler), der skal medtages, hvilket reducerer antallet af returnerede rækker med subtotaler. ROLLUPGROUP kan kun bruges i et SUMMARIZECOLUMNS- eller SUMMARIZE-udtryk .
Eksempel med flere subtotaler
SUMMARIZECOLUMNS(
ROLLUPADDISSUBTOTAL( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL(ROLLUPGROUP(Regions[City], Regions[State]), "IsCityStateSubtotal"),"Total Qty", SUM( Sales[Qty] )
)
Stadig grupperet efter City og State, men akkumuleret, når der rapporteres en subtotal, returnerer følgende tabel,
State | CustomerId | IsCustomerSubtotal | Samlet antal | By | IsCityStateSubtotal |
---|---|---|---|---|---|
WA | A | FALSE | 2 | Bellevue | FALSE |
WA | F | FALSE | 2 | Bellevue | FALSE |
WA | A | FALSE | 3 | Vejle | FALSE |
WA | F | FALSE | 0 | Vejle | FALSE |
ELLER | C | FALSE | 3 | Portland | FALSE |
WA | SANDT | 4 | Bellevue | FALSE | |
WA | SANDT | 4 | Vejle | FALSE | |
ELLER | SANDT | 3 | Portland | FALSE | |
A | FALSE | 5 | FALSE | ||
F | FALSE | 3 | SANDT | ||
C | FALSE | 3 | SANDT | ||
SANDT | 11 | SANDT |
Relateret indhold
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: I hele 2024 udfaser vi GitHub-problemer som feedbackmekanisme for indhold og erstatter det med et nyt feedbacksystem. Du kan få flere oplysninger under:Indsend og få vist feedback om