EARLIER

Devuelve el valor actual de la columna especificada en un paso de evaluación externo de la columna mencionada.

EARLIER es útil para los cálculos anidados en los que se quiere usar un determinado valor como entrada y generar cálculos basados en esa entrada. En Microsoft Excel, estos cálculos solo se pueden realizar dentro del contexto de la fila actual. Sin embargo, en DAX puede almacenar el valor de la entrada y luego hacer cálculos con los datos de toda la tabla.

EARLIER se usa principalmente en el contexto de columnas calculadas.

Sintaxis

EARLIER(<column>, <number>)  

Parámetros

Término Definición
columna Columna o expresión que se resuelve en una columna.
num (Opcional) Número positivo para el paso de evaluación externo.

El siguiente nivel de evaluación externo se representa mediante 1; dos niveles externos se representan mediante 2, y así sucesivamente.

Si se omite, el valor predeterminado es 1.

Valor devuelto

Valor actual de fila, desde column, en number de pasos de evaluación externos.

Excepciones

Descripción de errores

Notas

  • EARLIER se ejecuta correctamente si hay un contexto de fila antes del inicio del recorrido de tabla. De lo contrario, devuelve un error.

  • El rendimiento de EARLIER puede ser lento porque, en teoría, puede tener que realizar una serie de operaciones cercana al número total de filas (en la columna) por el mismo número (en función de la sintaxis de la expresión). Por ejemplo, si tiene 10 filas en la columna, se podrían necesitar aproximadamente 100 operaciones; si tiene 100 filas, podrían realizarse casi 10 000 operaciones.

  • Esta función no se admite para su uso en el modo DirectQuery cuando se utiliza en columnas calculadas o en 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 mostrar el uso de EARLIER, es necesario crear un escenario que calcule un valor de clasificación y luego use ese valor en otros cálculos.

El ejemplo siguiente se basa en esta tabla simple, ProductSubcategory, que muestra las ventas totales de cada ProductSubcategory.

La tabla final, incluida la columna de clasificación, se muestra aquí.

ProductSubcategoryKey EnglishProductSubcategoryName TotalSubcategorySales SubcategoryRanking
18 Pantalones de ciclismo 156 167,88 $ 18
26 Bastidores de bicicletas 220 720,70 $ 14
27 Soportes de bicicletas 35 628,69 $ 30
28 Bidones y soportes 59 342,43 $ 24
5 Ejes pedalier 48 643,47 $ 27
6 Frenos 62 113,16 $ 23
19 Gorras 47 934,54 $ 28
7 Cadenas 8 847,08 $ 35
29 Limpiadores 16 882,62 $ 32
8 Bielas 191 522,09 $ 15
9 Desviadores 64 965,33 $ 22
30 Guardabarros 41 974,10 $ 29
10 Horquillas 74 727,66 $ 21
20 Guantes 228 353,58 $ 12
4 Manillares 163 257,06 $ 17
11 Tubos de dirección 57 659,99 $ 25
31 Cascos 451 192,31 $ 9
32 Paquetes de hidratación 96 893,78 $ 20
21 Maillots 699 429,78 $ 7
33 Luces 36
34 Bloqueos 15 059,47 $ 33
1 Bicicletas de montaña 34 305 864,29 $ 2
12 Cuadros de bicicletas 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 Cuadros de bicicletas de carretera 3 636 398,71 $ 5
15 Sillines 52 526,47 $ 26
22 Shorts 385 707,80 $ 10
23 Calcetines 28 337,85 $ 31
24 Medias 189 179,37 $ 16
37 Cubiertas y tubulares 224 832,81 $ 13
3 Bicicletas de paseo 13 334 864,18 $ 3
16 Cuadros de bicicletas de paseo 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 de un valor determinado de una fila es contar el número de filas de la misma tabla que tienen un valor mayor (o menor) que el que se está comparando. Esta técnica devuelve un espacio en blanco o un valor cero para el valor más alto de la tabla, mientras que los valores iguales tienen el mismo valor de clasificación y el siguiente valor (después de los valores iguales) tiene un valor de clasificación no consecutivo. Vea el ejemplo siguiente.

Se crea una nueva columna calculada, SubCategorySalesRanking, con 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 más detalladamente.

  1. La función EARLIER obtiene el valor de TotalSubcategorySales de la fila actual de la tabla. En este caso, dado que el proceso se está iniciando, es la primera fila de la tabla.

  2. EARLIER([TotalSubcategorySales]) se evalúa en 156 167,88 $, la fila actual del bucle externo.

  3. La función FILTER devuelve ahora una tabla en la que todas las filas tienen un valor de TotalSubcategorySales mayor que 156 167,88 $ (que es el valor actual de EARLIER).

  4. 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. Es necesario agregar 1 para evitar que el valor de clasificación superior se convierta en un espacio en blanco.

  5. La fórmula de la columna calculada se desplaza a la siguiente fila y repite los pasos del 1 al 4. Estos pasos se repiten hasta que se alcanza el final de la tabla.

La función EARLIER siempre obtiene 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.

Función EARLIEST
Funciones de filtro