Rumah > pembangunan bahagian belakang > Tutorial Python > Panduan untuk Makro dbt - Tujuan, Faedah dan Penggunaan

Panduan untuk Makro dbt - Tujuan, Faedah dan Penggunaan

Susan Sarandon
Lepaskan: 2024-10-19 06:11:02
asal
228 orang telah melayarinya

A Guide to dbt Macros - Purpose, Benefits, and Usage

  • Apache Iceberg 101
  • Pengenalan Tangan dengan aisberg Apache
  • Kursus Perlumbaan Apache Iceberg Percuma
  • Salinan Percuma Apache Iceberg: Panduan Definitif

Apabila bekerja dengan dbt, salah satu ciri paling berkuasa yang tersedia untuk anda ialah makros. Makro membolehkan anda menulis kod boleh guna semula yang boleh digunakan sepanjang projek dbt anda, membantu anda mengoptimumkan pembangunan, mengurangkan lebihan dan menyeragamkan corak biasa. Dalam siaran ini, kami akan meneroka tujuan makro dbt, cara ia boleh membantu anda menyelaraskan aliran kerja transformasi data anda dan cara menggunakannya dengan berkesan.

Apakah Makro dbt?

Pada tahap tinggi, makro dbt ialah coretan kod boleh guna semula yang ditulis dalam Jinja, bahasa templat yang disepadukan ke dalam dbt. Makro bertindak seperti fungsi yang boleh anda panggil di pelbagai tempat dalam projek dbt anda (seperti model, ujian dan juga makro lain). Ia membolehkan anda memudahkan tugasan berulang dan menambah logik pada transformasi SQL anda.

Anda boleh menganggap makro sebagai cara untuk KERING (Jangan Ulangi Sendiri) kod dbt anda, yang amat berguna dalam projek yang lebih besar di mana corak SQL serupa diulang merentas banyak model.

Bagaimana Makro dbt Membantu Anda

Berikut ialah beberapa faedah utama menggunakan makro dbt dalam projek anda:

1. Kurangkan Lebihan

Dalam banyak aliran kerja transformasi data, anda mungkin mendapati diri anda menulis logik SQL yang sama merentas berbilang model. Contohnya, menapis rekod yang tidak sah atau menggunakan transformasi tertentu. Dengan makro, anda boleh mengabstrak logik ini ke dalam fungsi boleh guna semula dan memanggilnya apabila diperlukan, mengurangkan pertindihan kod.

2. Piawaikan Logik SQL

Macro membantu memastikan logik biasa (seperti pengesahan data atau cantuman tersuai) digunakan secara konsisten sepanjang projek anda. Penyeragaman ini mengurangkan kemungkinan ralat dan memastikan transformasi anda mengikut peraturan yang sama merentas model yang berbeza.

3. Permudahkan Logik Kompleks

Dengan menggunakan makro, anda boleh memecahkan logik kompleks kepada komponen yang boleh diurus dan boleh digunakan semula. Ini memudahkan model SQL anda, menjadikannya lebih mudah dibaca, diselenggara dan nyahpepijat.

4. Jana SQL Secara Dinamik

Makro membolehkan anda menulis SQL yang menyesuaikan diri dengan kes penggunaan yang berbeza berdasarkan pembolehubah, tetapan konfigurasi atau input. Penjanaan SQL dinamik ini boleh membantu anda mengendalikan pelbagai kes tepi dan persekitaran tanpa mengubah kod secara manual.

5. Guna Semula Merentas Model

Setelah makro ditakrifkan, ia boleh digunakan dalam berbilang model, memastikan bahawa sebarang kemas kini pada makro dicerminkan merentas projek. Ini menggalakkan penyelenggaraan yang lebih mudah dan kemas kini yang lebih pantas.

Cara Menulis dan Menggunakan Makro dbt

Mentakrifkan Makro

Makro biasanya ditakrifkan dalam fail .sql dalam direktori makro/ projek dbt anda. Berikut ialah contoh makro ringkas yang mengira purata lajur:

-- macros/calculate_average.sql

{% macro calculate_average(column_name) %}
    AVG({{ column_name }})
{% endmacro %}
Salin selepas log masuk

Dalam contoh ini, macro calculate_average menerima nama lajur sebagai parameter dan mengembalikan fungsi AVG() SQL yang digunakan pada lajur tersebut.

Menggunakan Makro dalam Model

Setelah anda menentukan makro, anda boleh memanggilnya dalam mana-mana model dengan menggunakan sintaks berikut:

-- models/my_model.sql

