Jaa


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 ilman funktion:

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.

SUMMARIZE