EARLIER
Aplica-se a:Coluna calculadaTabela calculadaMeasureCálculo visual
Devolve a value atual da coluna especificada num passo de avaliação exterior da coluna mencionada.
EARLIER é útil para cálculos aninhados em que você deseja usar um determinado value como entrada and 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, em DAX você pode armazenar o value da entrada and fazer o cálculo usando dados de toda a tabela.
EARLIER é usado principalmente no contexto de colunas calculadas.
Sintaxe
EARLIER(<column>, <number>)
Parâmetros
Vigência | Definição |
---|---|
column |
Uma coluna or expressão que resolve para uma coluna. |
num |
(Opcional) Um número positivo para a avaliação externa aprovado. O nível de avaliação next é representado por 1; dois níveis fora é representado por 2 and assim por diante. Quando omitido, o value padrão é 1. |
Regresso value
A atual value de linha, de column
, em number
de avaliação externa passa.
Exceções
Descrição dos erros
Comentários
EARLIER
for bem-sucedido if houver um contexto de linha antes do início da verificação da tabela. Caso contrário, ele retorna um error.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, if você tiver 10 linhas na coluna, aproximadamente 100 operações podem ser necessárias; if você tiver 100 linhas, cerca de 10.000 operações poderão ser executadas.Esta função not é suportada para uso no modo DirectQuery quando usada em colunas calculadas or regras de segurança em nível de linha (RLS).
Observação
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.
Exemplo
Para ilustrar o uso do EARLIER, é necessário construir um cenário que calcule um rankvalueand depois use esse rankvalue 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 | InglêsProductSubcategoryName | TotalSubcategoriaVendas | SubcategoriaClassificação |
---|---|---|---|
18 | Bib-Shorts | $156,167.88 | 18 |
26 | Suportes para bicicletas | $220,720.70 | 14 |
27 | Suportes para Bicicletas | $35,628.69 | 30 |
28 | Garrafas and gaiolas | $59,342.43 | 24 |
5 | Colchetes inferiores | $48,643.47 | 27 |
6 | Travões | $62,113.16 | 23 |
19 | Bonés | $47,934.54 | 28 |
7 | Correntes | $8,847.08 | 35 |
29 | Produtos de limpeza | $16,882.62 | 32 |
8 | Manivelas | $191,522.09 | 15 |
9 | Descarriladores | $64,965.33 | 22 |
30 | Fenders | $41,974.10 | 29 |
10 | Garfos | $74,727.66 | 21 |
20 | Luvas | $228,353.58 | 12 |
4 | Guiador | $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 | Fechaduras | $15,059.47 | 33 |
1 | Bicicletas de montanha | $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 | Bicicletas de Estrada | $40.551.696,34 | 1 |
14 | Caixilharia de Estradas | $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 and Tubos | $224,832.81 | 13 |
3 | Bicicletas de Turismo | $13.334.864,18 | 3 |
16 | Quadros Touring | $1.545.344,02 | 6 |
25 | Coletes | $240,990.04 | 11 |
17 | Rodas | $648,240.04 | 8 |
Criando um RankValue
Uma maneira de obter um rankvalue para uma determinada value em uma linha é count o número de linhas, na mesma tabela, que têm um value maior (or menor) do que a que está sendo comparada. Esta técnica retorna um blankor zero value para o value mais alto na tabela, enquanto values igual terá o mesmo rankvalueandnextvalue (após o valuesigual) terá um rankvaluenão consecutivo. Veja o sample 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 value de TotalSubcategorySales para a linha atual na tabela. Neste caso, como o processo está a começar, é a first linha na tabelaEARLIER([TotalSubcategorySales])
avalia a US$ 156.167,88, a linha atual no loop externo.A função
FILTER
now retorna uma tabela onde all linhas têm um value de TotalSubcategorySales maior que $156,167.88 (que é o value atual paraEARLIER
).A função
COUNTROWS
conta as linhas da tabela filtrada and atribui essa value à nova coluna calculada na linha atual mais 1. A adição de 1 é necessária para evitar que o value mais bem classificado se torne um Blank.A fórmula de coluna calculada move-se para a next linha and 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 value da coluna antes da operação da tabela atual.
If você precisar obter um value do loop antes disso, defina o argumento second como 2.