Funzione EARLIER (DAX)
Restituisce il valore corrente della colonna specificata in un passaggio di valutazione esterno della colonna menzionata.
EARLIER è utile per i calcoli annidati in cui si desidera utilizzare un determinato valore come input e produrre calcoli basati su tale input. In Microsoft Excel è possibile eseguire tali calcoli solo all'interno del contesto della riga corrente, tuttavia in PowerPivot è possibile archiviare il valore dell'input e successivamente eseguire il calcolo utilizzando i dati dell'intera tabella.
La funzione EARLIER viene utilizzata soprattutto nel contesto delle colonne calcolate.
Sintassi
EARLIER(<column>, <number>)
Parametri
Termine |
Definizione |
---|---|
column |
Colonna o espressione che restituisce una colonna. |
num |
(Facoltativo) Numero positivo per il passaggio di valutazione esterno. Il livello di valutazione esterno successivo è rappresentato da 1, due livelli successivi sono rappresentati da 2 e così via. Quando viene omesso, il valore predefinito è 1. |
Valore proprietà/Valore restituito
Valore corrente della riga, da column, in corrispondenza di number, dei passaggi di valutazione esterni.
Eccezioni
Descrizione degli errori
Osservazioni
EARLIER ha esito positivo se è presente un contesto di riga antecedente all'inizio dell'analisi di tabella. In caso contrario, restituisce un errore.
Le prestazioni di EARLIER potrebbero risultare rallentate in quanto, teoreticamente, la funzione potrebbe dovere eseguire un numero di operazioni simile al numero complessivo di righe (nella colonna) moltiplicato per lo stesso numero (a seconda della sintassi dell'espressione). Se, ad esempio, sono presenti 10 righe nella colonna, potrebbero essere necessarie circa 100 operazioni. Se sono presenti 100 righe potrebbero venire eseguite quasi 10.000 operazioni.
Nota
In pratica, il motore VertiPaq esegue le ottimizzazioni per ridurre il numero effettivo di calcoli, ma è necessario prestare attenzione in caso di creazione di formule che comportano la ricorsione.
Esempio
Per illustrare l'utilizzo di EARLIER, è necessario compilare uno scenario per il calcolo di un valore di classificazione e quindi utilizzare tale valore in altri calcoli.
L'esempio seguente è basato sulla tabella semplice ProductSubcategory, in cui sono indicate le vendite totali per ogni elemento ProductSubcategory.
La tabella finale, inclusa la colonna relativa alla classificazione, è illustrata di seguito.
ProductSubcategoryKey |
EnglishProductSubcategoryName |
TotalSubcategorySales |
SubcategoryRanking |
---|---|---|---|
18 |
Bib-Shorts |
$156,167.88 |
18 |
26 |
Bike Racks |
$220,720.70 |
14 |
27 |
Bike Stands |
$35,628.69 |
30 |
28 |
Bottles and Cages |
$59,342.43 |
24 |
5 |
Bottom Brackets |
$48,643.47 |
27 |
6 |
Brakes |
$62,113.16 |
23 |
19 |
Caps |
$47,934.54 |
28 |
7 |
Chains |
$8,847.08 |
35 |
29 |
Cleaners |
$16,882.62 |
32 |
8 |
Cranksets |
$191,522.09 |
15 |
9 |
Derailleurs |
$64,965.33 |
22 |
30 |
Fenders |
$41,974.10 |
29 |
10 |
Forks |
$74,727.66 |
21 |
20 |
Gloves |
$228,353.58 |
12 |
4 |
Handlebars |
$163,257.06 |
17 |
11 |
Headsets |
$57,659.99 |
25 |
31 |
Helmets |
$451,192.31 |
9 |
32 |
Hydration Packs |
$96,893.78 |
20 |
21 |
Jerseys |
$699,429.78 |
7 |
33 |
Lights |
|
36 |
34 |
Locks |
$15,059.47 |
33 |
1 |
Mountain Bikes |
$34,305,864.29 |
2 |
12 |
Mountain Frames |
$4,511,170.68 |
4 |
35 |
Panniers |
|
36 |
13 |
Pedals |
$140,422.20 |
19 |
36 |
Pumps |
$12,695.18 |
34 |
2 |
Road Bikes |
$40,551,696.34 |
1 |
14 |
Road Frames |
$3,636,398.71 |
5 |
15 |
Saddles |
$52,526.47 |
26 |
22 |
Shorts |
$385,707.80 |
10 |
23 |
Socks |
$28,337.85 |
31 |
24 |
Tights |
$189,179.37 |
16 |
37 |
Tires and Tubes |
$224,832.81 |
13 |
3 |
Touring Bikes |
$13,334,864.18 |
3 |
16 |
Touring Frames |
$1,545,344.02 |
6 |
25 |
Vests |
$240,990.04 |
11 |
17 |
Wheels |
$648,240.04 |
8 |
Creazione di un valore di classificazione
Un modo per ottenere un valore di classificazione per un determinato valore consiste nel contare il numero di righe, nella stessa tabella, con un valore più grande (o più piccolo) di quello confrontato. Questa tecnica restituisce un valore blank o zero per il valore più alto nella tabella, mentre valori uguali avranno lo stesso valore di classificazione e il valore successivo (dopo i valori uguali) avrà un valore di classificazione non consecutivo. Vedere l'esempio successivo.
Utilizzando la formula seguente viene creata una nuova colonna calcolata, SubCategorySalesRanking.
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
Nei passaggi seguenti viene descritto il metodo di calcolo in modo più dettagliato.
La funzione EARLIER ottiene il valore di TotalSubcategorySales per la riga corrente nella tabella. In questo caso, poiché il processo è all'inizio, si tratta della prima riga nella tabella
EARLIER([TotalSubcategorySales]) restituisce $156,167.88, la riga corrente nel ciclo esterno.
La funzione FILTER restituisce ora una tabella in cui tutte le righe hanno di un valore di TotalSubcategorySales più grande di $156,167.88 (che è il valore corrente per EARLIER).
La funzione COUNTROWS conta le righe della tabella filtrata e assegna tale valore alla nuova colonna calcolata nella riga corrente più 1. L'aggiunta di 1 è necessaria per impedire che il valore con classificazione più alta diventi un valore blank.
La formula della colonna calcolata passa alla riga successiva e vengono ripetuti i passaggi da 1 a 4. Questi passaggi vengono ripetuti fino al raggiungimento della fine della tabella.
La funzione EARLIER consente sempre di ottenere il valore della colonna precedente all'operazione sulla tabella corrente. Se è necessario ottenere un valore dal ciclo prima di tale operazione, impostare il secondo argomento su 2.