fill-down con le espressioni di QGIS↵
Il fill-down
è un filtro molto usato da chi lavora con i dati e risolve il segunete problema: "Se un dato record di una tabella ha un valore mancante per un dato campo, riempilo con il valore corrispondente da un record precedente, se presente". Molti tool lo hanno implementato come Visidata, Miller, OpenRifine, GeoPandas ecc...; vediamo come ottenere questa funzione usando solo le espressioni di QGIS.
Tabella di esempio:
data | nuts2 | zona | zona_fill |
---|---|---|---|
2020-11-09T17:00:00 | ITF1 | ||
2020-11-10T17:00:00 | ITF1 | arancione | arancione |
2020-11-11T17:00:00 | ITF1 | arancione | |
2020-11-12T17:00:00 | ITF1 | arancione | |
2020-11-20T17:00:00 | ITF1 | arancione | |
2020-11-21T17:00:00 | ITF1 | arancione | |
2020-11-22T17:00:00 | ITF1 | rossa | rossa |
2020-11-23T17:00:00 | ITF1 | rossa | |
2020-11-24T17:00:00 | ITF1 | rossa | |
2020-12-04T17:00:00 | ITF1 | rossa | |
2020-11-09T17:00:00 | ITF5 | rossa | |
2020-11-10T17:00:00 | ITF5 | arancione | arancione |
2020-11-11T17:00:00 | ITF5 | arancione | |
2020-11-12T17:00:00 | ITF5 | arancione | |
2020-11-13T17:00:00 | ITF5 | arancione | |
2020-11-14T17:00:00 | ITF5 | arancione | |
2020-11-24T17:00:00 | ITF5 | arancione | arancione |
2020-11-25T17:00:00 | ITF5 | arancione | |
2020-11-26T17:00:00 | ITF5 | arancione |
come ottenere la colonna zona_fill
a partire dalla colonna zona
: in pratica occorre popolare le celle con il primo valore non nullo partendo dall'alto e procedendo verso il basso.
Ecco una soluzione:
- crare il campo
zona_fill
come testo, lunghezza 20; - con il calcolatore di campi, aggiornale il campo appena creato con l'espressione:
PS: potremmo direttamente aggiornare il campo zona
senza necessariamente creare un nuovo campo, usando questa espressione:
Nel linguaggio umano significa: partendo dalla prima riga ($id=1
) della tabella, se il campo zona
è non vuoto allora popolalo con il valore corrispondente se invece è vuoto (NULL
) prendi il valore corrispondente alla riga precedente ($id -1
).
Il quesito è stato posto in lista QGIS-user internazionale e la soluzione è di Andrea Giudiceandrea (grazie mille)
Nella sezione Funzioni, Gruppo Custom è presente la funzione personalizzata fill-down creata da Giulio Fattori.
Funzioni e variabili utilizzate: