MAIS CEDO
Aplica-se a: Coluna calculada Tabela calculada Medida Cálculo visual
Devolve o valor atual da coluna especificada numa 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 dentro do contexto da linha atual; no entanto, no 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.
EARLIER(<column>, <number>)
Termo | Definição |
---|---|
coluna | Uma coluna ou expressão que resolve para uma coluna. |
num | (Opcional) Um número positivo para a avaliação externa aprovado. O próximo nível de avaliação é representado por 1; dois níveis fora é representado por 2 e assim por diante. Quando omitido, o valor padrão é 1. |
O valor atual da linha, da coluna, no número de passagens de avaliação externa.
Descrição dos erros
EARLIER terá êxito se houver um contexto de linha antes do início da verificação da tabela. Caso contrário, ele retorna um erro.
O desempenho de EARLIER pode ser lento porque, teoricamente, ele pode 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, aproximadamente 100 operações podem ser necessárias; Se você tiver 100 linhas, cerca de 10.000 operações poderão ser executadas.
Esta função não é suportada para utilização no modo DirectQuery quando utilizada em colunas calculadas ou regras de segurança ao nível da linha (RLS).
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 envolvem recursão.
Para ilustrar o uso de 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 é baseado nesta 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 | TotalSubcategoriaVendas | SubcategoriaClassificação |
---|---|---|---|
18 | Bib-Calções | $156,167.88 | 18 |
26 | Suportes para bicicletas | $220,720.70 | 14 |
27 | Suportes para Bicicletas | $35,628.69 | 30 |
28 | Garrafas e gaiolas | $59,342.43 | 24 |
5 | Bottom Brackets | $48,643.47 | 27 |
6 | Brakes | $62,113.16 | 23 |
19 | Bonés | $47,934.54 | 28 |
7 | Chains | $8,847.08 | 35 |
29 | Produtos de limpeza | $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 | Luvas | $228,353.58 | 12 |
4 | Handlebars | $163,257.06 | 17 |
11 | Auriculares | $57,659.99 | 25 |
31 | Capacetes | $451,192.31 | 9 |
32 | Pacotes de hidratação | $96,893.78 | 20 |
21 | Camisolas | $699,429.78 | 7 |
33 | Luzes | 36 | |
34 | Bloqueios | $15,059.47 | 33 |
1 | Mountain Bikes | $34.305.864,29 | 2 |
12 | Quadros de Montanha | $4.511.170,68 | 4 |
35 | Panniers | 36 | |
13 | Pedais | $140,422.20 | 19 |
36 | Bombas | $12,695.18 | 34 |
2 | Road Bikes | $40.551.696,34 | 1 |
14 | Quadros de Estrada | $3.636.398,71 | 5 |
15 | Selas | $52,526.47 | 26 |
22 | Calções | $385,707.80 | 10 |
23 | Meias | $28,337.85 | 31 |
24 | Collants | $189,179.37 | 16 |
37 | Pneus e Câmaras de Ar | $224,832.81 | 13 |
3 | Bicicletas de Touring | $13.334.864,18 | 3 |
16 | Quadros de Touring | $1.545.344,02 | 6 |
25 | Coletes | $240,990.04 | 11 |
17 | Pneus | $648,240.04 | 8 |
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) do que aquele que está sendo comparado. Essa técnica retorna um valor em branco ou zero para o valor mais alto na 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.
A função EARLIER obtém o valor de TotalSubcategorySales para a linha atual na tabela. Neste caso, como o processo está a começar, é a primeira linha da tabela
EARLIER([TotalSubcategorySales]) é avaliado em US$ 156.167,88, a linha atual no loop externo.
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 para EARLIER).
A função COUNTROWS conta as linhas da tabela filtrada e atribui esse valor à nova coluna calculada na linha atual mais 1. Adicionar 1 é necessário para evitar que o valor mais bem classificado se torne um Blank.
A fórmula da coluna calculada move-se para a linha seguinte e repete os passos 1 a 4. Estes passos são repetidos até se chegar ao final da tabela.
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.