EARLIER
Se aplica a:columna CalculadaTabla calculadaMeasurecálculo visual
Devuelve el value actual de la columna especificada en un pase de evaluación externa de la columna mencionada.
EARLIER resulta útil para los cálculos anidados en los que desea usar un determinado value como entrada and generar cálculos basados en esa entrada. En Microsoft Excel, puede realizar estos cálculos solo dentro del contexto de la fila actual; sin embargo, en DAX puede almacenar el value de la entrada and realizar el cálculo mediante datos de toda la tabla.
EARLIER se usa principalmente en el contexto de las columnas calculadas.
Sintaxis
EARLIER(<column>, <number>)
Parámetros
Término | Definición |
---|---|
column |
Una columna or expresión que se resuelve en una columna. |
num |
(Opcional) Número positivo para el pase de evaluación externa. El nivel de evaluación next se representa mediante 1; dos niveles de salida se representan mediante 2 and así sucesivamente. Cuando se omite el valor predeterminado value es 1. |
Devolver value
La value actual de fila, de column
, en number
de los pasos de evaluación externa.
Excepciones
Descripción de los errores
Observaciones
EARLIER
se realiza correctamente if hay un contexto de fila antes del principio del examen de la tabla. De lo contrario, devuelve un error.El rendimiento de
EARLIER
puede ser lento porque, en teoría, puede que tenga que realizar una serie de operaciones cercanas al número total de filas (en la columna) veces el mismo número (dependiendo de la sintaxis de la expresión). Por ejemplo, if tiene 10 filas en la columna, se podrían requerir aproximadamente 100 operaciones; if tiene 100 filas y, a continuación, se pueden realizar 10 000 operaciones.Esta función se not se admite para su uso en el modo DirectQuery cuando se usa en columnas calculadas or reglas de seguridad de nivel de fila (RLS).
Nota
En la práctica, el motor de análisis en memoria VertiPaq realiza optimizaciones para reducir el número real de cálculos, pero debe tener cuidado al crear fórmulas que impliquen recursividad.
Ejemplo
Para ilustrar el uso de EARLIER, es necesario crear un escenario que calcule un rankvalueand luego use ese rankvalue en otros cálculos.
El ejemplo siguiente se basa en esta tabla simple, ProductSubcategory
, que muestra las ventas totales de cada ProductSubcategory.
Aquí se muestra la tabla final, incluida la columna de clasificación.
ProductSubcategoryKey | EnglishProductSubcategoryName | TotalSubcategorySales | SubcategoryRanking |
---|---|---|---|
18 | Bib-Shorts | $156,167,88 | 18 |
26 | Bastidores de bicicletas | $220,720,70 | 14 |
27 | Soportes de bicicletas | $35.628.69 | 30 |
28 | Botellas and Jaulas | $59,342,43 | 24 |
5 | Corchetes inferiores | $48.643.47 | 27 |
6 | Frenos | $62,113.16 | 23 |
19 | Caps | $47.934.54 | 28 |
7 | Cadenas | $8.847.08 | 35 |
29 | Limpiadores | $16.882.62 | 32 |
8 | Conjuntos de manivelas | $191,522,09 | 15 |
9 | Derailleurs | $64.965.33 | 22 |
30 | Defensas | $41.974.10 | 29 |
10 | Tenedores | $74.727.66 | 21 |
20 | Guantes | $228,353,58 | 12 |
4 | Manillar | $163,257.06 | 17 |
11 | Auriculares | $57,659,99 | 25 |
31 | Cascos | $451,192.31 | 9 |
32 | Paquetes de hidratación | $96.893.78 | 20 |
21 | Jerseys | $699,429.78 | 7 |
33 | Luces | 36 | |
34 | Cerraduras | $15.059.47 | 33 |
1 | Bicicletas de montaña | $34,305,864.29 | 2 |
12 | Marcos de montaña | $4,511,170.68 | 4 |
35 | Alforjas | 36 | |
13 | Pedales | $140,422.20 | 19 |
36 | Bombas | $12,695.18 | 34 |
2 | Bicicletas de carretera | $40,551,696.34 | 1 |
14 | Fotogramas de carretera | $3,636,398.71 | 5 |
15 | Sillas | $52.526.47 | 26 |
22 | Shorts | $385.707.80 | 10 |
23 | Calcetines | $28.337.85 | 31 |
24 | Malla | $189,179.37 | 16 |
37 | Neumáticos and Tubos | $224,832.81 | 13 |
3 | Bicicletas de paseo | $13,334,864.18 | 3 |
16 | Marcos de gira | $1,545,344.02 | 6 |
25 | Chalecos | $240,990,04 | 11 |
17 | Ruedas | $648,240.04 | 8 |
Creación de un RankValue
Una manera de obtener un rankvalue para un value determinado en una fila es count el número de filas, en la misma tabla, que tienen un value mayor (or menor) que el que se compara. Esta técnica devuelve un blankorvalue cero para el value más alto de la tabla, mientras que el mismo values tendrá el mismo rankvalueandnextvalue (después del valuesigual) tendrá un rankvalueno consecutivo. Consulte la sample siguiente.
Se crea una nueva columna calculada, SubCategorySalesRanking, mediante la fórmula siguiente.
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
En los pasos siguientes se describe el método de cálculo con más detalle.
La función
EARLIER
obtiene el value de TotalSubcategorySales de la fila actual de la tabla. En este caso, dado que el proceso se está iniciando, es la fila first de la tabla.EARLIER([TotalSubcategorySales])
se evalúa como $156.167.88, la fila actual en el bucle externo.La función
FILTER
now devuelve una tabla en la que all filas tienen un value de TotalSubcategorySales mayor que $156.167.88 (que es el value actual paraEARLIER
).La función
COUNTROWS
cuenta las filas de la tabla filtrada and asigna esa value a la nueva columna calculada de la fila actual más 1. Se necesita agregar 1 para evitar que el value de clasificación superior se convierta en un Blank.La fórmula de columna calculada se mueve a la fila nextand repite los pasos 1 a 4. Estos pasos se repiten hasta que se alcanza el final de la tabla.
La función EARLIER
siempre obtendrá la value de la columna antes de la operación de tabla actual.
If debe obtener un value del bucle antes de eso, establezca el argumento second en 2.