SELECT
    {{ calculate_average('price') }} AS avg_price,
    category
FROM
    {{ ref('products') }}
GROUP BY
    category
Salin selepas log masuk

Di sini, kami menggunakan makro hitung_purata dalam penyata SELECT untuk mengira harga purata dalam jadual produk, tanpa perlu mengulang logik secara manual.

Menggunakan Makro dengan Pembolehubah

Makro juga boleh digabungkan dengan pembolehubah untuk menambah lebih fleksibiliti. Sebagai contoh, mari tentukan makro yang membina klausa WHERE secara dinamik berdasarkan pembolehubah:

-- macros/filter_by_status.sql

{% macro filter_by_status(status) %}
    WHERE status = '{{ status }}'
{% endmacro %}
Salin selepas log masuk

Kini anda boleh menggunakan makro ini untuk menapis data berdasarkan pembolehubah seperti itu:

-- models/orders.sql

SELECT *
FROM {{ ref('orders') }}
{{ filter_by_status(var('order_status', 'completed')) }}
Salin selepas log masuk

Dalam kes ini, filter_by_status menambahkan klausa WHERE secara dinamik yang menapis keputusan mengikut order_status, yang lalai untuk dilengkapkan jika tidak disediakan.

Makro Kompleks: Gabungan Jadual Dinamik
Berikut ialah contoh makro yang lebih maju yang mencipta gabungan dinamik berdasarkan parameter yang dihantar kepadanya:

-- macros/join_tables.sql

{% macro join_tables(left_table, right_table, join_key) %}
    SELECT
        left.*,
        right.*
    FROM
        {{ ref(left_table) }} AS left
    INNER JOIN
        {{ ref(right_table) }} AS right
    ON
        left.{{ join_key }} = right.{{ join_key }}
{% endmacro %}
Salin selepas log masuk

Makro ini mengambil dua nama jadual dan kunci gabungan, kemudian secara dinamik mencipta JOIN DALAM antara jadual:

-- models/joined_data.sql

{{ join_tables('customers', 'orders', 'customer_id') }}
Salin selepas log masuk

Apabila anda memanggil makro ini, ia menjana SQL penuh untuk menyertai pelanggan dan memesan jadual pada kunci customer_id.

Amalan Terbaik untuk Menggunakan Makro dbt

  • Pastikan Makro Fokus: Setiap makro harus melaksanakan satu tugasan yang jelas. Elakkan memasukkan terlalu banyak logik ke dalam satu makro; sebaliknya, pecahkannya kepada komponen yang lebih kecil dan boleh diguna semula.

  • Gunakan Konvensyen Penamaan Jelas: Pastikan nama makro adalah deskriptif supaya tujuannya jelas apabila digunakan dalam model. Ini menjadikan kod lebih mudah difahami dan diselenggara.

  • Kendalikan Kes Tepi: Sentiasa ambil kira kemungkinan kes tepi (cth., nilai nol atau input yang tidak dijangka) dalam makro anda untuk memastikan ia berprestasi boleh dipercayai merentas senario yang berbeza.

  • Manfaatkan Makro dalam Ujian: Anda juga boleh menggunakan makro dalam ujian dbt anda untuk mencipta logik ujian boleh guna semula, memastikan ketekalan merentas langkah pengesahan projek anda.

  • Dokumen Makro Anda: Tambahkan ulasan dan dokumentasi pada makro anda untuk menerangkan tujuan, parameter dan penggunaannya. Ini amat membantu apabila berbilang ahli pasukan menyumbang kepada projek yang sama.

Kesimpulan

makro dbt ialah alat berkuasa yang boleh membantu anda menulis kod yang lebih bersih, lebih boleh diselenggara dan boleh digunakan semula dalam projek transformasi data anda. Dengan mengabstraksikan logik kompleks, menyeragamkan corak berulang dan menjana SQL secara dinamik, makro mengurangkan kerumitan dengan ketara dan meningkatkan kebolehpercayaan aliran kerja dbt anda.

Sama ada anda baru menggunakan dbt atau pengguna berpengalaman, belajar menulis dan menggunakan makro dengan berkesan boleh membawa keupayaan kejuruteraan data anda ke peringkat seterusnya. Mulakan secara kecil-kecilan dengan coretan mudah guna semula dan dari semasa ke semasa, masukkan logik yang lebih maju untuk membuka kunci sepenuhnya potensi makro dalam projek dbt anda.

Atas ialah kandungan terperinci Panduan untuk Makro dbt - Tujuan, Faedah dan Penggunaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan