Condividi tramite


EARLIER

Si applica a:colonna calcolatatabella calcolata calcolo visivomisura

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.

  1. 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 tabella

  2. EARLIER([TotalSubcategorySales]) restituisce $156.167.88, la riga corrente nel ciclo esterno.

  3. 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 per EARLIER).

  4. 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.

  5. 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.

EARLIEST funzioneFunzioni di filtro