EARLIER
Si applica a:colonna calcolatatabella calcolataMeasurecalcolo visivo
Restituisce il value 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 value come input and 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 value dell'input and 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 or espressione che viene risolta in una colonna. |
num |
(Facoltativo) Numero positivo al passaggio di valutazione esterno. Il livello di valutazione next è rappresentato da 1; due livelli sono rappresentati da 2 and così via. Se omesso value predefinito è 1. |
Restituisce value
Il value corrente di riga, da column
, in corrispondenza del number
dei passaggi di valutazione esterni.
Eccezioni
Descrizione degli errori
Osservazioni
EARLIER
ha esito positivo if è presente un contesto di riga prima dell'inizio dell'analisi della tabella. In caso contrario, restituisce un error.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, if si dispone di 10 righe nella colonna, potrebbero essere necessarie circa 100 operazioni; if si dispone di 100 righe, potrebbero essere eseguite fino a 10.000 operazioni.Questa funzione è not supportata per l'uso in modalità DirectQuery quando viene usata nelle colonne calcolate or 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 rankvalueand quindi usa tale rankvalue 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 and 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 and 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 RankValue
Un modo per ottenere un rankvalue per un determinato value in una riga consiste nell'count numero di righe, nella stessa tabella, con un value più grande (or più piccolo) rispetto a quello confrontato. Questa tecnica restituisce un blank zero orvalue per il value più alto nella tabella, mentre uguale values avrà lo stesso rankvalueandnextvalue (dopo l'uguale values) avrà un rankvaluenon consecutivo. Vedere il sample di seguito.
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 value di TotalSubcategorySales per la riga corrente nella tabella. In questo caso, poiché il processo viene avviato, si tratta della riga first nella tabellaEARLIER([TotalSubcategorySales])
restituisce $156.167.88, la riga corrente nel ciclo esterno.La funzione
FILTER
now restituisce una tabella in cui all righe hanno un value di TotalSubcategorySales maggiore di $ 156.167.88 (ovvero il value corrente perEARLIER
).La funzione
COUNTROWS
conta le righe della tabella filtrata and assegna tale value alla nuova colonna calcolata nella riga corrente più 1. L'aggiunta di 1 è necessaria per impedire che i value classificati più in alto diventino un Blank.La formula della colonna calcolata passa alla riga nextand ripete i passaggi da 1 a 4. Questi passaggi vengono ripetuti fino al raggiungimento della fine della tabella.
La funzione EARLIER
otterrà sempre il value della colonna prima dell'operazione di tabella corrente.
If è necessario ottenere un value dal ciclo prima di questo, impostare l'argomento second su 2.