SUMMARIZECOLUMNS
Aplica-se a:Coluna calculada
Tabela calculada
Medida
Cálculo visual
Retorna uma tabela de resumo por um conjunto de grupos.
Sintaxe
SUMMARIZECOLUMNS( <groupBy_columnName> [, < groupBy_columnName >]…, [<filterTable>]…[, <name>, <expression>]…)
Parâmetros
Termo | Definição |
---|---|
groupBy_columnName | Uma referência de coluna totalmente qualificada (Tabela[Coluna]) para uma tabela de base para a qual os valores distintos são incluídos na tabela retornada. Cada coluna de groupBy_columnName é unida de forma cruzada (tabelas diferentes) ou de existência automática (na mesma tabela) com as colunas especificadas posteriores. |
filterTable | Uma expressão de tabela que é adicionada ao contexto de filtro de todas as colunas especificadas como argumentos de groupBy_columnName. Os valores presentes na tabela de filtro são usados para filtrar antes que a junção cruzada/existência automática seja executada. |
Nome | Uma cadeia de caracteres que representa o nome da coluna a ser usada para a expressão posterior especificada. |
expressão | Qualquer expressão DAX que retorna um único valor (não é uma tabela). |
Valor retornado
Uma tabela que inclui combinações de valores das colunas fornecidas, com base no agrupamento especificado. Somente linhas para as quais pelo menos uma das expressões fornecidas retorna um valor não em branco são incluídas na tabela retornada. Se todas as expressões forem avaliadas como em branco/nulo para uma linha, essa linha não será incluída na tabela retornada.
Comentários
Essa função não garante nenhuma ordem de classificação para os resultados.
Não é possível especificar uma coluna mais de uma vez no parâmetro groupBy_columnName. Por exemplo, a fórmula a seguir é inválida.
SUMMARIZECOLUMNS( Sales[StoreId], Sales[StoreId] )
Não há suporte para a função ser usada no modo DirectQuery quando usada em regras RLS (segurança em nível de linha) ou colunas calculadas.
Contexto de filtro
Considere a consulta a seguir:
SUMMARIZECOLUMNS (
'Sales Territory'[Category],
FILTER('Customer', 'Customer' [First Name] = "Alicia")
)
Nessa consulta, sem uma medida, as colunas groupBy não contêm nenhuma coluna da expressão FILTER (por exemplo, da tabela Customer). O filtro não é aplicado às colunas groupBy. As tabelas Sales Territory e Customer podem estar indiretamente relacionadas por meio da tabela de fatos Reseller sales. Como elas não estão diretamente relacionadas, a expressão de filtro não é operacional e as colunas groupBy não são afetadas.
No entanto, com esta consulta:
SUMMARIZECOLUMNS (
'Sales Territory'[Category], 'Customer' [Education],
FILTER('Customer', 'Customer'[First Name] = "Alicia")
)
As colunas groupBy contêm uma coluna que é afetada pelo filtro e esse filtro é aplicado aos resultados de groupBy.
Com IGNORE
A sintaxe IGNORE pode ser usada para modificar o comportamento da função SUMMARIZECOLUMNS omitindo expressões específicas da avaliação BLANK/NULL. As linhas para as quais todas as expressões que não usam IGNORE retornam BLANK/NULL serão excluídas, quer as expressões que usam IGNORE sejam avaliadas como BLANK/NULL ou não. IGNORE pode ser usada somente dentro de uma expressão SUMMARIZECOLUMNS.
Exemplo
SUMMARIZECOLUMNS(
Sales[CustomerId], "Total Qty",
IGNORE( SUM( Sales[Qty] ) ),
"BlankIfTotalQtyIsNot3", IF( SUM( Sales[Qty] )=3, 3 )
)
Isso acumula a coluna Sales[CustomerId], criando um subtotal para todos os clientes no agrupamento determinado. Sem IGNORE, o resultado é:
CustomerId | Total Qty | BlankIfTotalQtyIsNot3 |
---|---|---|
Um | 5 | |
B | 3 | 3 |
C | 3 | 3 |
Com IGNORE,
CustomerId | Total Qty | BlankIfTotalQtyIsNot3 |
---|---|---|
B | 3 | 3 |
C | 3 | 3 |
Toda a expressão ignorada,
SUMMARIZECOLUMNS(
Sales[CustomerId], "Blank",
IGNORE( BLANK() ), "BlankIfTotalQtyIsNot5",
IGNORE( IF( SUM( Sales[Qty] )=5, 5 ) )
)
Embora ambas as expressões retornem um valor em branco para algumas linhas, elas são incluídas, já que não há nenhuma expressão não ignorada que retorne em branco.
CustomerId | Em branco: | BlankIfTotalQtyIsNot5 |
---|---|---|
Um | 5 | |
B | ||
C |
Com NONVISUAL
A função NONVISUAL marca que um filtro de valor na função SUMMARIZECOLUMNS não afeta os valores da medida, mas aplica-se apenas às colunas groupBy. NONVISUAL pode ser usada somente dentro de uma expressão SUMMARIZECOLUMNS.
Exemplo
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]
Retorna o resultado em que [Vendas Totais Visuais] é o total em todos os anos:
DimDate[CalendarYear] | [Vendas] | [Vendas Totais Visuais] |
---|---|---|
2007 | 9.791.060,30 | 29.358.677,22 |
2008 | 9.770.899,74 | 29.358.677,22 |
Por outro lado, a mesma consulta sem a função NONVISUAL:
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]
Retorna o resultado em que [Vendas Totais Visuais] é o total nos dois anos selecionados:
DimDate[CalendarYear] | [Vendas] | [Vendas Totais Visuais] |
---|---|---|
2007 | 9.791.060,30 | 19.561.960,04 |
2008 | 9.770.899,74 | 19.561.960,04 |
Com ROLLUPADDISSUBTOTAL
A adição da sintaxe ROLLUPADDISSUBTOTAL modifica o comportamento da função SUMMARIZECOUMNS adicionando linhas de acúmulo/subtotal ao resultado com base nas colunas groupBy_columnName. ROLLUPADDISSUBTOTAL pode ser usada somente dentro de uma expressão SUMMARIZECOLUMNS.
Exemplo com apenas um subtotal
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]
Retorna a tabela a seguir,
Categoria | Subcategoria | IsCategorySubtotal | IsSubcategorySubtotal | Total Qty |
---|---|---|---|---|
True | verdadeiro | 60398 | ||
Acessórios | Falso | verdadeiro | 36092 | |
Acessórios | Racks de bicicleta | Falso | Falso | 328 |
Bikes | Mountain bikes | Falso | Falso | 4970 |
Clothing | Falso | verdadeiro | 9101 |
Exemplo com vários subtotais
SUMMARIZECOLUMNS (
Regions[State], ROLLUPADDISSUBTOTAL ( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL ( Sales[Date], "IsDateSubtotal"), "Total Qty", SUM( Sales[Qty] )
)
As vendas são agrupadas por estado, por cliente, por data, com subtotais para 1. Vendas por estado, por data 2. Vendas por estado, por cliente 3. Acumulado tanto no cliente quanto na data que levam às vendas por estado.
Retorna a tabela a seguir,
CustomerID | IsCustomerSubtotal | Estado | Total Qty | Data | IsDateSubtotal |
---|---|---|---|---|---|
Um | FALSE | WA | 5 | 10/7/2014 | |
B | FALSE | WA | 1 | 10/7/2014 | |
B | FALSE | WA | 2 | 11/7/2014 | |
C | FALSE | OU | 2 | 10/7/2014 | |
C | FALSE | OU | 1 | 11/7/2014 | |
TRUE | WA | 6 | 10/7/2014 | ||
TRUE | WA | 2 | 11/7/2014 | ||
TRUE | OU | 2 | 10/7/2014 | ||
TRUE | OU | 1 | 11/7/2014 | ||
Um | FALSE | WA | 5 | TRUE | |
B | FALSE | WA | 3 | TRUE | |
C | FALSE | OU | 3 | TRUE | |
TRUE | WA | 8 | TRUE | ||
TRUE | OU | 3 | TRUE |
Com ROLLUPGROUP
Assim como com a função SUMMARIZE, ROLLUPGROUP pode ser usado com ROLLUPADDISSUBTOTAL para especificar quais grupos/granularidades de resumo (subtotais) incluir, reduzindo o número de linhas de subtotal retornadas. ROLLUPGROUP pode ser usada apenas dentro de uma expressão SUMMARIZECOLUMNS ou SUMMARIZE.
Exemplo com vários subtotais
SUMMARIZECOLUMNS(
ROLLUPADDISSUBTOTAL( Sales[CustomerId], "IsCustomerSubtotal" ),
ROLLUPADDISSUBTOTAL(ROLLUPGROUP(Regions[City], Regions[State]), "IsCityStateSubtotal"),"Total Qty", SUM( Sales[Qty] )
)
Ainda agrupados por City e State, mas acumulados ao relatar um subtotal, retornando a tabela a seguir,
Estado | CustomerId | IsCustomerSubtotal | Total Qty | City | IsCityStateSubtotal |
---|---|---|---|---|---|
WA | Um | FALSE | 2 | Bellevue | FALSE |
WA | B | FALSE | 2 | Bellevue | FALSE |
WA | Um | FALSE | 3 | Redmond | FALSE |
WA | B | FALSE | 1 | Redmond | FALSE |
OU | C | FALSE | 3 | Portland | FALSE |
WA | TRUE | 4 | Bellevue | FALSE | |
WA | TRUE | 4 | Redmond | FALSE | |
OU | TRUE | 3 | Portland | FALSE | |
Um | FALSE | 5 | FALSO | ||
B | FALSE | 3 | TRUE | ||
C | FALSE | 3 | TRUE | ||
TRUE | 11 | TRUE |
Conteúdo relacionado
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de