EARLIER
aplica-se a:coluna calculadatabela calculadaMeasurecálculo visual
Retorna o value 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 value como entrada and 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 value da and de 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 or expressão que é resolvida para uma coluna. |
num |
(Opcional) Um número positivo para a passagem de avaliação externa. O nível de avaliação next é representado por 1; dois níveis fora é representado por 2 and assim por diante. Quando o value padrão omitido é 1. |
Retornar value
O value atual da linha, de column
, em number
de aprovações de avaliação externa.
Exceções
Descrição dos erros
Observações
EARLIER
é bem-sucedido if há um contexto de linha antes do início da verificação da tabela. Caso contrário, ele retornará um error.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, if você tem 10 linhas na coluna, aproximadamente 100 operações podem ser necessárias; if você tem 100 linhas e, em seguida, cerca de 10.000 operações podem ser executadas.Essa função not tem suporte para uso no modo DirectQuery quando usada em colunas calculadas or 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 rankvalueand então usa esse rankvalue 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 and 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 and 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 RankValue
Uma maneira de obter um rankvalue para um determinado value em uma linha é count o número de linhas, na mesma tabela, que têm uma value maior (or menor) do que a que está sendo comparada. Essa técnica retorna um blankor zero value para o value mais alto da tabela, enquanto values igual terá o mesmo rankvalueandnextvalue (após o valuesigual) terá um rankvaluenão consecutivo. Veja a 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. Nesse caso, como o processo está sendo iniciado, é a linha first na tabelaEARLIER([TotalSubcategorySales])
é avaliada como US$ 156.167,88, a linha atual no loop externo.A função
FILTER
now retorna uma tabela em que as linhas all têm uma value de TotalSubcategorySales maior que US$ 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 impedir que os value mais bem classificados se tornem um Blank.A fórmula de coluna calculada é movida para a linha nextand repete as etapas 1 a 4. Essas etapas são repetidas até que o final da tabela seja atingido.
A função EARLIER
sempre obterá o value da coluna antes da operação da tabela atual.
If você precisa obter um value do loop antes disso, defina o argumento second como 2.
Related conteúdo
de função
Filter funções