Compartilhar via


EARLIER

aplica-se a:coluna calculadatabela calculadamedidacálculo visual

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

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 no contexto da linha atual; no entanto, em DAX você pode armazenar o valor da entrada e, em seguida, fazer o cálculo usando dados de toda a tabela.

EARLIER é usado principalmente no contexto de colunas calculadas.

Sintaxe

EARLIER(<column>, <number>)

Parâmetros

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

O próximo nível de avaliação é representado por 1; dois níveis fora é representado por 2 e assim por diante.

Quando o valor padrão omitido é 1.

Valor de retorno

O valor atual da linha, de column, em number de aprovações de avaliação externa.

Exceções

Descrição dos erros

Observações

  • EARLIER terá êxito se houver um contexto de linha antes do início da verificação da tabela. Caso contrário, retornará um erro.

  • O desempenho de EARLIER pode ser lento porque, teoricamente, ele pode ter que executar várias operações próximas 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, aproximadamente 100 operações poderão ser necessárias; se você tiver 100 linhas, cerca de 10.000 operações poderão ser executadas.

  • Essa função não tem suporte para uso no modo DirectQuery quando usada em colunas calculadas ou regras de RLS (segurança em nível de linha).

Nota

Na prática, o mecanismo de análise na memória VertiPaq executa otimizações para reduzir o número real de cálculos, mas você deve ser cauteloso ao criar fórmulas que envolvam recursão.

Exemplo

Para ilustrar o uso de EARLIER, é necessário criar um cenário que calcula um valor de classificação e, em seguida, usa 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 para cada ProductSubcategory.

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

ProductSubcategoryKey EnglishProductSubcategoryName TotalSubcategorySales SubcategoryRanking
18 Bib-Shorts $156.167,88 18
26 Bicicletários $220.720,70 14
27 Estandes de bicicleta US$ 35.628,69 30
28 Garrafas e gaiolas $59.342,43 24
5 Colchetes inferiores $48.643,47 27
6 Freios $62.113,16 23
19 Caps $47.934,54 28
7 Correntes US$ 8.847,08 35
29 Limpeza $16.882,62 32
8 Conjuntos de manivelas $191.522,09 15
9 Descarrilamentos $64.965,33 22
30 Fenders US$ 41.974,10 29
10 Garfos $74.727,66 21
20 Luvas $228.353,58 12
4 Guidão $163.257,06 17
11 Auriculares US$ 57.659,99 25
31 Capacetes US$ 451.192,31 9
32 Pacotes de Hidratação $96.893,78 20
21 Camisola $699.429,78 7
33 Luzes 36
34 Fechaduras $15.059,47 33
1 Mountain Bikes $34.305.864,29 2
12 Quadros de montanha $4.511.170,68 4
35 Cestos 36
13 Pedais $140.422,20 19
36 Bombas $12.695,18 34
2 Bicicletas rodoviárias $40.551.696,34 1
14 Quadros de estrada $3.636.398,71 5
15 Selas $52.526,47 26
22 Calção $385.707,80 10
23 Meias $28.337,85 31
24 Meia-calça $189.179,37 16
37 Pneus e tubos $224.832,81 13
3 Bicicletas de passeio $13.334.864,18 3
16 Quadros de tour $1.545.344,02 6
25 Coletes US$ 240.990,04 11
17 Rodas $648.240,04 8

Criando 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 têm um valor maior (ou menor) que o que está sendo comparado. 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 na tabela. Nesse caso, como o processo está sendo iniciado, ele é a primeira linha na tabela

  2. EARLIER([TotalSubcategorySales]) é avaliada como 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 $156.167,88 (que é o valor atual para 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 mais alto classificado se torne um Blank.

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

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 EARLIESTFiltrar funções