Megosztás a következőn keresztül:


SUMMARIZECOLUMNS

A következőre vonatkozik: Számított oszlop Számított tábla Mérték vizualizáció számítása

Egy összegző táblát ad vissza egy csoportcsoporton keresztül.

Syntax

SUMMARIZECOLUMNS( <groupBy_columnName> [, < groupBy_columnName >]…, [<filterTable>]…[, <name>, <expression>]…)  

Paraméterek

Időszak Definíció
groupBy_columnName Teljes körű oszlophivatkozás (Table[Column]) egy olyan alaptáblára, amelyhez a különböző értékek szerepelnek a visszaadott táblában. Minden groupBy_columnName oszlop keresztbe van kapcsolva (különböző táblák), vagy automatikusan létezik (ugyanaz a tábla) a következő megadott oszlopokkal.
filterTable Táblakifejezés, amely groupBy_columnName argumentumként megadott összes oszlop szűrőkörnyezetéhez hozzáadva. A szűrőtáblában található értékek szűrésre szolgálnak a keresztcsatlakozás/automatikus létezés végrehajtása előtt.
név A következő megadott kifejezéshez használni kívánt oszlopnevet képviselő sztring.
kifejezés Bármely DAX-kifejezés, amely egyetlen értéket ad vissza (nem táblázatot).

Visszaadott érték

Egy táblázat, amely a megadott oszlopokból származó értékek kombinációját tartalmazza a megadott csoportosítás alapján. A visszaadott táblában csak azok a sorok szerepelnek, amelyeknél a megadott kifejezések közül legalább egy nem üres értéket ad vissza. Ha egy sor összes kifejezése BLANK/NULL értékre van kiértékelve, az adott sor nem szerepel a visszaadott táblában.

Megjegyzések

  • Ez a függvény nem garantálja az eredmények rendezési sorrendjét.

  • Az oszlop nem adható meg többször a groupBy_columnName paraméterben. A következő képlet például érvénytelen.

    SUMMARIZECOLUMNS( Sales[StoreId], Sales[StoreId] )

  • Ez a függvény nem támogatott DirectQuery módban, ha számított oszlopokban vagy sorszintű biztonsági (RLS) szabályokban használják.

Szűrőkörnyezet

Fontolja meg a következő lekérdezést:

SUMMARIZECOLUMNS ( 
    'Sales Territory'[Category], 
    FILTER('Customer', 'Customer' [First Name] = "Alicia") 
)

Ebben a lekérdezésben mérték nélkül a groupBy oszlopok nem tartalmaznak a FILTER kifejezésből származó oszlopokat (például az Ügyfél táblából). A szűrő nincs alkalmazva a groupBy oszlopokra. A Sales Territory és a Customer táblák közvetetten kapcsolódhatnak a Reseller sales fact táblán keresztül. Mivel ezek nem kapcsolódnak közvetlenül, a szűrőkifejezés nem működik, és a groupBy oszlopokra nincs hatással.

Ezzel a lekérdezéssel azonban:

SUMMARIZECOLUMNS ( 
    'Sales Territory'[Category], 'Customer' [Education], 
    FILTER('Customer', 'Customer'[First Name] = "Alicia") 
)

A groupBy oszlopok olyan oszlopot tartalmaznak, amelyre hatással van a szűrő, és ezt a szűrőt alkalmazza a groupBy-eredményekre.

A MELLŐZÉS

Az IGNORE szintaxissal módosíthatja a SUMMARIZECOLUMNS függvény viselkedését úgy, hogy kihagy bizonyos kifejezéseket a BLANK/NULL kiértékelésből. Azok a sorok, amelyeknél az IGNORE függvényt nem használó összes kifejezés ÜRES/NULL értéket ad vissza, attól függetlenül ki lesz zárva, hogy az IGNORE függvényt használó kifejezések blank/NULL értéket adnak-e ki. AZ IGNORE csak SUMMARIZECOLUMNS kifejezésen belül használható.

Példa

SUMMARIZECOLUMNS( 
    Sales[CustomerId], "Total Qty", 
    IGNORE( SUM( Sales[Qty] ) ), 
    "BlankIfTotalQtyIsNot3", IF( SUM( Sales[Qty] )=3, 3 ) 
)

Ez összegezi a Sales[CustomerId] oszlopot, és létrehoz egy részösszeget az adott csoportosításban lévő összes ügyfél számára. Az IGNORE nélkül az eredmény a következő:

Vevőkód Teljes mennyiség BlankIfTotalQtyIsNot3
A 5
h 3 3
C 3 3

Az IGNORE,

Vevőkód Teljes mennyiség BlankIfTotalQtyIsNot3
h 3 3
C 3 3

Minden kifejezés figyelmen kívül hagyva,

SUMMARIZECOLUMNS( 
    Sales[CustomerId], "Blank", 
    IGNORE( BLANK() ), "BlankIfTotalQtyIsNot5", 
    IGNORE( IF( SUM( Sales[Qty] )=5, 5 ) ) 
)

Annak ellenére, hogy mindkét kifejezés üresen ad vissza néhány sort, a függvények bele vannak foglalva, mivel nincsenek olyan ki nem használt kifejezések, amelyek üresen térnek vissza.

Vevőkód Blank BlankIfTotalQtyIsNot5
A 5
h
C

NEMVISUAL

A NEMVISUAL függvény a SUMMARIZECOLUMNS függvényben egy értékszűrőt jelöl, amely nem befolyásolja a mértékértékeket, csak a groupBy oszlopokra vonatkozik. A NONVISUAL csak SUMMARIZECOLUMNS kifejezésben használható.

Példa

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]

Azt az eredményt adja vissza, amelyben a [Visual Total Sales] az összes év összesítése:

DimDate[CalendarYear] [Sales] [Visual Total Sales]
2007 9,791,060.30 29,358,677.22
2008 9,770,899.74 29,358,677.22

Ezzel szemben ugyanaz a lekérdezés a NEMVISUAL függvény nélkül :

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]

Azt az eredményt adja vissza, amelyben a [Visual Total Sales] a két kiválasztott év összesítése:

DimDate[CalendarYear] [Sales] [Visual Total Sales]
2007 9,791,060.30 19,561,960.04
2008 9,770,899.74 19,561,960.04

A ROLLUPADDISSUBTOTAL használatával

A ROLLUPADDISSUBTOTAL szintaxis hozzáadása módosítja a SUMMARIZECOLUMNS függvény viselkedését úgy, hogy összegző/részösszeg sorokat ad hozzá az eredményhez a groupBy_columnName oszlopok alapján. A ROLLUPADDISSUBTOTAL csak SUMMARIZECOLUMNS kifejezésben használható.

Példa egyetlen részösszeggel

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]

A következő táblázatot adja vissza:

Kategória Alkategória IsCategorySubtotal IsSubcategorySubtotal Teljes mennyiség
Igaz Igaz 60398
Tartozékok Hamis Igaz 36092
Tartozékok Kerékpártartók Hamis Hamis 328
Kerékpárok Hegyi kerékpárok Hamis Hamis 4970
Clothing Hamis Igaz 9101

Példa több részösszeggel

SUMMARIZECOLUMNS ( 
    Regions[State], ROLLUPADDISSUBTOTAL ( Sales[CustomerId], "IsCustomerSubtotal" ), 
    ROLLUPADDISSUBTOTAL ( Sales[Date], "IsDateSubtotal"), "Total Qty", SUM( Sales[Qty] ) 
)

Az értékesítések állam, ügyfél és dátum szerint csoportosítva, 1 részösszeggel. Értékesítés állapot szerint, 2. dátum szerint. Értékesítés állam szerint, 3. ügyfél szerint. Mind az ügyfélen, mind a dátumon fel van állítva, és állapot szerinti értékesítést eredményez.

A következő táblázatot adja vissza:

CustomerID (Ügyfél azonosítója) IsCustomerSubtotal Állapot Teljes mennyiség Dátum IsDateSubtotal
A HAMIS WA 5 7/10/2014
h HAMIS WA 0 7/10/2014
h HAMIS WA 2 7/11/2014
C HAMIS VAGY 2 7/10/2014
C HAMIS VAGY 0 7/11/2014
IGAZ WA 6 7/10/2014
IGAZ WA 2 7/11/2014
IGAZ VAGY 2 7/10/2014
IGAZ VAGY 0 7/11/2014
A HAMIS WA 5 IGAZ
h HAMIS WA 3 IGAZ
C HAMIS VAGY 3 IGAZ
IGAZ WA 8 IGAZ
IGAZ VAGY 3 IGAZ

A ROLLUPGROUP használatával

A SUMMARIZE függvényhez hasonlóan a ROLLUPGROUP és a ROLLUPADDISSUBTOTAL együttes használatával megadhatja, hogy mely összegző csoportok/részletességek (részösszegek) legyenek belefoglalva, csökkentve a visszaadott részösszegsorok számát. A ROLLUPGROUP csak SUMMARIZECOLUMNS vagy SUMMARIZE kifejezésben használható.

Példa több részösszeggel

SUMMARIZECOLUMNS( 
    ROLLUPADDISSUBTOTAL( Sales[CustomerId], "IsCustomerSubtotal" ), 
    ROLLUPADDISSUBTOTAL(ROLLUPGROUP(Regions[City], Regions[State]), "IsCityStateSubtotal"),"Total Qty", SUM( Sales[Qty] ) 
)

Továbbra is város és állam szerint csoportosítva, de a részösszeg jelentésekor egybegördítve a következő táblázatot adja vissza:

Állapot Vevőkód IsCustomerSubtotal Teljes mennyiség Város IsCityStateSubtotal
WA A HAMIS 2 Bellevue HAMIS
WA h HAMIS 2 Bellevue HAMIS
WA A HAMIS 3 Redmond HAMIS
WA h HAMIS 0 Redmond HAMIS
VAGY C HAMIS 3 Portland HAMIS
WA IGAZ 4 Bellevue HAMIS
WA IGAZ 4 Redmond HAMIS
VAGY IGAZ 3 Portland HAMIS
A HAMIS 5 HAMIS
h HAMIS 3 IGAZ
C HAMIS 3 IGAZ
IGAZ 11 IGAZ

ÖSSZEGEZ