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: