Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Avogadro - Marzo 21, 2020, 04:46:24 pm

Titolo: Tabelle Pivot
Inserito da: Avogadro - Marzo 21, 2020, 04:46:24 pm
Salve a tutti.

Allora, dovevo aggregare dei dati di excel  (nulla di che,  solo i dati di spesa di alcune sedi per dei servizi)  e vista la situazione che purtroppo c'è ingiro ,  i sistemi informativi non mi hanno potuto dare supporto.

Mai perdersi d'animo, un giro su youtube e con lo strumento "tabelle pivot" ho risolto in un attimo e in maniera egregia.

Ho fatto qualche ricerca sul web e le tabelle pivot furono un' invenzione, mi si passi il termine, dei primi fogli elettronici (mi pare lotus 1,2,3 )  alcuni decenni fa.

La maggior parte dei siti spiega come fare una tabella pivot in excel con tutti gli approfondimenti del caso corredati di esempi

Purtuttavia non ho trovato nulla su come funziona il meccanismo delle tabelle pivot, ossia che algoritmi ci stanno dietro ?  Alberi binari ? Matrici ?

Ne' ho trovato nulla di diverso dell' esempio del foglio elettronico ,  se  si volesse fare la stessa con il linguaggio sql o ancora meglio il pascal ?

Qualcuno dispone di letteratura in merito  ?

Questo delle tabelle pivot è un argomento interessante perché trasformano i dati in dei "contachilometri", mi si passi il termine, che descrivono così in maniera intuitiva come vanno i processi.

O meglio, consentono di dire al capo come vanno le cose.









Titolo: Re:Tabelle Pivot
Inserito da: nomorelogic - Marzo 21, 2020, 05:50:35 pm
come concetto, entro certi, limiti puoi paragonare le tabelle pivot alle "group by" dell'sql
Titolo: Re:Tabelle Pivot
Inserito da: Avogadro - Marzo 21, 2020, 09:55:01 pm
Si, è così.

Quel che mi intriga è come ottenere quel risultato.
Un' idea potrebbe essere l' uso di alberi binari, o perlomeno io affrontavo in illo tempore questi problemi così, con la ricorsione; certo, le mie non erano statistiche complesse ma per i comuni problemi aziendali funzionavano alla grande.

Il punto è che i sw ci stanno portando verso un mondo di black box: dove immetti dei dati ed escono delle statistiche, ma cosa succede all' interno della scatola non è dato saperlo.

Si certo, anche la programmazione ad oggetti funziona così, non è importante sapere come un oggetto fa un data cosa  ma è importante sapere cosa c' è in output dato , appunto, un dato input.

E' lo stesso nelle macchine .

Il punto è che gli algoritmi hanno sempre un fascino magnetico , mentre le black box no.
 
Titolo: Re:Tabelle Pivot
Inserito da: nomorelogic - Marzo 22, 2020, 02:57:56 am
infatti pensare e realizzare l'algoritmo è la cosa più divertente della programmazione

per generare una pivot la vedrei come una elaborazione della tabella A per ottenere la tabella B
la tabella B ha

quindi scansionando la tabella A bisogna estrarre i campi per comporre la chiave primaria della tabella B
se il record in B non esiste allora lo si crea
si aggiornano i campi di aggregazione ognuno calcolando la rispettiva funzione

può essere un buon punto di partenza


nomorelogic
Titolo: Re:Tabelle Pivot
Inserito da: Avogadro - Marzo 22, 2020, 06:57:33 pm
Concordo , pensare e implementare un algoritmo  è la parte intrigante dell' informatica, tant'è che le basi dell' informatica sono appunto algoritmi, strutture (e  la massima "essere astratti per poi poter essere concreti") .

 Mio personale opinione è che le basi le ha gettate Cartesio con il suo discorso sul metodo (che in sostanza è un' operazione di normalizzazione dei dati su cui lavorare ) .

Ma torniamo alle tabelle pivot: quella che ha descritto è un approccio basato su matrici, che ia ben chiaro va piu' che bene (basta che siano rispettate le regole di normalizzazione dei dati).

Il problema è che la cultura "sql" è scarsa in giro (ho un collega bravissimo in banche dati ed sql e ... e in azienda gli fanno fare tutt' altro, sempre per la storia della meritocrazia nel belpaese ma sorvoliamo) .

Succede puntualmente che ci si ritrova con una big tabella excel di dati e il capo che vuole sapere le statistiche .

Con le reminiscenze ho sempre affrontato questa situazione con gli alberi binari e la ricorsione, che superano in efficienza l' approccio matriciale.

In questi tristi giorni ceh dobbiamo stare in casa provero' a cimentarmi con entrambe gli approcci , giusto per non far arrugginire la passione per algoritmi e strutture dati, per questo avevo chiesto se qualcuno aveva qualche link sull' argomento .

Sinceramente vedere n video o siti che dicono tutti la stessa cosa, ossia come  dire al foglio elettronico di fare la tabella pivot mi deprime un attimo,; si la semplicità d'uso e quant'altro ma così si fomenta vedere e cose d'informatica come delle mere black box.





 

 
Titolo: Re:Tabelle Pivot
Inserito da: nomorelogic - Marzo 23, 2020, 09:42:44 am
albero nel senso che i figli di ogni nodo costituiscono il suo dettaglio?

Titolo: Re:Tabelle Pivot
Inserito da: Avogadro - Marzo 23, 2020, 09:12:49 pm
Ho usato il classico alberi binario, come quello di questo esempio qui :

http://www.francescofiora.it/albero_binario_pascal.php

Semplice, efficace, almeno per le cose che dovevo fare io .

E' che non ho conservato il codice  e mi tocca reimplementare tutto; all' epoca sul web si trovano ottime dispense e ottimi siti, ora pare sia passata una specie di apocalisse, si trova solo pubblicità.
Titolo: Re:Tabelle Pivot
Inserito da: nomorelogic - Marzo 24, 2020, 01:25:18 am
in free pascal c'è già un'ottima implementazione degli alberi
https://wiki.freepascal.org/AVL_Tree (https://wiki.freepascal.org/AVL_Tree)

dagli un'occhiata poiché secondo me osno già pronti all'uso per quello che devi fare ;)
Titolo: Re:Tabelle Pivot
Inserito da: Avogadro - Marzo 25, 2020, 07:20:28 pm
 :)

grazie

Ciao