SUMMARIZECOLUMNS
Koskee seuraavia:Laskettu sarakeLaskettu taulukkoMeasureVisuaalinen laskutoimitus
Palauttaa ryhmäjoukon yhteenvetotaulukon.
Syntaksi
SUMMARIZECOLUMNS( <groupBy_columnName> [, < groupBy_columnName >]…, [<filterTable>]…[, <name>, <expression>]…)
Parametrit
Termi | Määritelmä |
---|---|
groupBy_columnName |
Täydellinen sarakeviittaus (Taulukko[Sarake]) perustaulukkoon, jonka erilliset values sisältyvät palautettuun taulukkoon. Jokainen groupBy_columnName sarake on ristiin yhdistetty (eri taulukot) or automaattisesti muodostettu (sama taulukko) käyttäen seuraavia määritettyjä sarakkeita. |
filterTable |
Taulukkolauseke, joka lisätään groupBy_columnName-argumentteina määritettyjen all-sarakkeiden filter kontekstiin. filter-taulukossa olevia values käytetään filter ennen ristiin yhdistämisen/automaattisen tunnistamisen suorittamista. |
name |
Merkkijono, joka edustaa seuraavassa määritetyssä lausekkeessa käytettävän sarakkeen nimeä. |
expression |
Mikä tahansa DAX lauseke, joka palauttaa yksittäisen value (not taulukon). |
Palauta value
Taulukko, joka sisältää values yhdistelmiä annetuista sarakkeista määritetyn ryhmittelyn perusteella. Vain rivit, joille vähintään yksi annetuista lausekkeista palauttaa muun kuinblankvalue, sisältyvät palautettuun taulukkoon. If all lausekkeet evaluate rivin BLANK/NULL-arvoksi, kyseinen rivi not sisällytetä palautettuun taulukkoon.
Huomautukset
Tämä funktio not takaa tuloksille minkä tahansa lajittelujärjestyksen.
Saraketta ei voi määrittää useammin kuin kerran groupBy_columnName-parametrissa. Esimerkiksi seuraava kaava on virheellinen.
SUMMARIZECOLUMNS( Sales[StoreId], Sales[StoreId] )
Tätä funktiota not tueta DirectQuery-tilassa, kun sitä käytetään lasketuissa sarakkeissa or rivitason suojauksen (RLS) säännöissä.
Filter konteksti
Kokeile seuraavaa kyselyä:
SUMMARIZECOLUMNS (
'Sales Territory'[Category],
FILTER('Customer', 'Customer' [First Name] = "Alicia")
)
Tässä kyselyssä groupBy sarakkeet eivät measure sisältää notFILTER -lausekkeen sarakkeita (esimerkiksi Asiakas-taulukosta). filter otetaan not käyttöön groupBy-sarakkeissa. Asiakas-taulukoiden Myyntialue-and voidaan epäsuorasti related Jälleenmyyjän myynti fact -taulukon kautta. Koska niitä not suoraan related, filter-lauseke on no-op and vaikutus groupBy sara not kkeisiin.
Tätä kyselyä käyttämällä kuitenkin:
SUMMARIZECOLUMNS (
'Sales Territory'[Category], 'Customer' [Education],
FILTER('Customer', 'Customer'[First Name] = "Alicia")
)
groupBy sarakkeet sisältävät sarakkeen, johon filterandfilter vaikuttavat groupBy tuloksissa.
IGNORE kanssa
IGNORE-syntaksia voidaan käyttää SUMMARIZECOLUMNS-funktion käyttäytymisen muokkaamiseen jättämällä pois tiettyjä lausekkeita BLANK/NULL-laskelmasta. Rivit, joille all-lausekkeet, notIGNORE palauttavat BLANK/NULL, jätetään pois riippumatta siitä, käyttävätkö lausekkeet IGNOREevaluateBLANK/NULL-ornot. IGNORE voi käyttää vain SUMMARIZECOLUMNS-lausekkeessa.
Esimerkki
SUMMARIZECOLUMNS(
Sales[CustomerId], "Total Qty",
IGNORE( SUM( Sales[Qty] ) ),
"BlankIfTotalQtyIsNot3", IF( SUM( Sales[Qty] )=3, 3 )
)
Tämä kokoaa yhteen Sales[CustomerId]-sarakkeen ja luo välisumman annetun ryhmittelyn asiakkaiden all. Ilman IGNOREtulos on:
CustomerId | Määrä yhteensä | BlankIfTotalQtyIsNot3 |
---|---|---|
A | 5 | |
B | 3 | 3 |
N | 3 | 3 |
Kun IGNORE,
CustomerId | Määrä yhteensä | BlankIfTotalQtyIsNot3 |
---|---|---|
B | 3 | 3 |
N | 3 | 3 |
All lauseke sivuutettu,
SUMMARIZECOLUMNS(
Sales[CustomerId], "Blank",
IGNORE( BLANK() ), "BlankIfTotalQtyIsNot5",
IGNORE( IF( SUM( Sales[Qty] )=5, 5 ) )
)
Even vaikka molemmat lausekkeet palauttavat blank joillekin riveille, ne sisältyvät mukaan, koska ei ole määrittämättömiä lausekkeita, jotka palauttavat blank.
CustomerId | Blank | BlankIfTotalQtyIsNot5 |
---|---|---|
A | 5 | |
B | ||
N |
NONVISUAL kanssa
NONVISUAL-funktio merkitsee SUMMARIZECOLUMNS-funktiossa valuefilternot, joka vaikuttaa measurevalues, mutta koskee vain groupBy sarakkeita. NONVISUAL voi käyttää vain SUMMARIZECOLUMNS-lausekkeessa.
Esimerkki
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]
Palauttaa tuloksen, jossa [Visual Total Sales] on all vuoden kokonaissumma:
DimDate[CalendarYear] | [Sales] | [Visual Total Sales] |
---|---|---|
2007 | 9,791,060.30 | 29,358,677.22 |
2008 | 9,770,899.74 | 29,358,677.22 |
Sitä vastoin sama kysely
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]
Palauttaa tuloksen, jossa [Visual Total Sales] on valittujen kahden vuoden kokonaissumma:
DimDate[CalendarYear] | [Sales] | [Visual Total Sales] |
---|---|---|
2007 | 9,791,060.30 | 19,561,960.04 |
2008 | 9,770,899.74 | 19,561,960.04 |
ROLLUPADDISSUBTOTAL kanssa
ROLLUPADDISSUBTOTAL-syntaksin lisääminen muokkaa SUMMARIZECOLUMNS-funktion toimintaa lisäämällä groupBy_columnName-sarakkeisiin perustuvaan tulokseen rollup/välisummarivejä. ROLLUPADDISSUBTOTAL voi käyttää vain SUMMARIZECOLUMNS-lausekkeessa.
Esimerkki yksittäisellä välisummalla
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]
Palauttaa seuraavan taulukon,
Luokka | Alakategoria | IsCategorySubtotal | IsSubcategorySubtotal | Määrä yhteensä |
---|---|---|---|---|
True | True | 60398 | ||
Lisävarusteet | False | True | 36092 | |
Lisävarusteet | Pyöräntelineet | False | False | 328 |
Polkupyörät | Maastopyörät | False | False | 4970 |
Vaatteet | False | True | 9101 |
Esimerkki, jossa on useita välisummia
SUMMARIZECOLUMNS (
Regions[State], ROLLUPADDISSUBTOTAL ( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL ( Sales[Date], "IsDateSubtotal"), "Total Qty", SUM( Sales[Qty] )
)
Myynti ryhmitetään osavaltion, asiakkaan, datemukaan ja välisummat 1:lle. Myynti osavaltion mukaan date 2. Myynti osavaltion mukaan, asiakkaan mukaan 3. Koottu kummallekin asiakkaalle anddate mikä johtaa osavaltiomyyntiin.
Palauttaa seuraavan taulukon,
Asiakastunnus | IsCustomerSubtotal | Vaihe | Määrä yhteensä | Date | IsDateSubtotal |
---|---|---|---|---|---|
A | FALSE |
WA | 5 | 10.7.2014 | |
B | FALSE |
WA | 1 | 10.7.2014 | |
B | FALSE |
WA | 2 | 7/11/2014 | |
N | FALSE |
OR | 2 | 10.7.2014 | |
N | FALSE |
OR | 1 | 7/11/2014 | |
TRUE |
WA | 6 | 10.7.2014 | ||
TRUE |
WA | 2 | 7/11/2014 | ||
TRUE |
OR | 2 | 10.7.2014 | ||
TRUE |
OR | 1 | 7/11/2014 | ||
A | FALSE |
WA | 5 | TRUE |
|
B | FALSE |
WA | 3 | TRUE |
|
N | FALSE |
OR | 3 | TRUE |
|
TRUE |
WA | 8 | TRUE |
||
TRUE |
OR | 3 | TRUE |
ROLLUPGROUP kanssa
Kuten SUMMARIZE funktiota, ROLLUPGROUP voidaan käyttää yhdessä ROLLUPADDISSUBTOTAL kanssa sen määrittämiseen, mitkä yhteenvetoryhmät/askelvälit (välisummat) sisällytetään (palautettujen välisummarivien määrän vähentämiseksi). ROLLUPGROUP voi käyttää vain SUMMARIZECOLUMNSorSUMMARIZE-lausekkeessa.
Esimerkki, jossa on useita välisummia
SUMMARIZECOLUMNS(
ROLLUPADDISSUBTOTAL( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL(ROLLUPGROUP(Regions[City], Regions[State]), "IsCityStateSubtotal"),"Total Qty", SUM( Sales[Qty] )
)
Yhä ryhmitelty kaupungin and osavaltion mukaan, mutta koottu yhteen raportoitaessa välisumma palauttaa seuraavan taulukon:
Vaihe | CustomerId | IsCustomerSubtotal | Määrä yhteensä | City | IsCityStateSubtotal |
---|---|---|---|---|---|
WA | A | FALSE |
2 | Bellevue | FALSE |
WA | B | FALSE |
2 | Bellevue | FALSE |
WA | A | FALSE |
3 | Turku | FALSE |
WA | B | FALSE |
1 | Turku | FALSE |
OR | N | FALSE |
3 | Portland | FALSE |
WA | TRUE |
4 | Bellevue | FALSE |
|
WA | TRUE |
4 | Turku | FALSE |
|
OR | TRUE |
3 | Portland | FALSE |
|
A | FALSE |
5 | FALSE |
||
B | FALSE |
3 | TRUE |
||
N | FALSE |
3 | TRUE |
||
TRUE |
11 | TRUE |
Tilannekohtaiset SummarizeColumns
Tausta
Helmikuuhun 2023 asti SUMMARIZECOLUMNSnot tukenut arviointia kontekstisiirtymässä all. Tätä monthedeltävissä tuotteissa tämä rajoitus teki SUMMARIZECOLUMNSnot hyödyllinen useimmissa mittareissa – not oli mahdollista kutsua measureSUMMARIZECOLUMNS, jos kyseessä on kontekstisiirtymä, mukaan lukien muut SUMMARIZECOLUMNSstatements.
Helmikuusta 2023 alkaen kontekstisiirtymää tuettiin muutamassa tilanteessa, mutta sitä not ehdoissa all. Rajoitetut and tuetut tapaukset ovat seuraavat:
SummarizeColumns tyyppi | Ulkoiset Filter, joissa on yksi sarake | Ulkoiset Filter, joissa on useampi kuin yksi sarake | Ulkoiset GroupBy sarakkeet |
---|---|---|---|
SummarizeColumns vain GroupBy kanssa | OK | OK | OK |
SummarizeColumns Filters/mittarien kanssa | OK | ERROR | ERROR |
Kesäkuusta 2024 alkaen otamme käyttöön tilannekohtaisia SummarizeColumns, joiden avulla SummarizeColumns voidaan arvioida missä tahansa kontekstisiirtymässä. measureSummarizeColumns tuetaan now täysin:
SummarizeColumns tyyppi | Ulkoiset Filter, joissa on yksi sarake | Ulkoiset Filter, joissa on useampi kuin yksi sarake | Ulkoiset GroupBy sarakkeet |
---|---|---|---|
SummarizeColumns vain GroupBy kanssa | OK | OK | OK |
SummarizeColumns Filters/mittarien kanssa | OK | OK | OK |
Tämä päivitys sisältää kuitenkin myös muutoksia SummarizeColumnstoimintaan, mikä voi muuttaa olemassa olevien lausekkeiden tuloksia:
Ulkoisten filters SelfValue-semantiikka
Olemme ottamassa käyttöön semanttisen konseptin nimeltä SelfValue, joka muuttaa sitä, miten filters ulkoisista taulukoista toimivat yhdessä GroupBy sarakkeiden kanssa SummarizeColumns. Tämä muutos estää eri taulukosta filters, jotka vaikuttavat GroupBy sarakkeisiin, evenif taulukot relatedfiltersuhteen kautta. Tämän muutoksen vaikutusta havainnollistava esimerkki sisältää seuraavan lausekkeen:
CalculateTable(
SummarizeColumns(
'Reseller Sales'[ResellerKey],
'Reseller Sales'[ProductKey]
),
Treatas({(229)}, 'Product'[Product Key])
)
Ennen tätä päivitystä TreatAsfilter koskee SummarizeColumnsGroupBy toimintoa. Se hyödyntäisi suhdetta välillä 'Product'[Product Avain] and 'Jälleenmyyjän myynti'[Tuoteavain]. Näin ollen kyselyn tulokset sisältävät vain rivit, joissa 'Jälleenmyyjän myynti'[Tuoteavain] on 229. Päivityksen jälkeen SummarizeColumns sarakkeita GroupBy ei enää suodateta ulkoisten taulukoiden sarakkeilla, evenif niiden välillä on suhde. Yllä olevassa esimerkissä GroupBy sarake 'Jälleenmyyjän myynti'[Tuoteavain] suodatetaan notProduct'[Tuoteavain]-sarakkeen mukaan. Tämän seurauksena kysely sisältää rivejä, joissa 'Jälleenmyyjän myynti'[Tuoteavain] on not yhtä suuri kuin 229.
If haluat säilyttää previous toiminnan, voit kirjoittaa lausekkeen uudelleen Summarize:llä SummarizeColumns:n sijaan alla kuvatulla tavalla:
CalculateTable(
SUMMARIZE(
'Reseller Sales',
[ResellerKey],
[ProductKey]
),
Treatas({(229)}, 'Product'[Product Key])
)
Tämä uudelleenkirjoituslauseke säilyttää alkuperäisen semantiikan, jossa päivityksen käyttöönottama SelfValue-rajoitus not vaikuttaa GroupBy-toimintoon.
Treatas kattamien groupby sarakkeiden rivien tarkistus
Ennen tätä päivitystä SummarizeColumns-funktiossa ifallGroupBy tietyn taulukon sarakkeet katettiin täysin yksittäisellä Treatasfilter samasta taulukosta, kuten alla esitetään:
SummarizeColumns(
Geography[Country],
Geography[State],
Treatas(
{("United States", "Alberta")},
Geography[Country],
Geography[State]
)
)
Yllä olevan kyselyn tulos sisältäisi minkä tahansa Treatasfiltermääritetyn rivin riippumatta siitä, ovatko ne kelvollisia ornot. Tulos olisi esimerkiksi yksirivinen taulukko ("Yhdysvallat", "Alberta"), evenif ei olisi tällaista riviä, jossa [Maa] = "Yhdysvallat" and [Osavaltio] = "Alberta" oli olemassa "Geography"-taulukossa.
Tämän ongelman tiedettiin and päivityksessä on käsitelty. Päivityksen jälkeen tällaiset virheelliset rivit suodatetaan pois, and palautetaan vain kelvollisia rivejä GroupBy taulukosta. Tämän vuoksi yllä olevan kyselyn tulos olisi tyhjä, koska maantiedetaulukossa ei ole kelvollisia rivejä, jotka vastaavat määritettyjä [Maa]-and [Osavaltio]-values.
Estä yhdistettyjen Keepfilters/overriddefilters samassa taulukossa tai klusterissa
Äskettäinen päivitys on ottanut käyttöön tilapäisen rajoituksen, joka käynnistää error viestin, jossa ilmoitetaan:
"SummarizeColumns filters with keepfilters behavior and overridefilters behavior are mixed within one cluster, which is not allowed. Consider adding keepfilters() to all filters of summarizecolumns."
Tämä error ilmenee, kun molemmat normaalit filters (jotka korvaavat olemassa olevat filters) andfilters määritetyillä KeepFilters esiintyvät samassa taulukossa/klusterissa. Esimerkkejä:
Evaluate CalculateTable(
SummarizeColumns(
Product[Color],
KeepFilters(
TreatAs(
{( "Washington")}
, Geography[State]
)
),
TreatAs(
{("United States"), ("Canada")}
, Geography[Country]
)
)
,TreatAs({("Alberta")}, Geography[State])
,TreatAs({("Canada")}, Geography[Country])
)
Yllä olevassa lausekkeessa "Geography"-taulukossa on kaksi filters: toisessa on määritettynä KeepFiltersand yksi ilman. Nämä filters päällekkäisiä ulkoisten filters kanssa eri sarakkeissa. Tällä hetkellä tämä määritys not sallittu, koska sisäisesti kaksi filters on klusteroitu yhteen, and järjestelmä ei pysty määrittämään oikeaa filter klusteroitujen filter ohittavaa toimintaa tällaisissa tapauksissa.
Huomaa, että tämä rajoitus on tilapäinen. Kehitämme aktiivisesti ratkaisuja tämän rajoituksen poistamiseksi tulevissa päivityksissä. If kohtaat tämän error, kehotamme säätämään filtersSummarizeColumns sisällä lisäämällä or poistamalla KeepFilters tarpeen mukaan yhtenäisen ohituskäyttäytymisen varmistamiseksi kussakin taulukossa.