SUMMARIZECOLUMNS
Koskee seuraavia:Laskettu sarake
Laskettu taulukko
Mittayksikkö
Visuaalinen laskenta -
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 arvot sisältyvät palautettuun taulukkoon. Jokainen groupBy_columnName sarake on ristiin yhdistetty (eri taulukot) tai automaattisesti muodostettu (sama taulukko), jossa on seuraavat määritetyt sarakkeet. |
filterTable |
Taulukkolauseke, joka lisätään kaikkien groupBy_columnName argumentteina määritettyjen sarakkeiden suodatinkontekstiin. Suodatintaulukossa olevia arvoja käytetään suodattamaan ennen ristiin yhdistämisen/automaattisen tunnistuksen suorittamista. |
name |
Merkkijono, joka edustaa seuraavassa määritetyssä lausekkeessa käytettävän sarakkeen nimeä. |
expression |
Mikä tahansa DAX lauseke, joka palauttaa yksittäisen arvon (ei taulukkoa). |
Palautusarvo
Taulukko, joka sisältää arvojen yhdistelmiä annetuista sarakkeista määritetyn ryhmittelyn perusteella. Vain rivit, joille ainakin yksi annetuista lausekkeista palauttaa muun kuin tyhjän arvon, sisällytetään palautettavaan taulukkoon. Jos kaikkien lausekkeiden arvoksi lasketaan riville BLANK/NULL, kyseistä riviä ei sisällytetä palautettavaan taulukkoon.
Huomautukset
Tämä funktio ei takaa tulosten lajittelujärjestystä.
Saraketta ei voi määrittää useammin kuin kerran groupBy_columnName-parametrissa. Esimerkiksi seuraava kaava on virheellinen.
SUMMARIZECOLUMNS( Sales[StoreId], Sales[StoreId] )
Tätä funktiota ei tueta DirectQuery-tilassa lasketuissa sarakkeissa tai rivitason suojauksen (RLS) säännöissä käytettäväksi.
Suodatinkonteksti
Kokeile seuraavaa kyselyä:
SUMMARIZECOLUMNS (
'Sales Territory'[Category],
FILTER('Customer', 'Customer' [First Name] = "Alicia")
)
Tässä kyselyssä groupBy-sarakkeet eivät ilman mittaria sisällä FILTER-lausekkeen sarakkeita (esimerkiksi Asiakas-taulukosta). Suodatinta ei käytetä groupBy-sarakkeissa. Myyntialue- ja Asiakas-taulukot voivat epäsuorasti liittyä toisiinsa Jälleenmyyjän myynti -faktataulukon kautta. Koska ne eivät liity suoraan toisiinsa, suodatinlauseke on no-op eikä groupBy-sarakkeisiin kohdistu vaikutusta.
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 suodatin vaikuttaa, ja kyseistä suodatinta käytetään groupBy-tuloksiin.
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 kaikki lausekkeet, jotka eivät käytä IGNORE palauttavat BLANK/NULL, jätetään pois riippumatta siitä, arvioivatko IGNORE käyttävät lausekkeet arvoksi BLANK/NULL vai ei. 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 kaikille annetun ryhmittelyn asiakkaille. 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 |
Koko lauseke sivuutettu,
SUMMARIZECOLUMNS(
Sales[CustomerId], "Blank",
IGNORE( BLANK() ), "BlankIfTotalQtyIsNot5",
IGNORE( IF( SUM( Sales[Qty] )=5, 5 ) )
)
Vaikka molemmat lausekkeet palauttavat tyhjän joillekin riveille, ne sisältyvät mukaan, koska ei ole määrittämättömiä lausekkeita, jotka palauttavat tyhjän.
CustomerId | Aihio | BlankIfTotalQtyIsNot5 |
---|---|---|
A | 5 | |
B | ||
N |
NONVISUAL kanssa
NONVISUAL-funktio merkitsee SUMMARIZECOLUMNS-funktiossa arvosuodattimen, joka ei vaikuta mittausarvoihin, 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 kaikkien vuosien 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ä koonti-/välisummarivejä groupBy_columnName-sarakkeisiin perustuvaan tulokseen. 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ä |
---|---|---|---|---|
Tosi | Tosi | 60398 | ||
Lisävarusteet | Väärä | Tosi | 36092 | |
Lisävarusteet | Pyöräntelineet | Väärä | Väärä | 328 |
Polkupyörät | Maastopyörät | Väärä | Väärä | 4970 |
Vaatteet | Väärä | Tosi | 9101 |
Esimerkki, jossa on useita välisummia
SUMMARIZECOLUMNS (
Regions[State], ROLLUPADDISSUBTOTAL ( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL ( Sales[Date], "IsDateSubtotal"), "Total Qty", SUM( Sales[Qty] )
)
Myynti ryhmiteltään osavaltion, asiakkaan, päivämäärän mukaan, välisummat 1:lle. Myynti osavaltion mukaan, päivämäärän mukaan 2. Myynti osavaltion mukaan, asiakkaan mukaan 3. Koottu sekä asiakkaalle että päivämäärälle, mikä johtaa osavaltiokohtaseen myyntiin.
Palauttaa seuraavan taulukon,
Asiakastunnus | IsCustomerSubtotal | Vaihe | Määrä yhteensä | Päivämäärä | 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 SUMMARIZECOLUMNS tai SUMMARIZE-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 ja 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 |
Contextual SummarizeColumns
Tausta
Helmikuuhun 2023 saakka SUMMARIZECOLUMNS tuki kontekstisiirtymän arviointia. Ennen kyseistä kuukautta julkaistuissa tuotteissa tämä rajoitus SUMMARIZECOLUMNS hyödyksi useimmissa mittareissa – ei ollut mahdollista kutsua toimenpidettä SUMMARIZECOLUMNS missään kontekstisiirtymätapauksessa, mukaan lukien muut SUMMARIZECOLUMNS lausekkeet.
Helmikuusta 2023 alkaen kontekstisiirtymää tuettiin muutamassa tilanteessa, mutta ei kaikissa olosuhteissa. Tuetut ja rajoitetut tapaukset ovat seuraavat:
SummarizeColumns-tyyppi | Ulkoinen suodatin, jossa on yksi sarake | Ulkoinen suodatin, jossa on useampi kuin yksi sarake | Ulkoiset Ryhmittelyperuste-sarakkeet |
---|---|---|---|
SummarizeColumns ja vain GroupBy | OK | OK | OK |
SummarizeColumns ja Suodattimet/Mittarit | OK | ERROR | ERROR |
Kesäkuusta 2024 alkaen otamme käyttöön tilannekohtaisen SummarizeColumns-funktion, joka mahdollistaa SummarizeColumns-funktion arvioinnin missä tahansa kontekstisiirtymässä. Mittarin SummarizeColumns-funktiota tuetaan nyt täysin:
SummarizeColumns-tyyppi | Ulkoinen suodatin, jossa on yksi sarake | Ulkoinen suodatin, jossa on useampi kuin yksi sarake | Ulkoiset Ryhmittelyperuste-sarakkeet |
---|---|---|---|
SummarizeColumns ja vain GroupBy | OK | OK | OK |
SummarizeColumns ja Suodattimet/Mittarit | OK | OK | OK |
Tämä päivitys sisältää kuitenkin myös muutoksia SummarizeColumns-funktion toimintaan, mikä voi muuttaa olemassa olevien lausekkeiden tuloksia:
Ulkoisten suodattimien SelfValue-semantiikka
Olemme ottamassa käyttöön semanttisen käsitteen nimeltä SelfValue, joka muuttaa sitä, miten ulkoisten taulukoiden suodattimet toimivat yhdessä SummarizeColumns-funktion GroupBy-sarakkeiden kanssa. Tämä muutos estää eri taulukon suodattimet vaikuttamaan Ryhmittelyperuste-sarakkeisiin, vaikka taulukot liittyvät toisiinsa suodatuskohtaisen suhteen 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ä TreatAs-suodatinta sovelletaan SummarizeColumns-sarakkeen GroupBy-toimintoon hyödyntäen suhdetta kohteiden 'Tuote'[Tuoteavain] ja 'Jälleenmyyjän myynti'[Tuoteavain] välillä. Näin ollen kyselyn tulokset sisältävät vain rivit, joissa 'Jälleenmyyjän myynti'[Tuoteavain] on 229. Kuitenkin päivityksen jälkeen SummarizeColumns-funktion GroupBy-sarakkeita ei enää suodateta ulkoisten taulukoiden sarakkeiden mukaan, vaikka niiden välillä olisi suhde. Tämän vuoksi edellä olevassa esimerkissä GroupBy-saraketta 'Jälleenmyyjän myynti'[Tuoteavain] ei suodateta Product'[ProductKey]-sarakkeen mukaan. Tämän seurauksena kysely sisältää rivejä, joissa 'Jälleenmyyjän myynti'[Tuoteavain] ei ole yhtä suuri kuin 229.
Jos haluat säilyttää aiemman toiminnan, voit kirjoittaa lausekkeen uudelleen käyttämällä Summarize-funktiota SummarizeColumns-sarakkeen 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öön ottama SelfValue-rajoitus ei vaikuta GroupBy-toimintoon.
Groupby-sarakkeiden rivien tarkistus kattaa täysin Treatas-sarakkeet
Ennen tätä päivitystä SummarizeColumns-funktiossa, jos kaikki tietyn taulukon GroupBy-sarakkeet kattoivat täysin yksittäisen Treatas-suodattimen 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ää kaikki Treatas-suodattimessa määritetyt rivit riippumatta siitä, ovatko ne kelvollisia vai eivät. Tulos olisi esimerkiksi yksirivinen taulukko ("Yhdysvallat", "Alberta"), vaikka tällaista riviä ei olisi [Maa] = "Yhdysvallat" ja [Osavaltio] = "Alberta" ollut geography-taulukossa.
Tämä ongelma oli tunnettu, ja päivitys on ratkonut sen. Päivityksen jälkeen tällaiset virheelliset rivit suodatetaan pois ja vain Kelvolliset rivit Ryhmittelyperuste-taulukosta palautetaan. Tämän vuoksi yllä olevan kyselyn tulos olisi tyhjä, koska ei ole kelvollisia rivejä, jotka vastaavat määritettyjä [Maa]- ja [Osavaltio]-arvoja Geography-taulukossa.
Estä yhdistettyjen Keepfilters/overriddefilters-suodattimien pitäminen samassa taulukossa tai klusterissa
Viimeisin päivitys on ottanut käyttöön tilapäisen rajoituksen, joka aiheuttaa virhesanoman, joka ilmoittaa:
"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ä virhe ilmenee, kun sekä normaalit suodattimet (jotka ohittavat olemassa olevat suodattimet) että KeepFilters-parametrilla määritetyt suodattimet 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 on kaksi suodatinta Geography-taulukossa: toinen keepFilters-määritetyllä suodattimella ja toinen ilman. Nämä suodattimet ovat päällekkäisiä eri sarakkeiden ulkoisten suodattimien kanssa. Tällä hetkellä tätä kokoonpanoa ei sallita, koska sisäisesti kaksi suodatinta on klusteroitu yhteen, eikä järjestelmä pysty määrittämään oikeaa suodattimen ohitustoimintaa klusterdulle suodattimelle yleisesti tällaisissa tapauksissa.
Huomaa, että tämä rajoitus on tilapäinen. Kehitämme aktiivisesti ratkaisuja tämän rajoituksen poistamiseksi tulevissa päivityksissä. Jos kohtaat tämän virheen, kehotamme säätämään SummarizeColumns-funktion suodattimia lisäämällä tai poistamalla KeepFilters-suodattimia tarpeen mukaan, jotta jokaisella taulukolla voidaan varmistaa yhtenäinen ohitustoiminta.