CALCULATETABLECALCULATETABLE

Avalia uma expressão de tabela em um contexto de filtro modificado.Evaluates a table expression in a modified filter context.

Observação

Também há a função CALCULATE.There's also the CALCULATE function. Ela executa exatamente a mesma funcionalidade, exceto que modifica o contexto de filtro aplicado a uma expressão que retorna um valor escalar.It performs exactly the same functionality, except it modifies the filter context applied to an expression that returns a scalar value.

SintaxeSyntax

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

ParâmetrosParameters

TermoTerm DefiniçãoDefinition
expressãoexpression A expressão de tabela a ser avaliada.The table expression to be evaluated.
filter1, filter2,…filter1, filter2,… (Opcional) Expressões boolianas ou expressões de tabela que definem filtros ou funções de modificador de filtro.(Optional) Boolean expressions or table expressions that defines filters, or filter modifier functions.

A expressão usada como o primeiro parâmetro deve ser uma tabela de modelo ou uma função que retorne uma tabela.The expression used as the first parameter must be a model table or a function that returns a table.

Os filtros podem ser:Filters can be:

  • Expressões de filtro boolianoBoolean filter expressions
  • Expressões de filtro de tabelaTable filter expressions
  • Funções de modificação de filtroFilter modification functions

Quando há vários filtros, eles são avaliados usando o operador lógico AND.When there are multiple filters, they're evaluated by using the AND logical operator. Isso significa que todas as condições devem ser verdadeiras ao mesmo tempo.That means all conditions must be TRUE at the same time.

Expressões de filtro boolianoBoolean filter expressions

Um filtro de expressão booliana é uma expressão que é avaliada como TRUE ou FALSE.A Boolean expression filter is an expression that evaluates to TRUE or FALSE. Há várias regras que elas devem cumprir:There are several rules that they must abide by:

  • Elas podem referenciar somente uma coluna.They can reference only a single column.
  • Elas não podem referenciar medidas.They cannot reference measures.
  • Elas não podem usar uma função CALCULATE aninhada.They cannot use a nested CALCULATE function.
  • Elas não podem usar funções que examinam ou retornam uma tabela, incluindo funções de agregação.They cannot use functions that scan or return a table, including aggregation functions.

Expressão de filtro de tabelaTable filter expression

Um filtro de expressão de tabela aplica um objeto de tabela como um filtro.A table expression filter applies a table object as a filter. 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.It could be a reference to a model table, but more likely it's a function that returns a table object. 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.You can use the FILTER function to apply complex filter conditions, including those that cannot be defined by a Boolean filter expression.

Funções de modificador de filtroFilter modifier functions

As funções de modificação de filtro permitem que você faça mais do que simplesmente adicionar filtros.Filter modification functions allow you to do more than simply add filters. Elas fornecem controle adicional ao modificar o contexto do filtro.They provide you with additional control when modifying filter context.

FunçãoFunction FinalidadePurpose
REMOVEFILTERSREMOVEFILTERS Remover todos os filtros ou os filtros de uma ou mais colunas de uma tabela ou de todas as colunas de uma tabela.Remove all filters, or filters from one or more columns of a table, or from all columns of a single table.
ALL 1, ALLEXCEPT, ALLNOBLANKROWALL 1, ALLEXCEPT, ALLNOBLANKROW Remover filtros de uma ou mais colunas ou de todas as colunas de uma tabela.Remove filters from one or more columns, or from all columns of a single table.
KEEPFILTERSKEEPFILTERS Adicionar filtro sem remover filtros existentes nas mesmas colunas.Add filter without removing existing filters on the same columns.
USERELATIONSHIPUSERELATIONSHIP Envolver uma relação inativa entre as colunas relacionadas, caso em que a relação ativa se tornará inativa automaticamente.Engage an inactive relationship between related columns, in which case the active relationship will automatically become inactive.
CROSSFILTERCROSSFILTER Modificar a direção do filtro (de ambos para único ou de um para ambos) ou desabilitar uma relação.Modify filter direction (from both to single, or from single to both) or disable a relationship.

1 A função ALL e suas variantes se comportam como modificadores de filtro e como funções que retornam objetos de tabela.1 The ALL function and its variants behave as both filter modifiers and as functions that return table objects. Se houver suporte para a função REMOVEFILTERS na sua ferramenta, será melhor usá-la para remover filtros.If the REMOVEFILTERS function is supported by your tool, it's better to use it to remove filters.

Retornar valorReturn value

Uma tabela de valores.A table of values.

ComentáriosRemarks

  • Quando expressões de filtro são fornecidas, a função CALCULATETABLE modifica o contexto do filtro para avaliar a expressão.When filter expressions are provided, the CALCULATETABLE function modifies the filter context to evaluate the expression. 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:For each filter expression, there are two possible standard outcomes when the filter expression is not wrapped in the KEEPFILTERS function:

    • 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.If the columns (or tables) aren't in the filter context, then new filters will be added to the filter context to evaluate the expression.
    • 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.If the columns (or tables) are already in the filter context, the existing filters will be overwritten by the new filters to evaluate the CALCULATETABLE expression.
  • 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.This function is not supported for use in DirectQuery mode when used in calculated columns or row-level security (RLS) rules.

ExemploExample

O exemplo a seguir usa a função CALCULATETABLE para obter a soma de vendas pela Internet para 2006.The following example uses the CALCULATETABLE function to get the sum of Internet sales for 2006. Esse valor é usado posteriormente para calcular a taxa de vendas pela Internet em comparação a todas as vendas do ano de 2006.This value is later used to calculate the ratio of Internet sales compared to all sales for the year 2006.

A seguinte fórmula:The following formula:

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

Isso resulta na seguinte tabela:It results in the following table:

Rótulos de linhaRow Labels Internet SalesAmount_USDInternet SalesAmount_USD CalculateTable 2006 Internet SalesCalculateTable 2006 Internet Sales Razão de vendas pela Internet para 2006Internet Sales to 2006 ratio
20052005 US$ 2.627.031,40$2,627,031.40 US$ 5.681.440,58$5,681,440.58 0,460.46
20062006 US$ 5.681.440,58$5,681,440.58 US$ 5.681.440,58$5,681,440.58 1.001.00
20072007 US$ 8.705.066,67$8,705,066.67 US$ 5.681.440,58$5,681,440.58 1,531.53
20082008 US$ 9.041.288,80$9,041,288.80 US$ 5.681.440,58$5,681,440.58 1,591.59
Grande TotalGrand Total US$ 26.054.827,45$26,054,827.45 US$ 5.681.440,58$5,681,440.58 4.594.59

Confira tambémSee also