Skip to content

Cum să definești argumente pentru macro-uri în dbt

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să definești argumente pentru macro. We cover key concepts, practical examples, and best practices.

Macro-urile în dbt acceptă argumente pentru a fi flexibile și reutilizabile. Poți defini parametri poziționali, cu valori implicite și keyword arguments. Acest ghid explică sintaxa corectă.

Step-by-Step Fix

1. Definește un macro cu argumente poziționale

-- macros/grant_helpers.sql
{% macro grant_select(schema, role) %}
    GRANT USAGE ON SCHEMA {{ schema }} TO ROLE {{ role }};
    GRANT SELECT ON ALL TABLES IN SCHEMA {{ schema }} TO ROLE {{ role }};
{% endmacro %}

2. Adaugă argumente cu valori implicite

-- macros/audit_helpers.sql
{% macro add_audit_columns(include_updated_at=true, updated_by_column='updated_by') %}
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    {% if include_updated_at %}
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    {% endif %}
    {{ updated_by_column }} VARCHAR(100)
{% endmacro %}

3. Folosește keyword arguments

-- macros/detect_helpers.sql
{% macro detect_changes(primary_key, compare_columns=none, exclude_columns=['updated_at']) %}
    {% if compare_columns is none %}
        {% set compare_columns = adapter.get_columns_in_relation(this) | map(attribute='name') | list %}
    {% endif %}
    -- logica de detectare a schimbărilor
{% endmacro %}

4. Testează apelul macro-ului

dbt run-operation add_audit_columns --args "{include_updated_at: false, updated_by_column: 'modified_by'}"

Output așteptat:

15:23:45  Running macro: add_audit_columns

Common Mistakes

Greșeală Soluție
Argumente fără valoare implicită și nefurnizate la apel Asigură-te că toate argumentele obligatorii sunt transmise
Nume de argument greșit la apel Verifică ortografia numelor de parametri
Tipul argumentului incorect (string vs boolean) Folosește true/false fără ghilimele în --args

Prevention Tips

  • Documentează fiecare argument cu un comentariu în macro
  • Folosește valori implicite acolo unde este posibil
  • Validează argumentele în interiorul macro-ului cu {% if arg is none %}
  • Testează macro-ul cu diferite combinații de argumente

DodaTech Tools

Doda Browser oferă autocompletare pentru argumentele macro-urilor. DodaZIP păstrează istoricul apelurilor de macro-uri. Durga Antivirus Pro validează tipurile de argumente pentru securitate.

FAQ

### Care este diferența dintre argumente poziționale și keyword?

Argumentele poziționale se bazează pe ordinea din definiție, iar keyword arguments se identifică după nume.

### Pot avea număr variabil de argumente?

Da, poți folosi *varargs și **kwargs în Jinja prin sintaxa {% macro my_macro(*args, **kwargs) %}.

### Ce se întâmplă dacă nu specific un argument opțional?

Se folosește valoarea implicită definită în macro.

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