Compartilhar via


Função EARLIER (DAX)

Retorna o valor atual da coluna especificada em uma fase de avaliação exterior da coluna mencionada.

EARLIER é útil para cálculos aninhados onde você deseja usar um certo valor como entrada e gerar cálculos com base nessa entrada. No Microsoft Excel, você pode fazer tais cálculos apenas dentro do contexto da linha atual; entretanto, no PowerPivot, você pode armazenar o valor da entrada e depois fazer o cálculo usando dados da tabela inteira.

EARLIER é usado principalmente no contexto de colunas calculadas.

Sintaxe

EARLIER(<column>, <number>)

Parâmetros

Termo

Definição

column

Uma coluna ou expressão resolvida para uma coluna.

num

(Opcional) Um número positivo para a fase de avaliação externa.

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

Quando omitido, o valor padrão é 1.

Valor da propriedade/Valor do retorno

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

Exceções

Descrição de erros

Comentários

EARLIER tem êxito se é um contexto de linha antes do começo do exame de tabela. Caso contrário, ela retorna um erro.

O desempenho de EARLIER pode ser lento pois, teoricamente, ela pode precisar executar uma série de operações que se aproximam do número total de horas 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.

ObservaçãoObservação

Na prática, o mecanismo VertiPaq executa otimizações para reduzir o número real de cálculos, mas você deve ter cuidado 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 usa esse valor em outros cálculos.

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

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

ProductSubcategoryKey

EnglishProductSubcategoryName

TotalSubcategorySales

SubcategoryRanking

18

Bib-Shorts

$156,167.88

18

26

Bike Racks

$220,720.70

14

27

Bike Stands

$35,628.69

30

28

Bottles and Cages

$59,342.43

24

5

Bottom Brackets

$48,643.47

27

6

Brakes

$62,113.16

23

19

Caps

$47,934.54

28

7

Chains

$8,847.08

35

29

Cleaners

$16,882.62

32

8

Cranksets

$191,522.09

15

9

Derailleurs

$64,965.33

22

30

Fenders

$41,974.10

29

10

Forks

$74,727.66

21

20

Gloves

$228,353.58

12

4

Handlebars

$163,257.06

17

11

Headsets

$57,659.99

25

31

Helmets

$451,192.31

9

32

Hydration Packs

$96,893.78

20

21

Jerseys

$699,429.78

7

33

Lights

 

36

34

Locks

$15,059.47

33

1

Mountain Bikes

$34,305,864.29

2

12

Mountain Frames

$4,511,170.68

4

35

Panniers

 

36

13

Pedals

$140,422.20

19

36

Pumps

$12,695.18

34

2

Road Bikes

$40,551,696.34

1

14

Road Frames

$3,636,398.71

5

15

Saddles

$52,526.47

26

22

Shorts

$385,707.80

10

23

Socks

$28,337.85

31

24

Tights

$189,179.37

16

37

Tires and Tubes

$224,832.81

13

3

Touring Bikes

$13,334,864.18

3

16

Touring Frames

$1,545,344.02

6

25

Vests

$240,990.04

11

17

Wheels

$648,240.04

8

Criando um valor de classificação

Uma forma de obter um valor de classificação para determinado valor de uma linha é contar o número de linhas, na mesma tabela, que têm um valor maior (ou menor) que o valor comparado. Esta técnica retorna um espaço em branco ou valor zero para o valor mais alto da tabela, enquanto valores iguais terão o mesmo valor de classificação e o próximo valor (depois dos valores iguais) terá um valor de classificação não consecutivo. Consulte 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 em maiores detalhes.

  1. A função EARLIER obtém o valor de TotalSubcategorySales para a linha atual da tabela. Neste caso, como o processo está começando, esta é a primeira linha da tabela

  2. EARLIER([TotalSubcategorySales]) é avaliada em $156.167,88, a linha atual no loop exterior.

  3. A função FILTER agora retorna uma tabela onde todas as linhas têm um valor de TotalSubcategorySales maior que $156.167,88 (que é o valor atual de 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 soma de 1 é necessária para evitar que o valor com classificação superior se torne um espaço em branco.

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

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

Consulte também

Referência

Outros recursos