EARLIER

Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual

Retorna o valor atual da coluna especificada em uma etapa de avaliação externa da coluna mencionada.

A função EARLIER é útil para cálculos aninhados em que você deseja usar um determinado valor como entrada e produzir cálculos com base nessa entrada. No Microsoft Excel, você pode fazer esses cálculos somente dentro do contexto da linha atual. No DAX, no entanto, você pode armazenar o valor da entrada e, em seguida, efetuar cálculos usando dados de toda a tabela.

A função EARLIER é usada principalmente no contexto de colunas calculadas.

Sintaxe

EARLIER(<column>, <number>)  

Parâmetros

Termo Definição
coluna Uma coluna ou expressão que é resolvida em uma coluna.
num (Opcional) Um número positivo para a etapa de avaliação externa.

O próximo nível de avaliação externa será representado por 1. Dois níveis externos além serão representados por 2 e assim por diante.

Quando omitido, assumirá o valor 1 como padrão.

Retornar valor

O valor atual da linha, da coluna, no número de etapas de avaliação externas.

Exceções

Descrição de erros

Comentários

  • A função EARLIER terá sucesso se houver um contexto de linha antes do início do exame de tabela. Caso contrário, ela retornará um erro.

  • O desempenho da função EARLIER pode ser lento porque, teoricamente, ela poderá ter que executar um número de operações próximo ao número total de linhas (na coluna) vezes o mesmo número (dependendo da sintaxe da expressão). Por exemplo, se você tiver 10 linhas na coluna, poderão ser necessárias aproximadamente 100 operações; se você tiver 100 linhas, poderão ser executadas cerca de 10.000 operações.

  • 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.

Observação

Na prática, o mecanismo de análise in-memory do VertiPaq executa otimizações para reduzir o número real de cálculos efetuados, mas você deve ter cuidado ao criar fórmulas que envolvem recursão.

Exemplo

Para ilustrar o uso da função EARLIER, é necessário criar um cenário que calcule um valor de classificação e, em seguida, use esse valor de classificação em outros cálculos.

O exemplo a seguir baseia-se nessa tabela simples, ProductSubcategory, que mostra o total de vendas de cada ProductSubcategory.

A tabela final, incluindo a coluna de classificação, é mostrada aqui.

ProductSubcategoryKey EnglishProductSubcategoryName TotalSubcategorySales SubcategoryRanking
18 Bretelles US$ 156.167,88 18
26 Racks de bicicleta US$ 220.720,70 14
27 Suportes de bicicleta US$ 35.628,69 30
28 Garrafas e compartimentos US$ 59.342,43 24
5 Suportes inferiores US$ 48.643,47 27
6 Freios US$ 62.113,16 23
19 Bonés US$ 47.934,54 28
7 Correntes US$ 8.847,08 35
29 Limpadores US$ 16.882,62 32
8 Pedaleiras US$ 191.522,09 15
9 Câmbios US$ 64.965,33 22
30 Para-choques US$ 41.974,10 29
10 Garfos US$ 74.727,66 21
20 Luvas US$ 228.353,58 12
4 Guidões US$ 163.257,06 17
11 Fones de ouvido US$ 57.659,99 25
31 Capacetes US$ 451.192,31 9
32 Conjuntos para hidratação US$ 96.893,78 20
21 Camisas US$ 699.429,78 7
33 Luzes 36
34 Bloqueios US$ 15.059,47 33
1 Mountain bikes US$ 34.305.864,29 2
12 Quadros para mountain bikes US$ 4.511.170,68 4
35 Cestos 36
13 Pedais US$ 140.422,20 19
36 Bombas US$ 12.695,18 34
2 Bicicletas de estrada US$ 40.551.696,34 1
14 Quadros para bicicletas de estrada US$ 3.636.398,71 5
15 Selins US$ 52.526,47 26
22 Shorts US$ 385.707,80 10
23 Meias US$ 28.337,85 31
24 Calças US$ 189.179,37 16
37 Pneus e câmaras US$ 224.832,81 13
3 Bicicletas de passeio US$ 13.334.864,18 3
16 Quadros para bicicletas de passeio US$ 1.545.344,02 6
25 Coletes US$ 240.990,04 11
17 Rodas US$ 648.240,04 8

Criação de um valor de classificação

Uma maneira de obter um valor de classificação para um determinado valor em uma linha é contar o número de linhas na mesma tabela que contêm um valor maior (ou menor) do que a que está sendo comparada. Essa técnica retorna um valor em branco ou zero para o valor mais alto da tabela, enquanto valores iguais terão o mesmo valor de classificação e o próximo valor (após os valores iguais) terá um valor de classificação não consecutivo. Veja o exemplo abaixo.

Uma nova coluna calculada, SubCategorySalesRanking, é criada usando a fórmula a seguir.

= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1  

As etapas a seguir descrevem o método de cálculo com mais detalhes.

  1. A função EARLIER obtém o valor de TotalSubcategorySales para a linha atual da tabela. Nesse caso, como o processo está sendo iniciado, é a primeira linha da tabela

  2. A função EARLIER([TotalSubcategorySales]) resulta em US$ 156.167,88, a linha atual no loop externo.

  3. A função FILTER agora retorna uma tabela em que todas as linhas têm um valor de TotalSubcategorySales maior que US$ 156.167,88 (que é o valor atual da função EARLIER).

  4. A função COUNTROWS conta as linhas da tabela filtrada e atribui esse valor à nova coluna calculada na linha atual mais 1. A adição de 1 é necessária para impedir que o valor de classificação superior se transforme em um espaço em branco.

  5. A fórmula da coluna calculada passa para a próxima linha e repete as etapas 1 a 4. Essas etapas são repetidas até que o final da tabela seja alcançado.

A função EARLIER sempre obterá o valor da coluna antes da operação da tabela atual. Se você precisar obter um valor do loop antes disso, defina o segundo argumento como 2.

função EARLIEST
Funções de filtro