Função CALCULATE
Avalia uma expressão em um contexto que é modificado pelos filtros especificados.
Sintaxe
CALCULATE(<expression>,<filter1>,<filter2>…)
Parâmetros
Termo |
Definição |
---|---|
expression |
A expressão a ser avaliada. |
filter1,filter2,… |
(opcional) Uma lista separada por vírgulas de expressões booliana ou uma expressão de tabela que define um filtro. |
A expressão usada como o primeiro parâmetro é essencialmente igual a uma medida.
Estas restrições se aplicam a expressões Booleanas que são usadas como argumentos:
A expressão não pode referenciar uma medida.
A expressão não pode usar uma função CALCULATE aninhada.
A expressão não pode usar funções que examinem uma tabela ou retornem uma tabela, inclusive funções de agregação.
Entretanto, uma expressão Booleana pode usar qualquer função que procure um único valor, ou que calcule um valor escalar.
Valor de retorno
O valor que é o resultado da expressão.
Comentários
Se os dados foram filtrados, a função CALCULATE alterará o contexto no qual os dados são filtrados e avaliará a expressão no novo contexto especificado. Para cada coluna usada em um argumento de filtro, será removido qualquer filtro existente nessa coluna, e o filtro usado no argumento de filtro será aplicado.
Exemplo
Para calcular o índice de vendas do revendedor atual nas vendas de todos os revendedores, você adiciona à Tabela Dinâmica uma medida que calcula a soma das vendas para a célula atual (o numerador) e, em seguida, divide essa soma pelo total de vendas de todos os revendedores. Para garantir que o denominador permaneça o mesmo, independentemente de como a Tabela Dinâmica possa estar filtrando ou agrupando os dados, a parte da fórmula que representa o denominador deverá usar a função ALL para limpar quaisquer filtros e criar o total correto.
A tabela a seguir mostra os resultados quando a nova medida, All Reseller Sales Ratio, é criada com a fórmula mostrada na seção de código.
Para ver como isso funciona, adicione o campo CalendarYear à área Rótulos de Linha da Tabela Dinâmica e, em seguida, adicione o campo ProductCategoryName à área Rótulos de Coluna. Depois adicione a nova medida à área Valores da Tabela Dinâmica. Para exibir os números como percentuais, aplique a formatação de número percentual à área da Tabela Dinâmica que contém a nova medida, All Reseller Sales Ratio.
All Reseller Sales |
Rótulos de Coluna |
|
|
|
|
---|---|---|---|---|---|
Rótulos de Linha |
Acessórios |
Bikes |
Clothing |
Componentes |
Grand Total |
2005 |
0.02% |
9.10% |
0.04% |
0.75% |
9.91% |
2006 |
0.11% |
24.71% |
0.60% |
4.48% |
29.90% |
2007 |
0.36% |
31.71% |
1.07% |
6.79% |
39.93% |
2008 |
0.20% |
16.95% |
0.48% |
2.63% |
20.26% |
Grand Total |
0.70% |
82.47% |
2.18% |
14.65% |
100.00% |
=( SUM('ResellerSales_USD'[SalesAmount_USD]))
/CALCULATE( SUM('ResellerSales_USD'[SalesAmount_USD])
,ALL('ResellerSales_USD'))
A expressão CALCULATE no denominador permite que a expressão de soma inclua todas as linhas no cálculo. Isso substitui os filtros implícitos para CalendarYear e ProductCategoryName que existem para a parte do numerador da expressão.
Funções relacionadas
Enquanto a função CALCULATE requer como primeiro argumento uma expressão que retorna um único valor, a função CALCULATETABLE aceita uma tabela de valores.