curso
DAX SUMMARIZE(): Um guia para agrupar e resumir dados
Não tenha dificuldades com grandes conjuntos de dados. Domine a arte de agrupar e agregar dados usando a função DAX SUMMARIZE()
, que permite que você descubra padrões ocultos e tome decisões melhores. Com o DAX SUMMARIZE()
, você pode criar um minirrelatório dentro do seu conjunto de dados maior e escolher quais informações agrupar e quais números somar. É extremamente, extremamente útil.
Continue lendo e eu o ajudarei a entender o DAX SUMMARIZE()
em detalhes para que você possa usá-lo de forma eficaz em vários cenários. ISe você for novato em DAX e quiser mais recursos, confira também nosso Tutorial de DAX do Power BI para iniciantes para ter uma visão mais geral. Você também pode fazer nosso curso Introdução ao DAX no Power BI para obter um treinamento real; o curso inclui técnicas básicas, mas também mais avançadas, portanto, é bom para profissionais de todos os níveis.
O que é a função DAX SUMMARIZE()?
A função DAX SUMMARIZE()
pega seus dados e os agrupa com base nas colunas que você escolher. Em seguida, ele calcula os totais ou outros resumos para cada grupo.
Por exemplo, suponha que você tenha uma grande lista de dados de vendas com informações sobre produtos, regiões e valores de vendas. Aqui, você pode usar o site SUMMARIZE()
para agrupar todos esses dados por produto ou região e ver o total de vendas de cada grupo.
Você encontrará o DAX em várias ferramentas da Microsoft, como:
- Power BI (é muito popular para análise de negócios)
- Excel, especificamente em Power Pivot
- Serviços de análise do SQL Server (SSAS)
Depois de entender SUMMARIZE()
, você poderá organizar seus dados de forma eficiente, criando relatórios melhores e aprofundando-se nos dados para obter insights valiosos. Portanto, da próxima vez que você estiver trabalhando com um grande conjunto de dados e precisar entendê-lo rapidamente, use a função SUMMARIZE()
.
Domine o Power BI do zero
DAX SUMMARIZE() e agrupamento de dados
Veja como a função SUMMARIZE()
cria tabelas de resumo com base em colunas e agregações especificadas:
SUMMARIZE (<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, <name>, <expression>]…)
Na sintaxe acima:
-
table
é a tabela de origem de seus dados. -
groupBy_columnName
é a(s) coluna(s) pela(s) qual(is) você deseja agrupar. -
name
é o nome da sua nova coluna calculada. -
expression
é o cálculo que você deseja executar.
Você pode usar o SUMMARIZE()
com qualquer tabela ou coluna em seu conjunto de dados, o que o torna muito versátil.
Agrupamento básico
Vamos dar uma olhada em um exemplo simples de agrupamento básico com SUMMARIZE()
.
Primeiro, importe o conjunto de dados para o Power BI. Para fazer isso, acesse aguia Home > Get Data. Selecione a opção correspondente ao arquivo salvo no menu suspenso e carregue-o. Neste exemplo, tenho um conjunto de dados com colunas para Year, Product e SalesAmount. Agora vou importar isso para o Power BI.
Uma tabela chamada vendas. Imagem do autor.
Depois que os dados forem importados, vá para a guiaModeling > New table (Nova tabela). Em seguida, insira a seguinte fórmula para agrupar por Ano e agregar o Total de vendas.
SummaryTable =
SUMMARIZE(
sales,
sales[Year],
"Total Sales", SUM(sales[SalesAmount])
)
Barra de fórmula. Imagem do autor.
Nessa fórmula:
-
SummarizedTable
cria uma nova tabela. -
SUMMARIZE(
começa a agrupar e resumir os dados. -
SalesData,
é a tabela de origem. -
SalesData[Year],
grupos por Ano coluna. -
"Total Sales", SUM(SalesData[SalesAmount])
cria uma nova coluna chamada Total de vendas que soma SalesAmount para cada ano.
Resultados resumidos. Imagem do autor.
Aqui, a função SUMMARIZE()
cria uma tabela de resumo agrupando os dados por Ano e calcula o Total Sales (Vendas totais) somando o SalesAmount para cada ano.
Agrupamento múltiplo
SUMMARIZE()
também pode lidar com agrupamentos mais complexos. Vamos entender isso com um exemplo. Aqui, , tenho um conjunto de dados com colunas para Year, Product, Region e SalesAmount.
Uma tabela chamada sales_data. Imagem do autor.
Aqui, estou agrupando por Ano e Região para calcular o Total Sales (Vendas totais) para cada combinação.
SummarizedTable =
SUMMARIZE(
sales_data,
sales_data[Year],
sales_data[Region],
"Total Sales", SUM(sales_data[SalesAmount])
)
Nessa fórmula:
-
sales_data
é a tabela em que seus dados estão armazenados. -
sales_data[Year]
é a primeira coluna a ser agrupada por Ano. -
sales_data[Region]
é a segunda coluna a ser agrupada por Região. -
"Total Sales"
é o nome da coluna personalizada para a soma das vendas. -
SUM(SalesData[SalesAmount])
soma as vendas de cada grupo.
Resumiu várias colunas. Imagem do autor.
Aqui, o agrupamento múltiplo nos ajudou a visualizar as tendências de vendas por região e ano. As regiões Norte e Leste apresentam crescimento de 2021 a 2023. O Sul teve vendas altas em 2022, enquanto o Oeste só tem dados para 2022-2023 .
Técnicas avançadas com DAX SUMMARIZE()
Embora o SUMMARIZE()
seja útil, você pode combiná-lo com outras funções DAX para experimentar recursos de análise de dados ainda mais sofisticados. Então, vamos explorar alguns exemplos para ver como as técnicas avançadas podem aproveitar o SUMMARIZE()
para agregações e resumos complexos.
Usando SUMMARIZE() com ROLLUP()
O recurso ROLLUP()
em SUMMARIZE()
adiciona linhas de subtotal às tabelas de resumo para mostrar subtotais em diferentes níveis de agrupamento e fornecer resumos hierárquicos mais detalhados. Se você trabalha na área financeira ou em qualquer função de análise relevante, isso será particularmente útil para realizar agregações em vários níveis.
-
Adicione a palavra-chave
ROLLUP()
após as colunas de agrupamento emSUMMARIZE()
. -
Especifique quais colunas devem ser incluídas no cálculo do
ROLLUP()
.
SUMMARIZE(<table>, <groupBy_columnName>[, <groupBy_columnName>]…[, ROLLUP(<groupBy_columnName>[,< groupBy_columnName>…])][, <name>, <expression>]…)
Por exemplo, esse conjunto de dados mostra as vendas e a quantidade de cada produto em uma determinada região. Agora, preciso encontrar o resumo de vendas em Region e Product, com subtotais e totais.
Uma tabela chamada sales_rollup. Imagem do autor.
Para isso, uso a seguinte fórmula:
SalesWithRollup =
SUMMARIZE(
sales_rollup,
ROLLUP(sales_rollup[Region], sales_rollup[Product]),
"Total Sales", SUM(sales_rollup[Sales]),
"Total Quantity", SUM(sales_rollup[Quantity])
)
Usando a função ROLLUP(). Imagem do autor.
Você pode ver - aqui a função SUMMARIZE()
agrupa os dados de vendas por Região e Produto para calcular Total de vendas e Quantidade total. ROLLUP()
adiciona linhas de subtotal e total geral para fornecer um resumo hierárquico do desempenho de vendas em diferentes níveis de detalhes.
Combinando SUMMARIZE() com ADDCOLUMNS()
Você também pode estender o site SUMMARIZE()
com ADDCOLUMNS()
para incluir colunas com cálculos personalizados nos dados agrupados. Isso pode ser útil se você quiser adicionar medidas ou cálculos complexos à sua tabela de resumo.
Por exemplo, eu uso o mesmo conjunto de dados e aplico a seguinte fórmula para adicionar uma nova coluna desta vez:
SalesWithAddColumns =
ADDCOLUMNS(
SUMMARIZE(
sales_rollup,
sales_rollup[Region],
sales_rollup[Product],
"Total Sales", SUM(sales_rollup[Sales]),
"Total Quantity", SUM(sales_rollup[Quantity])
),
"Average Sales per Unit",
DIVIDE(SUM(sales_rollup[Sales]), SUM(sales_rollup[Quantity]), 0)
)
Combinação de SUMMARIZE() e ADDCOLUMNS(). Imagem do autor.
Aqui, a função SUMMARIZE()
agrupa as vendas por Região e Produto para calcular Total de vendas e Quantidade total. ADDCOLUMNS()
calcula, então, as Vendas médias por unidade dividindo o total de vendas pela quantidade total de cada grupo.
Problemas comuns de DAX e como resolvê-los
Ao usar o site SUMMARIZE()
, você pode encontrar alguns problemas. Mas não se preocupe, todos nós já passamos por isso. Vou mostrar a você alguns desafios comuns e como lidar com eles.
Evitar resultados ambíguos
Às vezes, o site SUMMARIZE()
pode fornecer a você resultados que não fazem muito sentido. Isso geralmente acontece quando o modelo de dados ou os relacionamentos não estão claros. Veja como você pode evitar isso:
-
Verifique novamente seu modelo de dados: Verifique se todas as mesas estão conectadas corretamente.
-
Use nomes de colunas claros: Evite nomes duplicados em tabelas diferentes.
-
Especifique os nomes das tabelas: Ao se referir a colunas, inclua o nome da tabela (como
Orders[OrderDate]
) para evitar confusão.
Considerações sobre o desempenho
Embora o SUMMARIZE()
seja uma função útil, ele pode consumir muitos recursos e tornar as coisas mais lentas ao processar grandes conjuntos de dados. Isso significa que seus relatórios podem demorar um pouco mais para serem atualizados, especialmente se você estiver usando a função em medidas complexas ou com muitas colunas agrupadas.
Aqui estão algumas dicas para que você mantenha suas consultas rápidas:
-
Considere as colunas calculadas: Para resumos usados com frequência, crie colunas calculadas em vez de usar
SUMMARIZE()
todas as vezes. -
Remova colunas desnecessárias: Elimine colunas irrelevantes para sua análise, como chaves primárias ou colunas que podem ser calculadas a partir de outras.
-
Use filtros: Use DAX
SUMMARIZE()
comFilter()
antes de resumir para reduzir a quantidade de dados processados.
Alternativas DAX para SUMMARIZE()
Embora o SUMMARIZE()
seja uma função útil, às vezes outras ferramentas podem fazer o trabalho melhor. Vamos examinar algumas alternativas e quando você pode querer usá-las.
SUMMARIZECOLUMNS()
SUMMARIZECOLUMNS()
é outra função DAX que facilita a criação de tabelas de resumo quando você trabalha com dados grandes ou situações complicadas. É semelhante ao SUMMARIZE()
, mas com algumas diferenças.
-
Você pode adicionar filtros diretamente ao site
SUMMARIZECOLUMNS()
, o que o torna mais rápido. -
Com o site
SUMMARIZECOLUMNS()
, você pode incluir medidas diretamente no seu resultado. Não há necessidade de funções extras, comoADDCOLUMNS()
. -
SUMMARIZECOLUMNS()
lida com linhas em branco automaticamente, para que você não tenha que se preocupar com elas.
SUMMARIZECOLUMNS(
<groupBy_columnName> [, <groubBy_columnName>] …, [<filterTable>] … [, <name>, <expression>] …
)
Por exemplo, tenho um conjunto de dados e quero resumir os salários dos funcionários por região e departamento e, ao mesmo tempo, filtrar os funcionários com o primeiro nome Raven. Usarei a função SUMMARIZECOLUMNS()
para calcular o salário total da Raven em diferentes regiões e departamentos.
Uma tabela chamada employee_data. Imagem do autor.
Para isso, uso a seguinte fórmula:
SalarySummary =
SUMMARIZECOLUMNS(
employee_data[Name],
employee_data[Region],
employee_data[Department],
FILTER(employee_data, employee_data[Name] = "Raven"),
"Total Salary", SUM(employee_data[Salary])
)
Na fórmula acima:
-
SalarySummary
é o nome dado à tabela calculada que está sendo criada. -
SUMMARIZECOLUMNS(...)
cria uma tabela de resumo com base nas colunas e cálculos especificados. -
employee_data[Name], employee_data[Region], employee_data[Department]
são as colunas pelas quais os dados serão agrupados. -
FILTER(employee_data, employee_data[Name] = "Raven")
restringe os resultados para incluir apenas as linhas em que o Nome é Raven. -
"Total Salary", SUM(employee_data[Salary])
cria uma coluna calculada no resultado. -
SUM(employee_data[Salary])
calcula a soma de todos os valores de Salário para cada grupo.
Use SUMMARIZECOLUMNS para resumir os resultados. Imagem do autor.
Você pode ver os resultados - a função SUMMARIZECOLUMNS()
filtra o conjunto de dados e calcula os totais de salário da Raven em diferentes locais e departamentos.
GROUPBY()
GROUPBY()
é outra função que às vezes pode substituir SUMMARIZE()
quando você precisa apenas agrupar dados e realizar cálculos nesses grupos. Ele pode ser mais eficiente do que o site SUMMARIZE()
para operações simples de agrupamento.
Enquanto o SUMMARIZE()
pode funcionar em tabelas relacionadas, o GROUPBY()
se concentra no agrupamento e na agregação em uma única tabela, o que melhora o desempenho em determinados cenários.
Vamos ver um exemplo. Preciso criar um conjunto de dados de inventário para rastrear itens, categorias, unidades vendidas e preços unitários e, em seguida, agrupar os dados por categoria para calcular a receita total de cada uma.
Tabela de inventário. Imagem do autor.
Para isso, uso a seguinte fórmula:
SummaryGroupBY =
GROUPBY(
Inventory,
Inventory[Category],
"Total Revenue",
SUMX(
CURRENTGROUP(),
Inventory[Units Sold] * Inventory[Unit Price]
)
)
Na fórmula acima:
-
GROUPBY()
agrupa os dados por Categoria. -
CURRENTGROUP()
refere-se a cada grupo de categoria (por exemplo, eletrônicos, móveis ou eletrodomésticos). -
SUMX()
calcula a receita total de cada grupo multiplicando Unidades vendidas com o Preço unitário.
Usando GROUPBY para agrupar os dados. Imagem do autor.
Você pode ver que a função GROUPBY()
calcula facilmente o Receita total multiplicando Unidades vendidas por preço unitário para cada item da categoria e resumindo essas receitas individuais.
Considerações finais sobre DAX SUMMARIZE()
Agora você sabe como a função SUMMARIZE()
no DAX pode ajudá-lo a agrupar e analisar dados no Power BI, no Excel e em outras ferramentas. Desde o agrupamento básico até técnicas avançadas como ROLLUP()
e ADDCOLUMNS()
, SUMMARIZE()
ajuda você a criar resumos detalhados.
Como a prática leva à perfeição, experimente essas técnicas com seus próprios dados para ver como elas podem ajudar você a descobrir insights úteis. Se você quiser aprimorar ainda mais suas habilidades em DAX, inscreva-se em nossa Introdução ao DAX no Power BI para se tornar um verdadeiro usuário avançado.
Torne-se um analista de dados do Power BI
Domine a ferramenta de business intelligence mais popular do mundo.
Sou um estrategista de conteúdo que adora simplificar tópicos complexos. Ajudei empresas como Splunk, Hackernoon e Tiiny Host a criar conteúdo envolvente e informativo para seus públicos.
Perguntas frequentes sobre DAX Summarize()
SUMMARIZE() diferencia maiúsculas de minúsculas?
Em geral, o DAX não diferencia maiúsculas de minúsculas, de modo que os nomes de coluna usados em SUMMARIZE()
não precisam corresponder às maiúsculas e minúsculas dos dados originais.
Quais são os erros comuns ao usar SUMMARIZE()?
Os erros comuns incluem erros de sintaxe, nomes de colunas inexistentes e problemas de desempenho com grandes conjuntos de dados. Para evitar esses problemas, sempre verifique novamente os argumentos da função e seu modelo de dados.
Como SUMMARIZE() e SUMMARIZECOLUMNS() diferem em termos de contexto?
SUMMARIZE()
retém os contextos de linha e filtro para agregações, enquanto o SUMMARIZECOLUMNS()
tem apenas um contexto de filtro.
Aprenda a usar o PowerBI com o DataCamp
curso
Intermediate DAX in Power BI
curso
DAX Functions in Power BI
tutorial
Como usar as funções SUMX do Power BI
tutorial
Tutorial do Power BI Calculate
tutorial
Gráficos de colunas agrupadas no Excel: Como criá-los e personalizá-los
tutorial
Criando e personalizando tabelas dinâmicas no Power BI
tutorial