Share via


CALCULATETABLE

Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual

Avalia uma expressão de tabela em um contexto de filtro modificado.

Observação

Também há a função CALCULATE. Ela executa exatamente a mesma funcionalidade, exceto que modifica o contexto de filtro aplicado a uma expressão que retorna um valor escalar.

Sintaxe

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

Parâmetros

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

A expressão usada como o primeiro parâmetro deve ser uma tabela de modelo ou uma função que retorne uma tabela.

Os filtros podem ser:

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

Quando há vários filtros, eles são avaliados usando o operador lógico AND. Isso significa que todas as condições devem ser verdadeiras ao mesmo tempo.

Expressões de filtro booliano

Um filtro de expressão booliana é uma expressão que é avaliada como TRUE ou FALSE. Há várias regras que elas devem cumprir:

  • Elas podem referenciar somente uma coluna.
  • Elas não podem referenciar medidas.
  • Elas não podem usar uma função CALCULATE aninhada.

Da versão de setembro de 2021 do Power BI Desktop em diante, o seguinte também se aplica:

  • Elas não podem usar funções que examinam ou retornam uma tabela, a menos que sejam passadas como argumentos para funções de agregação.
  • Elas podem conter uma função de agregação que retorna um valor escalar.

Expressão 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 retorne um objeto de tabela. Você pode usar a função FILTER para aplicar condições de filtro complexas, incluindo aquelas que não podem ser definidas por uma expressão de filtro booliana.

Funções de modificador de filtro

As funções de modificador de filtro permitem que você faça mais do que simplesmente adicionar filtros. Elas fornecem controle adicional ao modificar o contexto do filtro.

Função Finalidade
REMOVEFILTERS Remover todos os filtros ou os filtros de uma ou mais colunas de uma tabela ou de todas as colunas de uma tabela.
ALL1, ALLEXCEPT, ALLNOBLANKROW Remover filtros de uma ou mais colunas ou de todas as colunas de uma tabela.
KEEPFILTERS Adicionar filtro sem remover filtros existentes nas mesmas colunas.
USERELATIONSHIP Envolver uma relação inativa entre as colunas relacionadas, caso em que a relação ativa se tornará inativa automaticamente.
CROSSFILTER Modificar a direção do filtro (de ambos para único ou de um para ambos) ou desabilitar uma relação.

1 A função ALL e suas variantes se comportam como modificadores de filtro e como funções que retornam objetos de tabela. Se houver suporte para a função REMOVEFILTERS na sua ferramenta, será melhor usá-la para remover filtros.

Retornar valor

Uma tabela de valores.

Comentários

  • Quando expressões de filtro são fornecidas, a função CALCULATETABLE modifica o contexto do filtro para avaliar a expressão. Para cada expressão de filtro, há 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, novos filtros serão adicionados 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.
  • 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.

Exemplo

O exemplo a seguir usa a função CALCULATETABLE para obter a soma de vendas pela Internet para 2006. Esse valor é usado posteriormente para calcular a taxa de vendas pela Internet em comparação a todas as vendas do ano de 2006.

A seguinte fórmula:

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

Isso resulta na seguinte tabela:

Rótulos de linha Internet SalesAmount_USD CalculateTable 2006 Internet Sales Razão de vendas pela Internet para 2006
2005 US$ 2.627.031,40 US$ 5.681.440,58 0,46
2006 US$ 5.681.440,58 US$ 5.681.440,58 1.00
2007 US$ 8.705.066,67 US$ 5.681.440,58 1,53
2008 US$ 9.041.288,80 US$ 5.681.440,58 1,59
Grande Total US$ 26.054.827,45 US$ 5.681.440,58 4.59