EARLIER
Aplica-se a:Coluna calculadaTabela calculadaMedidaCálculo visual
Retorna o valor atual da coluna especificada em uma etapa de avaliação externa da coluna mencionada.
A função 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 DAX, no entanto, você pode armazenar o valor da entrada e, em seguida, efetuar cálculos usando dados de toda a tabela.
A função EARLIER é usada principalmente no contexto de colunas calculadas.
Sintaxe
EARLIER(<column>, <number>)
Parâmetros
Termo | Definição |
---|---|
coluna | Uma coluna ou expressão que é resolvida em uma coluna. |
num | (Opcional) Um número positivo para a etapa de avaliação externa. O próximo nível de avaliação externa será representado por 1. Dois níveis externos além serão representados por 2 e assim por diante. Quando omitido, assumirá o valor 1 como padrão. |
Retornar valor
O valor atual da linha, da coluna, no número de etapas de avaliação externas.
Exceções
Descrição de erros
Comentários
A função EARLIER terá sucesso se houver um contexto de linha antes do início do exame de tabela. Caso contrário, ela retornará um erro.
O desempenho da função EARLIER pode ser lento porque, teoricamente, ela poderá 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, poderão ser necessárias aproximadamente 100 operações; se você tiver 100 linhas, poderão ser executadas cerca de 10.000 operações.
Não há suporte para a função ser usada no modo DirectQuery quando usada em regras RLS (segurança em nível de linha) ou colunas calculadas.
Observação
Na prática, o mecanismo de análise in-memory do VertiPaq executa otimizações para reduzir o número real de cálculos efetuados, mas você deve ter cuidado ao criar fórmulas que envolvem recursão.
Exemplo
Para ilustrar o uso da função 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 baseia-se nessa tabela simples, ProductSubcategory, que mostra o total de vendas de cada ProductSubcategory.
A tabela final, incluindo a coluna de classificação, é mostrada aqui.
ProductSubcategoryKey | EnglishProductSubcategoryName | TotalSubcategorySales | SubcategoryRanking |
---|---|---|---|
18 | Bretelles | US$ 156.167,88 | 18 |
26 | Racks de bicicleta | US$ 220.720,70 | 14 |
27 | Suportes de bicicleta | US$ 35.628,69 | 30 |
28 | Garrafas e compartimentos | US$ 59.342,43 | 24 |
5 | Suportes inferiores | US$ 48.643,47 | 27 |
6 | Freios | US$ 62.113,16 | 23 |
19 | Bonés | US$ 47.934,54 | 28 |
7 | Correntes | US$ 8.847,08 | 35 |
29 | Limpadores | US$ 16.882,62 | 32 |
8 | Pedaleiras | US$ 191.522,09 | 15 |
9 | Câmbios | US$ 64.965,33 | 22 |
30 | Para-choques | US$ 41.974,10 | 29 |
10 | Garfos | US$ 74.727,66 | 21 |
20 | Luvas | US$ 228.353,58 | 12 |
4 | Guidões | US$ 163.257,06 | 17 |
11 | Fones de ouvido | US$ 57.659,99 | 25 |
31 | Capacetes | US$ 451.192,31 | 9 |
32 | Conjuntos para hidratação | US$ 96.893,78 | 20 |
21 | Camisas | US$ 699.429,78 | 7 |
33 | Luzes | 36 | |
34 | Bloqueios | US$ 15.059,47 | 33 |
1 | Mountain bikes | US$ 34.305.864,29 | 2 |
12 | Quadros para mountain bikes | US$ 4.511.170,68 | 4 |
35 | Cestos | 36 | |
13 | Pedais | US$ 140.422,20 | 19 |
36 | Bombas | US$ 12.695,18 | 34 |
2 | Bicicletas de estrada | US$ 40.551.696,34 | 1 |
14 | Quadros para bicicletas de estrada | US$ 3.636.398,71 | 5 |
15 | Selins | US$ 52.526,47 | 26 |
22 | Shorts | US$ 385.707,80 | 10 |
23 | Meias | US$ 28.337,85 | 31 |
24 | Calças | US$ 189.179,37 | 16 |
37 | Pneus e câmaras | US$ 224.832,81 | 13 |
3 | Bicicletas de passeio | US$ 13.334.864,18 | 3 |
16 | Quadros para bicicletas de passeio | US$ 1.545.344,02 | 6 |
25 | Coletes | US$ 240.990,04 | 11 |
17 | Rodas | US$ 648.240,04 | 8 |
Criação de 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 contêm um valor maior (ou menor) do que a que está sendo comparada. 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 da tabela. Nesse caso, como o processo está sendo iniciado, é a primeira linha da tabela
A função EARLIER([TotalSubcategorySales]) resulta em 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 US$ 156.167,88 (que é o valor atual da função EARLIER).
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 de classificação superior se transforme em um espaço em branco.
A fórmula da coluna calculada passa para a próxima linha e repete as etapas 1 a 4. Essas etapas são repetidas até que o final da tabela seja alcançado.
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
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de