Pergeseran Merah Amazon adalah layanan pergudangan data cloud yang menyediakan pemrosesan analitik berkinerja tinggi berdasarkan arsitektur pemrosesan paralel masif (MPP). Membangun dan memelihara saluran data merupakan tantangan umum bagi semua perusahaan. Mengelola file SQL, mengintegrasikan kerja lintas tim, menggabungkan semua prinsip rekayasa perangkat lunak, dan mengimpor utilitas eksternal dapat menjadi tugas yang memakan waktu yang memerlukan desain rumit dan banyak persiapan.
dbt (DataBuildTool) menawarkan mekanisme ini dengan memperkenalkan kerangka kerja yang terstruktur dengan baik untuk analisis, transformasi, dan orkestrasi data. Ini juga menerapkan prinsip rekayasa perangkat lunak umum seperti integrasi dengan repositori git, pengaturan Pengering kode, menambahkan kasus uji fungsional, dan menyertakan perpustakaan eksternal. Mekanisme ini memungkinkan pengembang untuk fokus menyiapkan file SQL sesuai logika bisnis, dan sisanya ditangani oleh dbt.
Dalam postingan ini, kami mencari cara yang optimal dan hemat biaya untuk menggabungkan dbt dalam Amazon Redshift. Kita gunakan Amazon elastis Registri Kontainer (Amazon ECR) untuk menyimpan image dbt Docker kami dan Fargate AWS sebagai Layanan Kontainer Amazon Elastic (Amazon ECS) tugas untuk menjalankan pekerjaan.
Bagaimana cara kerja kerangka dbt dengan Amazon Redshift?
dbt memiliki modul adaptor Amazon Redshift yang diberi nama dbt-pergeseran merah yang memungkinkannya terhubung dan bekerja dengan Amazon Redshift. Semua profil koneksi dikonfigurasi dalam dbt profiles.yml
mengajukan. Dalam lingkungan yang optimal, kami menyimpan kredensial di Manajer Rahasia AWS dan mengambilnya.
Kode berikut menunjukkan isi profile.yml:
Diagram berikut mengilustrasikan komponen utama kerangka dbt:
Komponen utamanya adalah sebagai berikut:
- Model – Ini ditulis sebagai pernyataan SELECT dan disimpan sebagai file .sql. Semua kueri transformasi dapat ditulis di sini yang dapat diwujudkan sebagai tabel atau tampilan. Penyegaran tabel bisa penuh atau bertahap berdasarkan konfigurasi. Untuk informasi selengkapnya, lihat model SQL.
- Snapshots – Peralatan ini tipe-2 perlahan mengubah dimensi (SCD) melalui tabel sumber yang dapat diubah. SCD ini mengidentifikasi bagaimana baris dalam tabel berubah seiring waktu.
- Benih – Ini adalah file CSV di proyek dbt Anda (biasanya di direktori benih), yang dapat dimuat oleh dbt ke dalam data warehouse menggunakan
dbt seed
perintah. - Tes – Ini adalah pernyataan yang Anda buat tentang model dan sumber daya lain dalam proyek dbt Anda (seperti sumber, seed, dan snapshot). Saat kamu berlari
dbt test
, dbt akan memberi tahu Anda jika setiap pengujian dalam proyek Anda lolos atau gagal. - Macro – Ini adalah potongan kode yang dapat digunakan kembali berkali-kali. Mereka analog dengan “fungsi” dalam bahasa pemrograman lain, dan sangat berguna jika Anda mengulangi kode di beberapa model.
Komponen-komponen ini disimpan sebagai file .sql dan dijalankan oleh perintah dbt CLI. Selama dijalankan, dbt membuat a Grafik Asiklik Terarah (DAG) berdasarkan referensi internal antar komponen dbt. Ia menggunakan DAG untuk mengatur urutan proses yang sesuai.
Beberapa profil dapat dibuat dalam file profiles.yml, yang dapat digunakan dbt untuk menargetkan lingkungan Redshift yang berbeda saat dijalankan. Untuk informasi lebih lanjut, lihat pengaturan Redshift.
Ikhtisar solusi
Diagram berikut menggambarkan arsitektur solusi kami.
Alur kerja berisi langkah-langkah berikut ini:
- Konektor dbt-redshift sumber terbuka digunakan untuk membuat proyek dbt kami termasuk semua model, snapshot, pengujian, makro, dan profil yang diperlukan.
- Gambar Docker dibuat dan dikirim ke repositori ECR.
- Gambar Docker dijalankan oleh Fargate sebagai tugas ECS yang dipicu melalui Fungsi Langkah AWS. Semua kredensial Amazon Redshift disimpan di Secrets Manager, yang kemudian digunakan oleh tugas ECS untuk terhubung dengan Amazon Redshift.
- Selama proses, dbt mengonversi semua model, snapshot, pengujian, dan makro ke pernyataan SQL yang sesuai dengan Amazon Redshift dan mengatur proses berdasarkan internal grafik garis keturunan data terawat. Perintah SQL ini dijalankan langsung di klaster Redshift dan oleh karena itu beban kerja didorong ke Amazon Redshift secara langsung.
- Ketika proses selesai, dbt akan membuat satu set file HTML dan JSON untuk menjadi host dokumentasi dbt, yang menjelaskan katalog data, kompilasi pernyataan SQL, grafik silsilah data, dan banyak lagi.
Prasyarat
Anda harus memiliki prasyarat berikut:
- Pemahaman yang baik tentang prinsip-prinsip dbt dan langkah-langkah implementasi.
- Akun AWS dengan izin peran pengguna untuk mengakses layanan AWS yang digunakan dalam solusi ini.
- Grup keamanan untuk Fargate untuk mengakses klaster Redshift dan Secrets Manager dari Amazon ECS.
- Gugus Pergeseran Merah. Untuk instruksi pembuatan, lihat Buat klaster.
- Repositori ECR: Untuk instruksi, lihat Membuat repositori pribadi
- Seorang Manajer Rahasia rahasia yang berisi semua kredensial untuk terhubung ke Amazon Redshift. Ini termasuk host, port, nama database, nama pengguna, dan kata sandi. Untuk informasi lebih lanjut, lihat Buat rahasia database AWS Secrets Manager.
- An Penyimpanan Sederhana Amazon (Amazon S3) untuk menghosting file dokumentasi.
Buat proyek dbt
Kami menggunakan dbt CLI sehingga semua perintah dijalankan di baris perintah. Oleh karena itu, instal pip jika belum diinstal. Mengacu pada instalasi for more information.
Untuk membuat proyek dbt, selesaikan langkah-langkah berikut:
- Instal paket dbt yang bergantung:
pip install dbt-redshift
- Inisialisasi proyek dbt menggunakan
dbt init <project_name>
perintah, yang membuat semua folder templat secara otomatis. - Tambahkan semua artefak DBT yang diperlukan.
Mengacu kepada dbt-redshift-etlpattern repo yang mencakup proyek referensi dbt. Untuk informasi lebih lanjut tentang proyek bangunan, lihat Tentang proyek dbt.
Dalam proyek referensi, kami telah menerapkan fitur-fitur berikut:
- SCD tipe 1 menggunakan model inkremental
- SCD tipe 2 menggunakan snapshot
- File pencarian benih
- Makro untuk menambahkan kode yang dapat digunakan kembali dalam proyek
- Tes untuk menganalisis data masuk
Skrip Python disiapkan untuk mengambil kredensial yang diperlukan dari Secrets Manager untuk mengakses Amazon Redshift. Mengacu kepada ekspor_redshift_connection.py file.
- Siapkan
run_dbt.sh
skrip untuk menjalankan pipa dbt secara berurutan. Skrip ini ditempatkan di folder root proyek dbt seperti yang ditunjukkan dalam contoh repo.
- Buat file Docker di direktori induk folder proyek dbt. Langkah ini membangun image proyek dbt untuk dimasukkan ke repositori ECR.
Unggah gambar ke Amazon ECR dan jalankan sebagai tugas ECS
Untuk memasukkan image ke repositori ECR, selesaikan langkah-langkah berikut:
- Ambil token autentikasi dan autentikasi klien Docker Anda ke registri Anda:
- Bangun image Docker Anda menggunakan perintah berikut:
- Setelah pembangunan selesai, tandai gambar Anda sehingga Anda dapat memasukkannya ke repositori:
- Jalankan perintah berikut untuk memasukkan gambar ke repositori AWS yang baru Anda buat:
- Di konsol Amazon ECS, buat klaster dengan Fargate sebagai opsi infrastruktur.
- Berikan VPC dan subnet Anda sesuai kebutuhan.
- Setelah Anda membuat klaster, buat tugas ECS dan tetapkan gambar dbt yang dibuat sebagai kelompok ketentuan tugas.
- Di bagian jaringan, pilih VPC, subnet, dan grup keamanan Anda untuk terhubung dengan Amazon Redshift, Amazon S3, dan Secrets Manager.
Tugas ini akan memicu run_dbt.sh
skrip pipa dan jalankan semua perintah dbt secara berurutan. Ketika skrip selesai, kita dapat melihat hasilnya di Amazon Redshift dan file dokumentasi yang dikirim ke Amazon S3.
- Anda dapat menghosting dokumentasi melalui hosting situs web statis Amazon S3. Untuk informasi lebih lanjut, lihat Hosting situs web statis menggunakan Amazon S3.
- Terakhir, Anda dapat menjalankan tugas ini di Step Functions sebagai tugas ECS untuk menjadwalkan pekerjaan sesuai kebutuhan. Untuk informasi lebih lanjut, lihat Kelola Tugas Amazon ECS atau Fargate dengan Step Functions.
Grafik dbt-redshift-etlpattern repo sekarang memiliki semua contoh kode yang diperlukan.
Biaya untuk melaksanakan tugas dbt di AWS Fargate sebagai tugas Amazon ECS dengan persyaratan operasional minimal akan memakan waktu sekitar $1.5 (tautan_biaya) per bulan.
Membersihkan
Selesaikan langkah-langkah berikut untuk membersihkan sumber daya Anda:
- Hapus Klaster ECS Anda buat.
- Hapus repositori ECR Anda buat untuk menyimpan file gambar.
- Hapus Cluster Redshift Anda buat.
- Hapus Rahasia Redshift disimpan di Manajer Rahasia.
Kesimpulan
Postingan ini membahas implementasi dasar penggunaan dbt dengan Amazon Redshift dengan cara yang hemat biaya dengan menggunakan Fargate di Amazon ECS. Kami menjelaskan infrastruktur utama dan pengaturan konfigurasi dengan contoh proyek. Arsitektur ini dapat membantu Anda memanfaatkan manfaat memiliki kerangka dbt untuk mengelola platform gudang data Anda di Amazon Redshift.
Untuk informasi lebih lanjut tentang makro dan model dbt untuk operasi dan pemeliharaan internal Amazon Redshift, lihat yang berikut ini GitHub repo. Pada postingan berikutnya, kita akan menjelajahi pola ekstrak, transformasi, dan pemuatan (ETL) tradisional yang dapat Anda terapkan menggunakan kerangka dbt di Amazon Redshift. Uji solusi ini di akun Anda dan berikan tanggapan atau saran di komentar.
Tentang Penulis
Seshadri Senthamaraikannan adalah arsitek data dengan tim layanan profesional AWS yang berbasis di London, Inggris. Dia sangat berpengalaman dan berspesialisasi dalam Analisis Data dan bekerja dengan pelanggan yang berfokus pada pembangunan solusi inovatif dan terukur di AWS Cloud untuk memenuhi tujuan bisnis mereka. Di waktu luangnya, ia senang menghabiskan waktu bersama keluarga dan berolahraga.
Muhammad Hamdy adalah Arsitek Big Data Senior dengan Layanan Profesional AWS yang berbasis di London, Inggris. Dia memiliki pengalaman lebih dari 15 tahun dalam merancang, memimpin, dan membangun gudang data dan platform data besar. Dia membantu pelanggan mengembangkan solusi big data dan analitik untuk mempercepat hasil bisnis mereka melalui perjalanan adopsi cloud. Di luar pekerjaan, Mohamed suka bepergian, berlari, berenang, dan bermain squash.
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- PlatoData.Jaringan Vertikal Generatif Ai. Berdayakan Diri Anda. Akses Di Sini.
- PlatoAiStream. Intelijen Web3. Pengetahuan Diperkuat. Akses Di Sini.
- PlatoESG. Karbon, teknologi bersih, energi, Lingkungan Hidup, Tenaga surya, Penanganan limbah. Akses Di Sini.
- PlatoHealth. Kecerdasan Uji Coba Biotek dan Klinis. Akses Di Sini.
- Sumber: https://aws.amazon.com/blogs/big-data/implement-data-warehousing-solution-using-dbt-on-amazon-redshift/
- :memiliki
- :adalah
- :bukan
- $NAIK
- 1
- 10
- 11
- 15 tahun
- 15%
- 7
- 8
- 90
- 970
- a
- Tentang Kami
- mempercepat
- mengakses
- mengakses
- Akun
- di seluruh
- menambahkan
- menambahkan
- Adopsi
- Keuntungan
- Semua
- memungkinkan
- sudah
- juga
- Amazon
- Amazon Web Services
- an
- analisis
- Analytical
- analisis
- menganalisis
- dan
- berlaku
- arsitektur
- ADALAH
- sekitar
- AS
- mengotentikasi
- Otentikasi
- secara otomatis
- AWS
- Layanan Profesional AWS
- berdasarkan
- dasar
- BE
- Manfaat
- antara
- Besar
- Big data
- membangun
- Bangunan
- membangun
- bisnis
- by
- CAN
- yang
- kasus
- katalog
- menantang
- Perubahan
- mengubah
- Pilih
- membersihkan
- klien
- awan
- adopsi cloud
- Kelompok
- kode
- komentar
- Umum
- dikompilasi
- lengkap
- kompleks
- compliant
- komponen
- konfigurasi
- dikonfigurasi
- Terhubung
- Menghubungkan
- koneksi
- konsul
- Wadah
- mengandung
- isi
- hemat biaya
- tercakup
- membuat
- dibuat
- menciptakan
- penciptaan
- Surat kepercayaan
- adat
- pelanggan
- DAG
- data
- analisis data
- Data Analytics
- data warehouse
- gudang data
- Basis Data
- Default
- definisi
- tergantung
- dijelaskan
- Mendesain
- dev
- mengembangkan
- pengembang
- berbeda
- langsung
- Buruh pelabuhan
- dokumentasi
- tidak
- selama
- setiap
- memungkinkan
- Teknik
- perusahaan
- Lingkungan Hidup
- lingkungan
- Eter (ETH)
- mengeksekusi
- pengalaman
- berpengalaman
- menyelidiki
- luar
- ekstrak
- sangat
- gagal
- keluarga
- Fitur
- umpan balik
- File
- File
- Menemukan
- Fokus
- berfokus
- berikut
- berikut
- Untuk
- Kerangka
- dari
- penuh
- fungsionil
- fungsi
- Umum
- menghasilkan
- pergi
- Anda
- baik
- grafik
- Kelompok
- Grup
- Memiliki
- memiliki
- he
- membantu
- membantu
- di sini
- kinerja tinggi
- -nya
- tuan rumah
- tuan
- Seterpercayaapakah Olymp Trade? Kesimpulan
- HTML
- HTTPS
- mengenali
- if
- menggambarkan
- gambar
- gambar
- melaksanakan
- implementasi
- diimplementasikan
- mengimpor
- pengimporan
- in
- Di lain
- termasuk
- Termasuk
- menggabungkan
- inkremental
- informasi
- Infrastruktur
- inovatif
- install
- instruksi
- Mengintegrasikan
- intern
- ke
- memperkenalkan
- IT
- Pekerjaan
- Jobs
- perjalanan
- json
- kunci
- Bahasa
- Terbaru
- terkemuka
- perpustakaan
- 'like'
- 'like
- baris
- memuat
- logika
- masuk
- London
- melihat
- banyak
- Macro
- mempertahankan
- pemeliharaan
- membuat
- mengelola
- manajer
- pelaksana
- secara besar-besaran
- mekanisme
- Pelajari
- minimal
- model
- model
- modul
- Mohamed
- Bulan
- lebih
- beberapa
- nama
- Bernama
- perlu
- jaringan
- baru saja
- sekarang
- of
- Penawaran
- on
- Buka
- open source
- operasi
- operasional
- optimal
- pilihan
- or
- teknik mengatur musik
- Lainnya
- kami
- hasil
- output
- di luar
- lebih
- ikhtisar
- paket
- Paralel
- melewati
- Kata Sandi
- pola
- untuk
- izin
- potongan-potongan
- pipa saluran
- ditempatkan
- Platform
- Platform
- plato
- Kecerdasan Data Plato
- Data Plato
- Bermain
- bermain
- Pos
- persiapan
- siap
- mempersiapkan
- prasyarat
- primer
- prinsip-prinsip
- swasta
- pengolahan
- profesional
- Profil
- profil
- Pemrograman
- bahasa pemrograman
- proyek
- memprojeksikan
- memberikan
- menyediakan
- Dorong
- terdorong
- Ular sanca
- query
- lihat
- referensi
- pendaftaran
- gudang
- membutuhkan
- wajib
- Persyaratan
- membutuhkan
- Sumber
- ISTIRAHAT
- Hasil
- dapat digunakan kembali
- Peran
- akar
- BARIS
- Run
- berjalan
- disimpan
- terukur
- menjadwalkan
- naskah
- detik
- rahasia
- Bagian
- keamanan
- melihat
- benih
- biji
- senior
- Urutan
- layanan
- Layanan
- set
- pengaturan
- harus
- ditunjukkan
- Pertunjukkan
- Sederhana
- Perlahan
- Potret
- So
- Perangkat lunak
- rekayasa Perangkat Lunak
- larutan
- Solusi
- sumber
- sumber
- terspesialisasi
- Pengeluaran
- Olahraga
- SQL
- Pernyataan
- Laporan
- Langkah
- Tangga
- menyimpan
- tersimpan
- subnet
- selanjutnya
- seperti itu
- renang
- tabel
- MENANDAI
- Mengambil
- diambil
- target
- tugas
- tugas
- tim
- mengatakan
- Template
- uji
- tes
- bahwa
- Grafik
- mereka
- Mereka
- kemudian
- karena itu
- Ini
- mereka
- ini
- Melalui
- waktu
- membuang-buang waktu
- kali
- untuk
- token
- tradisional
- Mengubah
- Transformasi
- memicu
- dipicu
- mengetik
- khas
- Uk
- pemahaman
- menggunakan
- bekas
- Pengguna
- kegunaan
- menggunakan
- keperluan
- melalui
- View
- Gudang
- Pergudangan
- Cara..
- we
- jaringan
- layanan web
- Situs Web
- BAIK
- ketika
- yang
- sementara
- Wikipedia
- akan
- dengan
- dalam
- Kerja
- alur kerja
- bekerja
- akan
- tertulis
- tahun
- kamu
- Anda
- diri
- zephyrnet.dll