EARLIER
Restituisce il valore corrente della colonna specificata in un passaggio di valutazione esterno della colonna indicata.
EARLIER è utile per i calcoli annidati in cui si vuole usare 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 DAX è possibile archiviare il valore dell'input e quindi eseguire il calcolo usando i dati dell'intera tabella.
EARLIER viene usato principalmente nel contesto delle colonne calcolate.
Sintassi
EARLIER(<column>, <number>)
Parametri
Termine | Definizione |
---|---|
column |
Colonna o espressione che viene risolta in una colonna. |
num |
(Facoltativo) Numero positivo al passaggio di valutazione esterno. Il livello di valutazione successivo è rappresentato da 1; due livelli out sono rappresentati da 2 e così via. Se omesso il valore predefinito è 1. |
Valore restituito
Valore corrente della riga, da column
, in corrispondenza del number
dei passaggi di valutazione esterni.
Eccezioni
Descrizione degli errori
Osservazioni
EARLIER
ha esito positivo se è presente un contesto di riga prima dell'inizio dell'analisi della tabella. In caso contrario, restituisce un errore.Le prestazioni di
EARLIER
potrebbero essere lente perché, teoricamente, potrebbe essere necessario eseguire una serie di operazioni vicine al numero totale di righe (nella colonna) volte allo stesso numero (a seconda della sintassi dell'espressione). Ad esempio, se nella colonna sono presenti 10 righe, potrebbero essere necessarie circa 100 operazioni; se sono presenti 100 righe, potrebbero essere eseguite fino a 10.000 operazioni.Questa funzione non è supportata per l'uso in modalità DirectQuery quando viene usata nelle colonne calcolate o nelle regole di sicurezza a livello di riga.
Nota
In pratica, il motore di analisi in memoria VertiPaq esegue ottimizzazioni per ridurre il numero effettivo di calcoli, ma è consigliabile prestare attenzione durante la creazione di formule che comportano la ricorsione.
Esempio
Per illustrare l'uso di EARLIER, è necessario creare uno scenario che calcola un valore di classificazione e quindi usa tale valore di classificazione in altri calcoli.
L'esempio seguente si basa su questa semplice tabella, ProductSubcategory
, che mostra le vendite totali per ogni ProductSubcategory.
La tabella finale, inclusa la colonna di rango, è illustrata di seguito.
ProductSubcategoryKey | EnglishProductSubcategoryName | TotalSubcategorySales | SubcategoryRanking |
---|---|---|---|
18 | Bib-Shorts | $ 156,167,88 | 18 |
26 | Rack per biciclette | $ 220.720,70 | 14 |
27 | Stand per biciclette | $ 35.628,69 | 30 |
28 | Bottiglie e gabbie | $ 59,342,43 | 24 |
5 | Parentesi quadre inferiori | $ 48.643,47 | 27 |
6 | Freni | $62.113.16 | 23 |
19 | Tappi | $ 47.934,54 | 28 |
7 | Catene | $8.847.08 | 35 |
29 | Pulitori | $ 16.882,62 | 32 |
8 | Set di gradi | $ 191.522,09 | 15 |
9 | Deragliatori | $ 64.965,33 | 22 |
30 | Parafanghi | $ 41.974,10 | 29 |
10 | Forchette | $ 74.727,66 | 21 |
20 | Guanti | $ 228,353,58 | 12 |
4 | Manubrio | $163.257.06 | 17 |
11 | Cuffie | $ 57.659,99 | 25 |
31 | Caschi | $451,192,31 | 9 |
32 | Pacchetti di idratazione | $ 96.893,78 | 20 |
21 | Maglie | $ 699,429,78 | 7 |
33 | Fanaleria | 36 | |
34 | Serrature | $ 15.059,47 | 33 |
1 | Mountain Bikes | $34.305.864.29 | 2 |
12 | Montature | $ 4.511.170,68 | 4 |
35 | Borse | 36 | |
13 | Pedali | $ 140,422,20 | 19 |
36 | Pompe | $ 12.695,18 | 34 |
2 | Biciclette da strada | $ 40.551.696,34 | 1 |
14 | Telai stradali | $ 3.636.398,71 | 5 |
15 | Selle | $ 52.526,47 | 26 |
22 | Calzoncini | $ 385,707,80 | 10 |
23 | Calzini | $ 28.337,85 | 31 |
24 | Calzamaglia | $ 189,179,37 | 16 |
37 | Pneumatici e tubi | $ 224.832,81 | 13 |
3 | Touring Bikes | $13.334.864.18 | 3 |
16 | Telai da turismo | $1.545.344.02 | 6 |
25 | Gilet | $ 240.990,04 | 11 |
17 | Ruote | $648,240,04 | 8 |
Creazione di un valore di classificazione
Un modo per ottenere un valore di rango per un determinato valore in una riga consiste nel contare il numero di righe, nella stessa tabella, con un valore maggiore (o minore) rispetto a quello confrontato. Questa tecnica restituisce un valore vuoto o zero per il valore più alto nella tabella, mentre valori uguali avranno lo stesso valore di rango e il valore successivo (dopo i valori uguali) avrà un valore di rango non consecutivo. Vedere l'esempio seguente.
Una nuova colonna calcolata, SubCategorySalesRanking, viene creata usando la formula seguente.
= COUNTROWS(FILTER(ProductSubcategory, EARLIER(ProductSubcategory[TotalSubcategorySales])<ProductSubcategory[TotalSubcategorySales]))+1
I passaggi seguenti descrivono 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 viene avviato, è la prima riga della tabellaEARLIER([TotalSubcategorySales])
restituisce $156.167.88, la riga corrente nel ciclo esterno.La funzione
FILTER
restituisce ora una tabella in cui tutte le righe hanno un valore TotalSubcategorySales maggiore di $156.167.88 (ovvero il valore corrente perEARLIER
).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 classificato più alto diventi vuoto.La formula della colonna calcolata passa alla riga successiva e ripete i passaggi da 1 a 4. Questi passaggi vengono ripetuti fino al raggiungimento della fine della tabella.
La funzione EARLIER
otterrà sempre il valore della colonna prima dell'operazione di tabella corrente. Se è necessario ottenere un valore dal ciclo prima, impostare il secondo argomento su 2.