Vai al contenuto principale Passa a contenuto complementare

Window - funzione di script

Window() esegue calcoli su più righe, producendo un valore per ogni riga separatamente.

Le funzioni Window possono essere utilizzate per eseguire operazioni quali:

  • Confronto tra un singolo valore numerico di una riga e la media, il massimo o il minimo della colonna.

  • Calcolo della classificazione di un singolo valore, all'interno della colonna o dell'intera tabella.

La funzione Window non modifica il numero di record della tabella, ma può comunque svolgere compiti simili a quelli delle funzioni di aggregazione, relazionali e di scala.

La funzione Window deve avere una cache all'interno dell'istruzione LOAD della tabella con cui si sta lavorando per l'aggiunta alla tabella. Ad esempio:

[Transactions]: Load *, Window(avg(Expression1),[Num]); LOAD TransLineID, TransID, "Num", Dim1, Dim2, Dim3, Expression1, Expression2, Expression3 FROM [lib://DataFiles/transactions.qvd] (qvd);FROM [lib://AttachedFiles/transactions.qvd] (qvd);

La finestra supporta funzioni generali, come l'arrotondamento o le operazioni numeriche di base. Ad esempio:

Load *, Round(Window(Sum(Salary),Department)) as SumSalary
Load *, Window(Sum(Salary),Department) + 5 as SumSalary

È possibile definire una finestra di scorrimento per la funzione Window. Imposta il numero di righe utilizzate quando si applica la funzione Window alla riga corrente. Ad esempio, è possibile impostare la finestra come le 3 righe precedenti e le 3 righe successive.

Sintassi:  

Window (input_expr, [partition1, partition2, ...], [sort_type, [sort_expr]],[filter_expr], [start_expr,end_expr])

Tipo di dati restituiti: un nuovo campo aggiunto alla tabella risultante creata dall'istruzione LOAD .

Argomenti:  

Argomenti
Argomento Descrizione
input_expr

L'espressione di ingresso calcolata e restituita dalla funzione. Deve essere un'espressione basata su un'aggregazione, come ad esempio Median(Salary). Ad esempio:

Window(Median(Salary)) as MedianSalary

L'input può anche essere il nome di un campo senza alcuna aggregazione. In questo caso, Window lo tratta come la funzione Only() applicata a tale campo. Ad esempio:

Window(Salary,Department) as WSalary

 

Opzionalmente, è possibile definire il partizionamento con l'espressione di input. Il partizionamento è uguale al raggruppamento ottenuto con la clausola group by, con la differenza che il risultato viene aggiunto come nuova colonna alla tabella di input. Il partizionamento non riduce il numero di record della tabella di input. È possibile definire più campi di partizione.

Esempio: 

LOAD Window(Max(Sales), City, 'ASC', OrderDate, Sales > 300)
+ AddMonths(OrderDate,-6) as MAX_Sales_City_Last_6_Mos, Window(Avg(Sales), City, 'ASC', OrderDate, City = 'Portland')
+ AddMonths(OrderDate,-6) as Avg_Sales_Portland_Last_6_Mos, Window(Max(Sales), City, 'ASC', OrderDate, Sales > 300)
+ AddMonths(OrderDate,-12) as MAX_Sales_City_Last_12_Mos; LOAD City, Sales, OrderDate FROM [lib://:DataFiles/Sales Data.xlsx]FROM [lib://AttachedFiles/Sales Data.xlsx] (ooxml, embedded labels, table is [Sales Data]);

partition1, partition2

Dopo input_expr, è possibile definire un numero qualsiasi di partizioni. Le partizioni sono campi che definiscono le combinazioni con cui applicare le aggregazioni. L'aggregazione viene applicata separatamente a ciascuna partizione. Ad esempio:

Window(Avg(Salary), Unit, Department, Country) as AvgSalary

In questo caso, le partizioni sono Unit, Department e Country.

Le partizioni non sono obbligatorie, ma sono necessarie per una corretta finestratura dei campi.

sort_type, [sort_expr]]

Opzionalmente, specificare il tipo di ordinamento e l'espressione di ordinamento. sort_type può avere solo uno di due valori:

  • ASC: ordine crescente.

  • DESC: ordine decrescente.

Se si definisce sort_type, è necessario definire un'espressione di ordinamento. È un'espressione che decide l'ordine delle righe all'interno di una partizione.

Ad esempio:

Window(RecNo(), Department, 'ASC', Year)

Nell'esempio precedente, i risultati all'interno della partizione sono ordinati in modo crescente in base al campo Year.

Nota informaticaIl tipo di ordinamento e l'espressione di ordinamento sono necessari solo per le funzioni RecNo e WRank.
filter_expr

Aggiungere facoltativamente un'espressione di filtro. È un'espressione booleana che decide se il record deve essere incluso o meno nel calcolo.

Questo parametro può essere omesso completamente e il risultato dovrebbe essere che non c'è alcun filtro.

Ad esempio:

Window(avg(Salary), Department, 'ASC', Age, EmployeeID=3 Or EmployeeID=7)
as wAvgSalary) as wAvgSalaryIfEmpIs3or7
[start_expr,end_expr]

Opzionalmente, impostare l'argomento per la funzionalità di finestra di scorrimento. Una finestra di scorrimento richiede due argomenti:

  • Espressione iniziale: il numero di righe precedenti alla riga corrente da includere nella finestra.

  • Espressione finale: il numero di righe dopo la riga corrente da includere nella finestra.

Ad esempio, se si desidera includere le 3 righe precedenti, la riga corrente e la riga successiva:

Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, -3, 1)
as WSalaryDepartment

Per indicare tutte le righe precedenti o tutte le righe successive, è possibile utilizzare la funzione Unbounded(). Ad esempio, per includere tutte le righe precedenti, la riga corrente e la riga successiva:

Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, UNBOUNDED(), 1)
as WSlidingSalaryDepartment

Ad esempio, per includere la terza riga dalla riga corrente e tutte le righe successive:

Window(concat(Text(Salary),'-'), Department, 'ASC', Age, Year>0, 3, UNBOUNDED())
as WSlidingSalaryDepartment

Esempio - Aggiunta di un campo contenente un'aggregazione

Esempio - Aggiunta di un campo contenente un'aggregazione filtrata per valori specifici

Esempio - Aggiunta di un campo con una finestra di scorrimento

Limitazioni

Window ha le seguenti limitazioni:

  • Window è una funzione che richiede molte risorse, soprattutto in termini di consumo di memoria.

  • Le espressioni del grafico non supportano Window.

  • Non è possibile nidificare le funzioni Window all'interno di altre funzioni Window.

  • Non è possibile utilizzare Window all'interno di una funzione di aggregazione.

  • Window deve essere in grado di analizzare l'intera tabella.

  • Non è possibile utilizzare WRank(), RecNo() e RowNo() con Window quando si utilizza la funzione finestra di scorrimento.

Hai trovato utile questa pagina?

Se riscontri problemi con questa pagina o con il suo contenuto – un errore di battitura, un passaggio mancante o un errore tecnico – facci sapere come possiamo migliorare!

Partecipa al programma Analytics Modernization

Remove banner from view

Modernizza senza compromettere le tue preziose app QlikView con il programma Analytics Modernization. Fare clic qui per maggiori informazioni o per contattarci: ampquestions@qlik.com