EARLIER
aplica-se a:coluna calculada
tabela calculada
medida
cá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.
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 tabelaEARLIER([TotalSubcategorySales])
é avaliada como US$ 156.167,88, a linha atual no loop externo.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 paraEARLIER
).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.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.
Conteúdo relacionado
função EARLIESTFiltrar funções