EARLIEREARLIER

Retorna o valor atual da coluna especificada em uma etapa de avaliação externa da coluna mencionada.Returns the current value of the specified column in an outer evaluation pass of the mentioned column.

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.EARLIER is useful for nested calculations where you want to use a certain value as an input and produce calculations based on that input. 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.In Microsoft Excel, you can do such calculations only within the context of the current row; however, in DAX you can store the value of the input and then make calculation using data from the entire table.

A função EARLIER é usada principalmente no contexto de colunas calculadas.EARLIER is mostly used in the context of calculated columns.

SintaxeSyntax

EARLIER(<column>, <number>)  

ParâmetrosParameters

TermoTerm DefiniçãoDefinition
colunacolumn Uma coluna ou expressão que é resolvida em uma coluna.A column or expression that resolves to a column.
numnum (Opcional) Um número positivo para a etapa de avaliação externa.(Optional) A positive number to the outer evaluation pass.

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.The next evaluation level out is represented by 1; two levels out is represented by 2 and so on.

Quando omitido, assumirá o valor 1 como padrão.When omitted default value is 1.

Retornar valorReturn value

O valor atual da linha, da coluna, no número de etapas de avaliação externas.The current value of row, from column, at number of outer evaluation passes.

ExceçõesExceptions

Descrição de errosDescription of errors

ComentáriosRemarks

  • A função EARLIER terá sucesso se houver um contexto de linha antes do início do exame de tabela.EARLIER succeeds if there is a row context prior to the beginning of the table scan. Caso contrário, ela retornará um erro.Otherwise it returns an error.

  • 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).The performance of EARLIER might be slow because it theoretically, it might have to perform a number of operations that is close to the total number of rows (in the column) times the same number (depending on the syntax of the expression). 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.For example if you have 10 rows in the column, approximately a 100 operations could be required; if you have 100 rows then close to 10,000 operations might be performed.

  • 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.This function is not supported for use in DirectQuery mode when used in calculated columns or row-level security (RLS) rules.

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.In practice, the VertiPaq in-memory analytics engine performs optimizations to reduce the actual number of calculations, but you should be cautious when creating formulas that involve recursion.

ExemploExample

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.To illustrate the use of EARLIER, it is necessary to build a scenario that calculates a rank value and then uses that rank value in other calculations.

O exemplo a seguir baseia-se nessa tabela simples, ProductSubcategory, que mostra o total de vendas de cada ProductSubcategory.The following example is based on this simple table, ProductSubcategory, which shows the total sales for each ProductSubcategory.

A tabela final, incluindo a coluna de classificação, é mostrada aqui.The final table, including the ranking column is shown here.

ProductSubcategoryKeyProductSubcategoryKey EnglishProductSubcategoryNameEnglishProductSubcategoryName TotalSubcategorySalesTotalSubcategorySales SubcategoryRankingSubcategoryRanking
1818 BretellesBib-Shorts US$ 156.167,88$156,167.88 1818
2626 Racks de bicicletaBike Racks US$ 220.720,70$220,720.70 1414
2727 Suportes de bicicletaBike Stands US$ 35.628,69$35,628.69 3030
2828 Garrafas e compartimentosBottles and Cages US$ 59.342,43$59,342.43 2424
55 Suportes inferioresBottom Brackets US$ 48.643,47$48,643.47 2727
66 FreiosBrakes US$ 62.113,16$62,113.16 2323
1919 BonésCaps US$ 47.934,54$47,934.54 2828
77 CorrentesChains US$ 8.847,08$8,847.08 3535
2929 LimpadoresCleaners US$ 16.882,62$16,882.62 3232
88 PedaleirasCranksets US$ 191.522,09$191,522.09 1515
99 CâmbiosDerailleurs US$ 64.965,33$64,965.33 2222
3030 Para-choquesFenders US$ 41.974,10$41,974.10 2929
1010 GarfosForks US$ 74.727,66$74,727.66 2121
2020 LuvasGloves US$ 228.353,58$228,353.58 1212
44 GuidõesHandlebars US$ 163.257,06$163,257.06 1717
1111 Fones de ouvidoHeadsets US$ 57.659,99$57,659.99 2525
3131 CapacetesHelmets US$ 451.192,31$451,192.31 99
3232 Conjuntos para hidrataçãoHydration Packs US$ 96.893,78$96,893.78 2020
2121 CamisasJerseys US$ 699.429,78$699,429.78 77
3333 LuzesLights 3636
3434 BloqueiosLocks US$ 15.059,47$15,059.47 3333
11 Mountain bikesMountain Bikes US$ 34.305.864,29$34,305,864.29 22
1212 Quadros para mountain bikesMountain Frames US$ 4.511.170,68$4,511,170.68 44
3535 CestosPanniers 3636
1313 PedaisPedals US$ 140.422,20$140,422.20 1919
3636 BombasPumps US$ 12.695,18$12,695.18 3434
22 Bicicletas de estradaRoad Bikes US$ 40.551.696,34$40,551,696.34 11
1414 Quadros para bicicletas de estradaRoad Frames US$ 3.636.398,71$3,636,398.71 55
1515 SelinsSaddles US$ 52.526,47$52,526.47 2626
2222 ShortsShorts US$ 385.707,80$385,707.80 1010
2323 MeiasSocks US$ 28.337,85$28,337.85 3131
2424 CalçasTights US$ 189.179,37$189,179.37 1616
3737 Pneus e câmarasTires and Tubes US$ 224.832,81$224,832.81 1313
33 Bicicletas de passeioTouring Bikes US$ 13.334.864,18$13,334,864.18 33
1616 Quadros para bicicletas de passeioTouring Frames US$ 1.545.344,02$1,545,344.02 66
2525 ColetesVests US$ 240.990,04$240,990.04 1111
1717 RodasWheels US$ 648.240,04$648,240.04 88

Criação de um valor de classificaçãoCreating a Rank Value

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.One way to obtain a rank value for a given value in a row is to count the number of rows, in the same table, that have a value larger (or smaller) than the one that is being compared. 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.This technique returns a blank or zero value for the highest value in the table, whereas equal values will have the same rank value and next value (after the equal values) will have a non consecutive rank value. Veja o exemplo abaixo.See the sample below.

Uma nova coluna calculada, SubCategorySalesRanking, é criada usando a fórmula a seguir.A new calculated column, SubCategorySalesRanking, is created by using the following formula.

= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1  

As etapas a seguir descrevem o método de cálculo com mais detalhes.The following steps describe the method of calculation in more detail.

  1. A função EARLIER obtém o valor de TotalSubcategorySales para a linha atual da tabela.The EARLIER function gets the value of TotalSubcategorySales for the current row in the table. Nesse caso, como o processo está sendo iniciado, é a primeira linha da tabelaIn this case, because the process is starting, it is the first row in the table

  2. A função EARLIER([TotalSubcategorySales]) resulta em US$ 156.167,88, a linha atual no loop externo.EARLIER([TotalSubcategorySales]) evaluates to $156,167.88, the current row in the outer loop.

  3. 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).The FILTER function now returns a table where all rows have a value of TotalSubcategorySales larger than $156,167.88 (which is the current value for EARLIER).

  4. A função COUNTROWS conta as linhas da tabela filtrada e atribui esse valor à nova coluna calculada na linha atual mais 1.The COUNTROWS function counts the rows of the filtered table and assigns that value to the new calculated column in the current row plus 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.Adding 1 is needed to prevent the top ranked value from become a Blank.

  5. A fórmula da coluna calculada passa para a próxima linha e repete as etapas 1 a 4.The calculated column formula moves to the next row and repeats steps 1 to 4. Essas etapas são repetidas até que o final da tabela seja alcançado.These steps are repeated until the end of the table is reached.

A função EARLIER sempre obterá o valor da coluna antes da operação da tabela atual.The EARLIER function will always get the value of the column prior to the current table operation. Se você precisar obter um valor do loop antes disso, defina o segundo argumento como 2.If you need to get a value from the loop before that, set the second argument to 2.

Consulte tambémSee also

função EARLIESTEARLIEST function
Funções de filtroFilter functions