Skip to content

Cum să apelezi macro-uri în dbt

DodaTech Updated 2025-01-15 1 min read

In this tutorial, you'll learn about Cum să apelezi macro. We cover key concepts, practical examples, and best practices.

Macro-urile definite în dbt pot fi apelate din orice model, fișier YAML, hook sau din linia de comandă. Acest ghid acoperă toate modurile de a apela macro-uri.

Step-by-Step Fix

1. Apelează un macro într-un model SQL

-- models/marts/fct_orders.sql
{% macro days_ago(days, column_name) %}
    DATEADD(day, -{{ days }}, {{ column_name }})
{% endmacro %}

SELECT
    order_id,
    {{ days_ago(7, 'order_date') }} AS seven_days_ago,
    amount
FROM {{ ref('stg_orders') }}

2. Apelează un macro din alt macro

-- macros/combined_helpers.sql
{% macro full_grant(schema, role) %}
    {{ grant_select(schema, role) }}
    {{ grant_usage(schema, role) }}
{% endmacro %}

3. Apelează un macro din YAML (schema.yml)

models:
  - name: my_model
    config:
      pre_hook: "{{ grant_select('my_schema', 'analytics_role') }}"

4. Apelează un macro din linia de comandă

dbt run-operation grant_select --args "{schema: public, role: readonly}"

Output așteptat:

15:23:45  Running macro: grant_select
15:23:45  Completed successfully

Common Mistakes

Greșeală Soluție
Nume de macro greșit (case-sensitive) Verifică numele exact cu dbt list --resource-type macro
Argumente lipsă la apel Furnizează toate argumentele obligatorii
Apel macro în afara contextului Jinja Asigură-te că sintaxa {{ }} este corectă

Prevention Tips

  • Folosește dbt run-operation pentru a testa macro-urile izolat
  • Verifică numele macro-urilor cu dbt list --resource-type macro
  • Documentează exemple de apel pentru fiecare macro
  • Evită apelurile recursive care pot duce la erori de compilare

DodaTech Tools

Doda Browser oferă un panou de execuție rapidă pentru macro-uri. DodaZIP salvează logurile apelurilor de macro-uri pentru audit. Durga Antivirus Pro monitorizează macro-urile pentru comportament anormal.

FAQ

### Pot apela un macro din alt pachet?

Da, folosește sintaxa {{ package_name.macro_name() }}.

### Care este diferența între apelul în model și run-operation?

În model, macro-ul este compilat în SQL. Cu run-operation, macro-ul este executat direct de dbt.

### Pot apela macro-uri în hook-uri?

Da, hook-urile acceptă apeluri de macro-uri în sintaxa Jinja.

Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează nativ cu dbt pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro