1.Che cos'è Dune Analytics?
Prima di tutto, comprendere tre domande fondamentali?
1.Che cos'è Dune Analytics?
In parole semplici:
1.Il team di Dune Analytics ripulisce i dati sulla blockchain e li memorizza in un data warehouse strutturato, poi crea uno strumento che consente a chi ha una certa conoscenza di SQL di interrogare i dati secondo le proprie necessità.
2.La piattaforma offre anche capacità di visualizzazione dei dati, i dati estratti possono essere facilmente trasformati in grafici e dashboard
2.Che cos'è un data warehouse?
In parole semplici, è necessario raggruppare e memorizzare alcuni dati per esigenze statistiche; il vettore di memorizzazione è la 【tabella dei dati】. Una serie di 【tabelle dei dati】 relative a un certo tema è un data warehouse.
Nota:
I dati qui possono essere dati di risultato (ad esempio, il volume di scambi giornalieri di una coppia di scambi da quando Uniswap è stato lanciato)
Possono anche essere dati di processo (dettagli di ogni transazione effettuata su una coppia di scambi da quando Uniswap è stato lanciato: chi ha avviato, scambiare A con B, ora di transazione, tx_hash, quantità di transazione...)
3.Che cos'è SQL?
Immagina di voler mangiare cioccolato croccante, ma non puoi uscire, quindi chiami un fattorino e dici: ho bisogno di una scatola di cioccolato, il suo marchio è croccante. Il fattorino va al supermercato e ti porta il cioccolato a casa.
Paragonando, SQL è quella frase che dici, Dune Analytics è un fattorino che ti consente di comunicare con il data warehouse e di estrarre i dati dal data warehouse per te.
2.Com'è una tabella dei dati?
Puoi pensare a una tabella come a un singolo Excel, ogni Excel contiene dati diversi. Prendendo come esempio la tabella che uso più frequentemente erc20."ERC20_evt_Transfer" (registro delle transazioni dei token ERC20)

I campi della tabella sono i seguenti
from: Da quale portafoglio è stato trasferito il token
to: A quale portafoglio è stato trasferito il token
value: Quanto token è stato trasferito
contract_address: Quale token è stato trasferito (indirizzo del contratto del token ERC20, che normalmente puoi cercare su CMC)
evt_tx_hash: Qual è l'hash tx di questo trasferimento
evt_index: Questa voce è la n-esima transazione di questo scambio, un'operazione può avere più voci, ad esempio quando scambi su uniswap usando APE per ottenere AAVE, potrebbe essere suddiviso in 2 voci APE→ETH, ETH→AAVE
evt_block_time: L'orario in cui la transazione è stata inclusa nel blocco
evt_block_number: Il numero del blocco in cui la transazione è stata inclusa
3.Come si scrive SQL?
1.Struttura di base
La struttura o la sintassi di base di SQL è
select: Quale campo?
from: Da quale tabella?
where: Quali sono le condizioni di limitazione?
Facciamo un esempio 🌰, per una spiegazione dettagliata vedere l'immagine sotto
-------Linea di separazione del codice-------
select
"from"
,"to"
,"value"
from erc20."ERC20_evt_Transfer"
where "from" = '\xb1a2b43a7433dd150bb82227ed519cd6b142d382'
and "contract_address" = '\xe6ee69495b571e1042f760d7f34009164aff87a2'
-------Linea di separazione del codice-------

Un'ulteriore nota
Per quanto riguarda l'indirizzo del portafoglio/contratto o l'hash tx, in realtà nel database è stata effettuata una trasformazione: tutti i "0" all'interno di "0x" sono stati sostituiti con "\"
Selezionare più campi separati da virgole in inglese; le virgole e le virgolette in SQL devono essere in formato inglese, altrimenti verrà restituito un errore
Se ci sono più condizioni dopo il 【where】 e si desidera prendere l'intersezione di più condizioni, utilizzare 【and】 per collegare queste condizioni, per l'unione utilizzare 【or】
La "from" con le virgolette è il nome di un campo nella tabella, mentre "from" davanti al nome della tabella è una parola chiave della sintassi SQL
I risultati finali sono mostrati nell'immagine sottostante, ci sono solo 4 transazioni che soddisfano le condizioni sopra indicate

2.Funzioni di aggregazione
Funzioni di aggregazione comuni
count()
Conteggio, per calcolare quante righe soddisfano i requisiti, se è necessario rimuovere i duplicati in base a un certo campo, ad esempio rimuovendo i duplicati in base a 【to】, si utilizza count(distinct “to“ )
sum()
Somma, ad esempio calcolare quanto ETH ha trasferito Sun a Binance dall'inizio dell'anno, è necessario utilizzare sum() per sommare
max()
Prendere il massimo, ad esempio calcolare quanto ETH ha trasferito Sun a Binance nel massimo singolo trasferimento dall'inizio dell'anno, è necessario utilizzare max() per calcolare
min()
Prendere il minimo
avg()
Prendere la media
Le funzioni di aggregazione servono a estrarre tutti i dati in base alle condizioni di limitazione del where e poi a raggrupparli utilizzando le funzioni
Qui per facilitare l'esempio 🌰, cambiamo l'indirizzo del contratto
-------Linea di separazione del codice-------
select
"from"
,"to"
,"value"
from erc20."ERC20_evt_Transfer"
where "from" = '\xb1a2b43a7433dd150bb82227ed519cd6b142d382'
and "contract_address" = '\x5ca9a71b1d01849c0a95490cc00559717fcf0d1d'
-------Linea di separazione del codice-------
I risultati sono mostrati nell'immagine sotto:
