EARLIER
Se aplica a:columna Calculadatabla calculadaMedidacálculo visual
Devuelve el valor 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 valor determinado como entrada y 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 valor de la entrada y, a continuación, 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 |
Columna o expresión que se resuelve en una columna. |
num |
(Opcional) Número positivo para el pase de evaluación externa. El siguiente nivel de evaluación se representa mediante 1; dos niveles de salida se representan mediante 2, etc. Cuando se omite el valor predeterminado es 1. |
Valor devuelto
Valor actual de la fila, de column
, en number
de los pasos de evaluación externa.
Excepciones
Descripción de los errores
Observaciones
EARLIER
se realiza correctamente si 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, si tiene 10 filas en la columna, se podrían requerir aproximadamente 100 operaciones; Si tiene 100 filas, es posible que se realicen cerca de 10 000 operaciones.Esta función no se admite para su uso en el modo DirectQuery cuando se usa en columnas calculadas o 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 valor de clasificación y, a continuación, use ese valor de clasificación 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 y 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 y 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 valor de clasificación
Una manera de obtener un valor de clasificación para un valor determinado en una fila es contar el número de filas, en la misma tabla, que tienen un valor mayor (o menor) que el que se compara. Esta técnica devuelve un valor en blanco o cero para el valor más alto de la tabla, mientras que los valores iguales tendrán el mismo valor de clasificación y el siguiente (después de los valores iguales) tendrán un valor de clasificación no consecutivo. Consulte el ejemplo 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 valor de totalSubcategorySales para la fila actual de la tabla. En este caso, dado que el proceso se está iniciando, es la primera fila de la tabla.EARLIER([TotalSubcategorySales])
se evalúa como $156.167.88, la fila actual en el bucle externo.La función
FILTER
ahora devuelve una tabla donde todas las filas tienen un valor de TotalSubcategorySales más de $156,167,88 (que es el valor actual deEARLIER
).La función
COUNTROWS
cuenta las filas de la tabla filtrada y asigna ese valor a la nueva columna calculada de la fila actual más 1. Se necesita agregar 1 para evitar que el valor clasificado superior se convierta en blank.La fórmula de columna calculada se mueve a la siguiente fila y 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á el valor de la columna antes de la operación de tabla actual. Si necesita obtener un valor del bucle antes de eso, establezca el segundo argumento en 2.