Selamat datang di Buku Ejaan. Ucapkan mantra ajaib untuk menjinakkan blockchain.
Spellbook adalah lapisan interpretasi Dune, dibuat untuk dan oleh komunitas.
Buku Ejaan adalah proyek dbt. Setiap model adalah kueri SQL sederhana dengan sedikit gula sintaksis (dimaksudkan untuk menangkap dependensi dan membantu membuat tabel yang dihasilkan), dan melakukan sebagian kecil tugas untuk mengubah catatan mentah dan yang didekodekan menjadi data blockchain yang dapat diinterpretasikan.
Spellbook dibuat untuk dan oleh komunitas, Anda dipersilakan untuk menutup kesenjangan yang Anda temukan dengan mengirimkan PR, membuat masalah untuk mengusulkan perubahan kecil atau melacak bug, atau berpartisipasi dalam diskusi untuk membantu mengarahkan masa depan proyek ini.
Spellbook memiliki banyak bagian yang bergerak & prinsip desain khusus untuk berkontribusi pada lapisan interpretasi data Dune. Untuk mempersiapkan kontributor agar berpartisipasi secara efisien, direktori dokumen berisi serangkaian topik yang luas untuk menjawab pertanyaan umum & memberikan informasi tentang alasan pengaturan repo sebagaimana adanya. Silakan baca & rujuk bagian ini ketika mengembangkan di Spellbook dan pertanyaan pun muncul. Tim Dune juga akan menautkan kembali ke dokumen ini untuk sering menjawab pertanyaan, guna membantu menumbuhkan kesadaran dan menjaga komunikasi tetap bersih.
Untuk meningkatkan skala Spellbook, repo telah memperkenalkan sub-proyek untuk sedikit memecah silsilah DBT yang kompleks & menjaga area fokus tetap bersih. Hal ini juga akan membantu orkestrasi hilir untuk menjaga proses produksi tetap segar. Subproyek DBT di Spellbook hanyalah beberapa proyek DBT dalam satu repo. Struktur proyek saat ini:
dbt_subprojects
daily_spellbook
hourly_spellbook
dex
dex
atau dex_aggregator
, termasuk mantra upstream untuk membantu membangun mantra tingkat sektor akhirnft
nft
, termasuk mantra hulu untuk membantu membangun mantra tingkat sektor akhirsolana
tokens
Untuk informasi lebih lanjut mengenai subproyek, silakan kunjungi diskusi ini dan ajukan pertanyaan apa pun di sana.
Ingin langsung bekerja? Ikuti panduan di sini untuk memulai.
Anda tidak memerlukan pengaturan lokal yang rumit untuk menguji mantra terhadap mesin Dune. Setelah Anda mengirimkan PR, pipeline CI kami akan menjalankan dan mengujinya, dan, jika pekerjaan berhasil diselesaikan, Anda akan dapat menanyakan data yang dibuat PR Anda langsung dari dune.com.
Cukup tulis kueri seperti yang Anda lakukan untuk tabel langsung kami, dan gunakan skema pengujian untuk mengambil tabel yang dibuat oleh PR Anda.
test_schema.git_dunesql_{{commit_hash}}_{{table_name}}
Anda dapat menemukan nama persisnya dengan mudah dengan melihat log dari tindakan dbt slim ci
, di bawah dbt run initial model(s)
.
Harap diperhatikan: tabel pengujian yang dibuat di pipeline CI akan ada selama ~24 jam. Jika tabel Anda tidak ada, picu alur agar berjalan kembali dan buat ulang tabel pengujian.
Kami menggunakan Discord untuk terhubung dengan komunitas kami. Kunjungi saluran buku mantra di Dune's Discord untuk mengajukan pertanyaan atau meminta bantuan terkait PR tertentu. Kami mendorong Anda untuk belajar sambil melakukan, dan memanfaatkan komunitas kami yang aktif untuk membantu Anda memulai.
git config --global core.autocrlf true
. informasi lebih lanjutAnda dapat menonton versi videonya jika Anda menggulir ke bawah sedikit.
Navigasikan ke repo buku mantra dalam CLI Anda (Antarmuka baris perintah).
cd userdirectorygithubspellbook
# Change this to wherever spellbook is stored locally on your machine.
Menggunakan pipfile yang terletak di repo spellbook, jalankan perintah install di bawah ini untuk membuat pipenv.
pipenv install
Jika instalasi gagal, salah satu kemungkinan alasannya adalah skrip kami mencari versi python statis dan kemungkinan kesalahan untuk versi python yang salah cukup tinggi. Jika kesalahan itu terjadi, periksa versi python Anda dengan:
python --version
Sekarang gunakan program editor teks apa pun untuk mengubah versi python di pipfile dalam direktori spellbook ke versi python Anda. Anda harus memiliki setidaknya python 3.9. Jika Anda telah mengubah versi python di pipfile, jalankan kembali pipenv install
.
Anda sekarang siap untuk mengaktifkan lingkungan virtual proyek ini. Jalankan perintah berikut untuk masuk ke lingkungan:
pipenv shell
Anda sekarang telah membuat lingkungan virtual untuk proyek ini. Anda dapat membaca lebih lanjut tentang lingkungan virtual di sini.
Di dalam repo Spellbook, ada beberapa proyek dbt, yang terletak di direktori root. Navigasikan ke proyek yang benar, bergantung pada kasus penggunaan Anda.
cd ../spellbook/dbt_subprojects/<subproject_name>/
Setiap subproyek memiliki file proyek dbtnya sendiri dengan konfigurasi yang berbeda-beda. Setelah CLI Anda menavigasi ke direktori proyek yang benar, ikuti langkah-langkah di bawah ini:
Untuk membersihkan proyek dbt
dbt clean
Untuk menarik dependensi proyek dbt, jalankan:
dbt deps
Untuk mengkompilasi model menjadi SQL mentah, untuk dijalankan di aplikasi dune dan memvalidasi:
dbt compile
Setiap subproyek Spellbook menyertakan file profiles.yml
, yang membantu memberi tahu dbt cara menjalankan perintah. Profilnya terletak di setiap direktori subproyek, seperti di sini. Ini tidak perlu diubah, kecuali dilakukan dengan sengaja oleh tim Dune.
Karena file profiles.yml
disimpan di direktori root setiap subproyek, inilah sebabnya pengguna harus berada di direktori root per subproyek pada baris perintah untuk menjalankan dbt compile
seperti yang diharapkan.
kompilasi dbt akan mengkompilasi SQL bertemplat JINJA dan SQL menjadi SQL biasa yang dapat dieksekusi di UI Dune. Direktori buku mantra Anda sekarang memiliki folder bernama target
yang berisi versi SQL biasa dari semua model di Dune. Jika Anda telah melakukan perubahan pada repo sebelum menyelesaikan semua tindakan ini, kini Anda dapat yakin bahwa setidaknya proses kompilasi berfungsi dengan benar, jika ada kesalahan besar proses kompilasi tidak akan selesai. Jika Anda belum melakukan perubahan pada direktori sebelumnya, kini Anda dapat mulai menambah, mengedit, atau menghapus file dalam repositori. Setelah itu, cukup jalankan dbt compile
lagi setelah Anda selesai dengan pekerjaan Anda di direktori dan uji kueri sql bahasa sederhana di dune.com.
Jika Anda pernah melakukan instalasi ini pada mesin Anda sekali, untuk kembali ke dbt, cukup navigasikan ke repo spellbook, jalankan pipenv shell
, dan Anda dapat menjalankan dbt compile
lagi.
Anda sekarang memiliki kemampuan untuk mengkompilasi pernyataan model dbt dan pernyataan pengujian ke dalam SQL biasa. Hal ini memungkinkan Anda untuk menguji kueri tersebut di lingkungan dune.com biasa dan oleh karena itu akan menghasilkan pengalaman yang lebih baik saat mengembangkan mantra. Menjalankan kueri akan segera memberi Anda masukan tentang kesalahan ketik, kesalahan logika, atau ketidakcocokan. Hal ini pada gilirannya akan membantu kami menerapkan mantra ini lebih cepat dan menghindari potensi kesalahan.
Ada beberapa konsep baru yang perlu dipertimbangkan saat membuat mantra di dbt. Yang paling umum ditemui penyihir adalah referensi, sumber, kesegaran, dan pengujian.
Di isi setiap kueri, tabel disebut sebagai referensi, misal {{ ref('1inch_ethereum') }}
atau sumber, misal {{ source('ethereum', 'traces') }}
. Referensi merujuk ke model dbt lain dan harus merujuk ke nama file seperti 1inch_ethereum.sql
, meskipun model itu sendiri adalah alias. Sumber mengacu pada data "mentah" atau tabel/tampilan yang tidak dihasilkan oleh dbt. Menggunakan referensi dan sumber memungkinkan kita membangun pohon ketergantungan secara otomatis.
Sumber dan model ditentukan dalam file skema.yml tempat pengujian dan atribut lainnya ditentukan.
Praktik terbaiknya adalah menambahkan pengujian unik dan pengujian non_null ke kunci utama untuk setiap model baru. Demikian pula, pemeriksaan kesegaran harus ditambahkan ke setiap sumber baru (meskipun kami akan mencoba untuk tidak menguji ulang kesegaran jika sumber tersebut digunakan di tempat lain).
Menambahkan deskripsi ke tabel dan kolom akan membantu orang menemukan dan menggunakan tabel Anda.
models :
- name : 1inch_ethereum
description : " Trades on 1inch, a DEX aggregator "
columns :
- name : tx_hash
description : " Table primary key: a transaction hash (tx_hash) is a unique identifier for a transaction. "
data_tests :
- unique
- not_null
sources :
- name : ethereum
freshness :
warn_after : { count: 12, period: hour }
error_after : { count: 24, period: hour }
tables :
- name : traces
Lihat tautan ke dokumen lainnya tentang dbt di bawah.
Untuk menghasilkan dokumentasi dan melihatnya sebagai situs web, jalankan perintah berikut:
dbt docs generate
dbt docs serve
Anda harus sudah menyiapkan dbt dengan dbt init
tetapi Anda tidak memerlukan kredensial database untuk menjalankan perintah ini.Lihat dokumentasi dbt docs untuk informasi lebih lanjut tentang cara berkontribusi pada dokumentasi.
Sebagai pratinjau, Anda dapat melakukan hal-hal seperti: