Aracılığıyla paylaş


SUMMARIZECOLUMNS

Şunun için geçerlidir: Hesaplanan sütunHesaplanan tabloÖlçüGörseli hesaplaması

Bir grup kümesi üzerinde bir özet tablosu döndürür.

Sözdizimi

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

Parametreler

Süre Tanım
groupBy_columnName Döndürülen tabloya ayrı değerlerin eklendiği bir temel tabloya tam sütun başvurusu (Tablo[Sütun]). Her groupBy_columnName sütunu çapraz birleştirilir (farklı tablolar) veya sonraki belirtilen sütunlarla otomatik olarak var olur (aynı tablo).
filterTable groupBy_columnName bağımsız değişkenleri olarak belirtilen tüm sütunların filtre bağlamlarına eklenen tablo ifadesi. Filtre tablosunda bulunan değerler, çapraz birleştirme/otomatik varolma işlemi gerçekleştirilmeden önce filtrelemek için kullanılır.
Adı Belirtilen sonraki ifade için kullanılacak sütun adını temsil eden bir dize.
ifade Tek bir değer (tablo değil) döndüren herhangi bir DAX ifadesi.

Dönüş değeri

Belirtilen gruplandırma temelinde sağlanan sütunlardan değerlerin birleşimlerini içeren tablo. Yalnızca sağlanan ifadelerden en az birinin boş olmayan bir değer döndüreceği satırlar döndürülen tabloya eklenir. Tüm ifadeler bir satır için BLANK/NULL olarak değerlendirilirse, bu satır döndürülen tabloya dahil değildir.

Açıklamalar

  • Bu işlev, sonuçlar için herhangi bir sıralama düzenini garanti etmez.

  • groupBy_columnName parametresinde bir sütun birden çok kez belirtilemez. Örneğin, aşağıdaki formül geçersiz.

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

  • Bu işlev, hesaplanan sütunlarda veya satır düzeyi güvenlik (RLS) kurallarında kullanıldığında DirectQuery modunda kullanılmak üzere desteklenmez.

Filtre bağlamı

Aşağıdaki sorguyu göz önünde bulundurun:

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

Bu sorguda, ölçü olmadan groupBy sütunları FİlTRE ifadesinden herhangi bir sütun içermez (örneğin, Customer tablosundan). Filtre groupBy sütunlarına uygulanmaz. Satış Bölgesi ve Müşteri tabloları, Bayi satış olgu tablosu aracılığıyla dolaylı olarak ilişkili olabilir. Bunlar doğrudan ilişkili olmadığından, filtre ifadesi bir hayır işlemidir ve groupBy sütunları etkilenmez.

Ancak, bu sorguyla:

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

groupBy sütunları filtreden etkilenen bir sütun içerir ve bu filtre groupBy sonuçlarına uygulanır.

IGNORE ile

IGNORE söz dizimi, BLANK/NULL değerlendirmesinden belirli ifadeler çıkarılarak SUMMARIZECOLUMNS işlevinin davranışını değiştirmek için kullanılabilir. IGNORE kullanmayan tüm ifadelerin BLANK/NULL döndüreceği satırlar, IGNORE kullanan ifadelerin BLANK/NULL sonucunu verip vermediğinden bağımsız olarak dışlanır. IGNORE yalnızca SUMMARIZECOLUMNS ifadesinde kullanılabilir.

Örnek

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

Bu işlem Sales[CustomerId] sütununu toplar ve verilen gruplandırmadaki tüm müşteriler için bir alt toplam oluşturur. IGNORE olmadan sonuç şu şekildedir:

CustomerId Toplam Miktar BlankIfTotalQtyIsNot3
A 5
K 3 3
C 3 3

IGNORE ile

CustomerId Toplam Miktar BlankIfTotalQtyIsNot3
K 3 3
C 3 3

Yoksayılan tüm ifadeler,

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

Her iki ifade de bazı satırlar için boş döndürse de, boş döndüren tanımlanamayan ifadeler olmadığından bu ifadeler eklenir.

CustomerId Boş BlankIfTotalQtyIsNot5
A 5
K
C

NONVISUAL ile

NONVISUAL işlevi SUMMARIZECOLUMNS işlevindeki bir değer filtresini ölçü değerlerini etkilemez, yalnızca groupBy sütunlarına uygulanır olarak işaretler. NONVISUAL yalnızca SUMMARIZECOLUMNS ifadesinde kullanılabilir.

Örnek

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]

[Visual Total Sales] değerinin tüm yılların toplamı olduğu sonucu verir:

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

Buna karşılık, NONVISUAL işlevi olmayan aynı sorgu:

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]

[Visual Total Sales] öğesinin seçilen iki yıl içindeki toplam değeri olduğu sonucu verir:

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 ile

ROLLUPADDISSUBTOTAL söz diziminin eklenmesi, groupBy_columnName sütunlarını temel alarak sonucta toplama/alt toplam satırları ekleyerek SUMMARIZECOLUMNS işlevinin davranışını değiştirir. ROLLUPADDISSUBTOTAL yalnızca SUMMARIZECOLUMNS ifadesinde kullanılabilir.

Tek alt toplamlı örnek

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şağıdaki tabloyu döndürür,

Kategori Alt kategori IsCategorySubtotal IsSubcategorySubtotal Toplam Miktar
True True 60398
Aksesuarlar Yanlış Doğru 36092
Aksesuarlar Bisiklet Rafları False False 328
Bisikletler Dağ Bisikletleri False False 4970
Giysi Yanlış Doğru 9101

Birden çok alt toplam içeren örnek

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

Satışlar duruma göre, müşteriye göre, tarihe göre ve 1 için alt toplamlarla gruplandırılır. Eyalete göre satışlar, 2. tarihe göre. Eyalete Göre Satışlar, Müşteri 3. Hem müşteriye hem de tarihe göre eyalete göre satışa yol açan bir şekilde toplanmış.

Aşağıdaki tabloyu döndürür,

CustomerID IsCustomerSubtotal Durum Toplam Miktar Tarih IsDateSubtotal
A FALSE WA 5 10.07.2014
K FALSE WA 1 10.07.2014
K FALSE WA 2 7/11/2014
C FALSE VEYA 2 10.07.2014
C FALSE VEYA 1 7/11/2014
TRUE WA 6 10.07.2014
TRUE WA 2 7/11/2014
TRUE VEYA 2 10.07.2014
TRUE VEYA 1 7/11/2014
A FALSE WA 5 TRUE
K FALSE WA 3 TRUE
C FALSE VEYA 3 TRUE
TRUE WA 8 TRUE
TRUE VEYA 3 TRUE

ROLLUPGROUP ile

SUMMARIZE işlevinde olduğu gibi ROLLUPGROUP da ROLLUPADDISSUBTOTAL ile birlikte kullanılarak hangi özet gruplarının/taneciklerin (alt toplamlar) dahil edilmesi gerektiğini belirterek döndürülen alt toplam satırlarının sayısı azaltılabilir. ROLLUPGROUP yalnızca SUMMARIZECOLUMNS veya SUMMARIZE ifadesinde kullanılabilir.

Birden çok alt toplam içeren örnek

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

Yine City ve State'e göre gruplandırılır, ancak bir alt toplam bildirilirken bir araya getirildiğinde aşağıdaki tablo döndürülüyor:

Durum CustomerId IsCustomerSubtotal Toplam Miktar City IsCityStateSubtotal
WA A FALSE 2 Bellevue FALSE
WA K FALSE 2 Bellevue FALSE
WA A FALSE 3 Çankaya FALSE
WA K FALSE 1 Çankaya FALSE
VEYA C FALSE 3 Portland FALSE
WA TRUE 4 Bellevue FALSE
WA TRUE 4 Çankaya FALSE
VEYA TRUE 3 Portland FALSE
A FALSE 5 FALSE
K FALSE 3 TRUE
C FALSE 3 TRUE
TRUE 11 TRUE

ÖZETLE