Conto2.3 – Gestione Entrate uscite in PowerShell & PowerQuery

Non so a voi ma l’idea che ogni mese debba ripetere una serie di procedure, spesso parecchio manuali per avere un quadro delle entrate ed uscite di casa mi rende sempre piuttosto annoiato e nervoso. In realtà ci sono già parecchi tool che possono essere utilizzati, come Excel ad esempio, solo che hanno delle limitazioni e la mia idea era partire da un sistema che una volta configurato necessiti poco più di un paio di click per aggiornarsi ogni mese.

Spoiler: l’impresa è ardua e non sono del tutto sicuro di esserci riuscito, ma se mi seguirete in tutto il post ed anche nei seguenti (penso e spero) potrete giudicare voi stessi.

Ma iniziamo dal requisito:

  1. Le fonti da cui arrivano le spese possono essere multiple: il mio conto corrente, quello di mia moglie, l’estratto conto della carta…
  2. I formati di questi files sono spesso differenti principalmente csv e xlsx ma potrebbero essercene anche altri
  3. Il contenuto che questi files hanno potrebbe essere differente: dalle colonne presenti al formato dei numeri e delle date
  4. L’idea è che tutti questi files eterogenei vengano acquisiti, mappati e convogliati in unico files Excel da cui si possa con facilità applicare delle Pivot e capire questo mese quanto sto spendendo verificando se una voce è più onerosa di altre.
  5. Infine che ogni mese, salvo caricare i nuovi files ed eventualmente correggere qualche mappatura, con un paio click si aggiorni tutta la baracca

Un punto molto importante riguarda il mapping. Già, perché così come sono le informazioni che ci arrivano dai files sono spesso poco significative. Mi spiego meglio: mi piacerebbe che se nel file fosse presente una linea “Pizzeria da Mario” questa finisca sotto una voce di spesa tipo “Pranzi e Cene” così che poi sia di più facile lettura o ancor meglio che tutte le pizzerie ci finiscano. Non basta quindi acquisire il dato in se per se ma operarne una trasformazione: quello che in gergo tecnico ed anche abbastanza NERD (si userà ancora questo termine? boh) si chiama ETL. L’acronimo deriva dall’inglese Extract, Transform and Load che per chi adora gli spaghetti come me si traduce in Estrai, Trasforma e Acquisci.

Come già accennavo all’inizio, ci sono fiumi di tools più o meno complessi e costosi che forniscono questo tipo di funzionalità, ne cito solo uno perché lo conosciamo tutti benissimo: si chiama Excel. Purtroppo però, probabilmente per mia ignoranza non sono riuscito ad individuare un unico tool economico che fornisse questo tipo di esperienza per cui ho optato per l’utilizzo combinato di due tool rispettivamente suddivisi nella maniera seguente:

  • Extract: Powershell
  • Transform: Powershell
  • Load: Excel

Un po’ più nel dettaglio: con Powershell verranno identificati i files sorgente, verranno letti e normalizzati i dati in essi contenuti effettuando anche il mapping tanto desiderato e verranno quindi tradotti in un formato definitivo. Questo formato definitivo verrà poi dato in pasto ad Excel così da fornirci una pivot che sia utilizzabile per i nostri scopi di monitoraggio e amministrazione e soprattutto fruibili anche a vostra moglie…