CALCULATETABLE

Avalia uma expressão da tabela num contexto de filtro modificado.

Nota

Existe também a função CALCULATE. Tem exatamente a mesma funcionalidade, exceto o facto de modificar o contexto de filtro aplicado a uma expressão que devolve um valor escalar.

Sintaxe

CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])

Parâmetros

Termo Definição
expression A expressão da tabela a ser avaliada.
filter1, filter2,... (Adicional) Expressões booleanas ou expressões de tabela que definem filtros ou funções de modificador de filtro.

A expressão utilizada como o primeiro parâmetro tem de ser uma tabela de modelo ou uma função que devolva uma tabela.

Os filtros podem ser:

  • Expressões de filtro booleanas
  • Expressões de filtro de tabela
  • Funções de modificação de filtro

Quando existem múltiplos filtros, estes são avaliados com o operador lógico AND. Isto significa que todas as condições têm de ser verdadeiras (TRUE) ao mesmo tempo.

Expressões de filtro booleanas

Um filtro de expressão booleana é uma expressão que é avaliada como VERDADEIRA ou FALSA. Existem várias regras que têm de cumprir:

  • Podem fazer referência apenas a uma única coluna.
  • Não podem fazer referência a medidas.
  • Não podem utilizar uma função CALCULATE aninhada.

A partir do lançamento de setembro de 2021 de Power BI Desktop, aplicam-se ainda:

  • Não podem utilizar funções que digitalizam ou devolvem uma tabela a menos que sejam passadas como argumentos para funções de agregação.
  • Podem conter uma função de agregação que devolve um valor escalar.

Expressões de filtro de tabela

Um filtro de expressão de tabela aplica um objeto de tabela como um filtro. Pode ser uma referência a uma tabela de modelo, mas é mais provável que seja uma função que devolve um objeto de tabela. Pode utilizar a função FILTER para aplicar condições de filtro complexas, incluindo as que não podem ser definidas por uma expressão de filtro booleana.

Funções de modificador de filtro

As funções de modificador de filtros permitem-lhe fazer mais do que simplesmente adicionar filtros. Permitem-lhe ter mais controlo quando modifica o contexto de filtro.

Função Objetivo
REMOVEFILTERS Remove todos os filtros ou os filtros de uma ou mais colunas de uma tabela ou de todas as colunas de uma única tabela.
ALLEXCEPT,ALLNOBLANKROW Remove todos os filtros de uma ou mais colunas ou de todas as colunas de uma única tabela.
KEEPFILTERS Adiciona um filtro sem remover filtros existentes nas mesmas colunas.
USERELATIONSHIP Inicia uma relação inativa entre as colunas relacionadas. Neste caso, a relação ativa ficará automaticamente inativa.
CROSSFILTER Modifica a direção do filtro (de ambos para um ou de um para ambos) ou desativa uma relação.

1 A função ALL e as respetivas variantes funcionam como modificadores de filtro e como funções que devolvem objetos de tabela. Se a sua ferramenta suportar a função REMOVEFILTERS, é preferível utilizá-la para remover filtros.

Valor devolvido

Uma tabela de valores.

Observações

  • Quando são fornecidas expressões de filtro, a função CALCULATETABLE modifica o contexto de filtro para avaliar a expressão. Para cada expressão de filtro existem dois resultados padrão possíveis quando a expressão de filtro não é encapsulada na função KEEPFILTERS:

    • Se as colunas (ou tabelas) não estiverem no contexto de filtro, serão adicionados novos filtros ao contexto de filtro para avaliar a expressão.
    • Se as colunas (ou tabelas) já estiverem no contexto de filtro, os filtros existentes serão substituídos pelos novos filtros para avaliar a expressão CALCULATETABLE.
  • Esta função não é suportada para ser utilizada no modo DirectQuery quando é utilizada em colunas calculadas ou regras de segurança ao nível d alinha (RLS).

Exemplo

O seguinte exemplo utiliza a função CALCULATETABLE para obter a soma de vendas pela Internet para 2006. Este valor é utilizado posteriormente para calcular a proporção de vendas pela Internet em comparação com todas as vendas do ano 2006.

A seguinte fórmula:

= SUMX(
    CALCULATETABLE(
        'InternetSales_USD',
        'DateTime'[CalendarYear] = 2006
    ),
    [SalesAmount_USD]
)  

Resulta na seguinte tabela:

Row Labels Internet SalesAmount_USD CalculateTable Vendas pela Internet 2006 Proporção Vendas pela Internet para 2006
2005 $2,627,031.40 $5,681,440.58 0.46
2006 $5,681,440.58 $5,681,440.58 1,00
2007 $8,705,066.67 $5,681,440.58 1.53
2008 $9,041,288.80 $5,681,440.58 1.59
Total Geral $26,054,827.45 $5,681,440.58 4.59

Ver também