1. Concepte de bază

Înțelegi mai întâi cele 3 întrebări de bază?

1. Ce este Dune Analytics?

Pur și simplu, este:

1. Echipa Dune Analytics a curățat datele de pe blockchain pentru a forma date structurate și le-a stocat în depozitul de date, apoi a creat un instrument care să permită persoanelor cu anumite cunoștințe de bază SQL să interogheze în mod flexibil datele în funcție de propriile nevoi.

2. Platforma oferă, de asemenea, capabilități de vizualizare a datelor, iar datele găsite pot fi ușor transformate în grafice și tablouri de bord.

2. Ce este un depozit de date?

În termeni umani, înseamnă că pentru nevoile statisticilor de date, unele date sunt stocate pe categorii, iar purtătorul de stocare este [tabelul de date]. O serie de [tabele de date] care se concentrează pe un anumit subiect sau subiecte împreună este un depozit de date.

Observa:

Datele de aici pot fi date de rezultat (cum ar fi statisticile zilnice privind volumul tranzacțiilor pentru o anumită pereche de tranzacționare de când Uniswap a intrat online)

Pot fi, de asemenea, date de proces (detalii ale fiecărei înregistrări de tranzacție a unei anumite perechi de tranzacționare de când Uniswap a intrat online: cine a inițiat-o, A pentru B, timpul tranzacției, tx_hash, valoarea tranzacției...)

3. Ce este SQL?

Să presupunem că vrei să mănânci ciocolată crocantă cu orez, dar nu poți ieși în oraș, așa că suni un alergător și îi spui: am nevoie de o cutie de ciocolată, marca lui este orez crocant. Am făcut o comisie la supermarket să cumpăr niște ciocolată și am trimis-o acasă.

Prin analogie, SQL este ceea ce ați spus, iar Dune Analytics este comisionul. Vă permite să comunicați cu depozitul de date și să mutați datele din depozitul de date.

2. Cum arată un tabel de date?

Vă puteți gândi la un tabel ca la o foaie Excel, fiecare conținând date diferite. Luați tabelul meu cel mai frecvent utilizat ca exemplu erc20 „ERC20_evt_Transfer” (jurnalul de transfer al jetoanelor ERC20).

Câmpurile tabelului sunt după cum urmează

  • din: din ce portofel se transferă moneda

  • către: în ce portofel a fost transferată moneda

  • valoare: câtă valută a fost transferată

  • contract_address: moneda care este transferată (adresa contractului a jetonului ERC20, care poate fi găsită de obicei pe CMC)

  • evt_tx_hash: Care este hash-ul tx al acestui transfer?

  • evt_index: Aceste date sunt numărul de tranzacție al acestei tranzacții.

  • evt_block_time: ora la care tranzacția a fost ambalată

  • evt_block_number: Înălțimea blocului în care este împachetată tranzacția

3. Cum se scrie SQL?

1. Structura de bază

Cea mai de bază structură sau sintaxă a SQL este

  • selectați : ce câmp să luați?

  • din : De la ce masă?

  • unde: Care sunt constrângerile?

De exemplu, consultați figura următoare pentru o explicație detaliată.

-------Linie de divizare a codului-------

selecta

"din"

,"la"

,"valoare"

de la erc20."ERC20_evt_Transfer"

unde „de la” = „\xb1a2b43a7433dd150bb82227ed519cd6b142d382”

și „adresa_contract” = „\xe6ee69495b571e1042f760d7f34009164aff87a2”

-------Linie de divizare a codului-------

Explicație suplimentară

  • În ceea ce privește adresa portofel/contractului sau hash-ul tx, se face un strat de procesare atunci când este stocat efectiv în baza de date: toate [0] din [0x] sunt înlocuite cu [\]

  • Selectați mai multe câmpuri separate prin virgule [engleză] Virgulele și ghilimelele implicate în SQL trebuie să fie în format engleză, altfel va fi raportată o eroare.

  • Dacă există mai multe condiții după [unde], utilizați [și] pentru a conecta aceste condiții atunci când doriți să obțineți intersecția mai multor condiții și utilizați [sau] pentru a le conecta când doriți să obțineți uniunea.

  • Numele de la citat este un nume de câmp din tabel.

Rezultatul final este prezentat în figura de mai jos. Există doar 4 date de tranzacție care îndeplinesc condițiile de mai sus.

2. Funcții agregate

Funcții comune de agregare

  • conta()

    Numărați, calculați numărul total de rânduri care îndeplinesc cerințele Dacă trebuie să eliminați duplicatele pe baza unui anumit câmp, cum ar fi [la], puteți utiliza count(distinct „la”).

  • sumă()

    Pentru a găsi suma, de exemplu, pentru a calcula cât a transferat ETH Sun către Binance în acest an, trebuie să folosim sum() pentru a adăuga

  • max()

    Luați valoarea maximă De exemplu, pentru a calcula cât de mult a transferat ETH Sun către Binance în acest an, trebuie să utilizați max() pentru a calcula.

  • min()

    Minim

  • medie()

    • Luați media

Funcția de agregare este de a extrage toate datele în condițiile de restricție unde și apoi de a le agrega folosind funcția

Pentru comoditate, să schimbăm adresa_contract

-------Linie de divizare a codului-------

selecta

"din"

,"la"

,"valoare"

de la erc20."ERC20_evt_Transfer"

unde „de la” = „\xb1a2b43a7433dd150bb82227ed519cd6b142d382”

și „adresa_contract” = „\x5ca9a71b1d01849c0a95490cc00559717fcf0d1d”

-------Linie de divizare a codului-------

Rezultatele sunt următoarele: