Skip to content

lochness-labs/etl-refinement

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ETL Refinement for Data Lakes

Questo repository include il codice per il processo di refinement dei dati già acquisiti dalle precedenti fasi di ingestione ed eventualmente ripuliti dalla fase di cleaning.

Il progetto consente di creare le versioni consolidate di alcune view (in tabelle iceberg), oltre che il ricaricamento delle view stesse:

  • src/sql_create/*.sql -> definizione delle tabelle o viste
  • src/sql_load/*.sql -> definizione dell'Insert/Merge (iceberg)

NOTA BENE:

I file SQL vengono caricati automaticamente SOLO se hanno l'estensione .sql; quindi per disabilitare un file è sufficiente rinominare l'estensione (o chiaramente rimuovere il file per una rimozione totale).

I file vengono caricati in ordine alfabetico, quindi per mantenere la consequenzialità bisogna far precedere un numero al nome del file.

Vengono deployate due State Machine:

  • etl-refinement-{STAGE}-CreateTables
  • etl-refinement-{STAGE}-LoadData

dove {STAGE} sarà "prod", "dev", ecc, a seconda dell'ambiente.

La prima CreateTables si occuperà di creare le viste e le tabelle sulla base dei codice presenti all'interno dei file SQL.

La seconda LoadData può:

  • Giornaliera: per inserire la partizione giornaliera.
  • Manuale: questa applica gli insert/merge per range di date (a seconda dei parametri forniti)
  • Riparatrice: questa legge da una tabella DynamoDB le partizioni che devono essere riprocessate (a causa dell'arrivo di misure su partizioni vecchie) e funziona in modo analogo a quella manuale (con end_date = start_date).

Per avviare la versione manuale di LoadData è necessario passare il parametro

{
    "history": "true",
    "start_date": "2023-08-01",
    "end_date": "2023-08-04",
}

dove "end_date" è opzionale e se non fornito verrà usato l'end_date definito nel codice ("ieri").

Per alcune tabelle che sono indipendenti dalla data e che sostanzialmente sono una lastversion del dato, non è necessario eseguirle N volte (a seconda del range start-end). Per escluderle da questa procedura ed essere eseguite solo una volta per run è necessario aggiungere "JUST-ONCE" nel nome del file SQL. Natare che non sono state separate in cartelle diverse (rispetto a quelle che devono essere eseguite N volte) per poter eventualmente preservare l'ordine di esecuzione.

License

This project is licensed under the Apache License 2.0.

See LICENSE for more information.


This is a project created by Linkalab.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages