Le window function sono un ottimo metodo per calcolare, ad esempio, dei subtotali, ma senza dover ricorrere a sotto-query o a common table expression.
Nello sviluppo di un ETL, non tutte le logiche di trasformazione dei dati possono essere semplici. Esistono casi dove sono necessari – o quantomeno utili – dei calcoli che, ad uno sviluppatore non esperto del linguaggio SQL, potrebbero apparire di difficile implementazione. Si prenda il caso in cui, presa una tabella, sia necessario identificare dei sottoinsiemi di suoi record, e che occorra identificare una sotto-logica che venga applicata “parallelamente” a ciascuno di questi sottoinsiemi. Potrebbe essere necessario identificare un ordinamento interno a questi sottoinsiemi, e magari potrebbe essere necessario che ciascun record ragioni sull’intero suo sottoinsieme, oppure su uno specifico record dello stesso, magari il record precedente, magari il successivo. Come si può fare una cosa del genere?
Uno strumento che io trovo essenziale per lo sviluppo della Business Intelligence, quando si tratta delle logiche di trasformazione dei dati in ETL, sono le window function del linguaggio d’interrogazione. Le window function sono funzioni SQL che vengono eseguite per tutti i record di una tabella, ma la cui logica si applica a subset distinti di quella tabella. Le window function sono un ottimo metodo per calcolare, ad esempio, dei subtotali, ma senza dover ricorrere a sotto-query o a common table expression (CTE). Sono anche necessarie per eseguire funzioni aritmetiche progressive (o cumulative, in inglese running) quali somma, media, conteggio, mino e massimo. Oppure possono essere usate per calcolare il ranking delle righe. Infine, sono necessarie per eseguire delle logiche di prelievo del record precedente o successivo al record sulla quale si sta eseguendo il calcolo.
Fonte notizia
www.datamaze.it blogs post window-functions-l-asso-nella-manica-del-bi-developer