Skip to content

Cum să loghezi informații în operațiile dbt

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să loghezi informații în operațiile dbt. We cover key concepts, practical examples, and best practices.

Funcția {{ log() }} în dbt Jinja îți permite să scrii mesaje în consolă în timpul compilării și execuției. Este esențială pentru depanarea macro-urilor și pentru audit.

Step-by-Step Fix

1. Folosește log() simplu

-- macros/debug_helpers.sql
{% macro debug_query(relation_name) %}
    {% set query = "SELECT COUNT(*) FROM " ~ relation_name %}
    {% do log("Executing query: " ~ query, info=True) %}
    {% set result = run_query(query) %}
    {% do log("Count: " ~ result.columns[0].values()[0], info=True) %}
{% endmacro %}

2. Loghează cu diferite niveluri

{% macro validate_schema(schema_name) %}
    {% do log("Starting schema validation for " ~ schema_name, info=True) %}
    {% if schema_name is none %}
        {% do log("Schema name is none!", warn=True) %}
    {% else %}
        {% do log("Schema name is valid", info=True) %}
    {% endif %}
{% endmacro %}

3. Rulează și vizualizează logurile

dbt run-operation debug_query --args "{relation_name: my_table}"

Output așteptat:

15:23:45  Executing query: SELECT COUNT(*) FROM my_table
15:23:46  Count: 12345

4. Filtrează logurile

dbt run-operation validate_schema --log-level warn

Common Mistakes

Greșeală Soluție
Se folosește print() în loc de log() print() nu funcționează în contextul dbt — folosește {{ log() }}
Se omite parametrul info=True Fără info=True, mesajul nu apare în logurile standard
Loguri prea verbose Folosește nivelurile warn și error pentru mesaje importante

Prevention Tips

  • Adaugă loguri în macro-uri complexe pentru depanare
  • Folosește info=True pentru mesaje informative și warn=True pentru avertismente
  • Nu loga informații sensibile (parole, token-uri)
  • Folosește --log-level pentru a controla volumul de loguri

DodaTech Tools

Doda Browser centralizează logurile dbt într-un panou unificat. DodaZIP arhivează logurile pentru analiză ulterioară. Durga Antivirus Pro detectează patternuri suspecte în loguri.

FAQ

### Care este diferența dintre log() și print()?

log() este funcția corectă în contextul dbt Jinja. print() nu este disponibil și va genera eroare.

### Pot loga într-un fișier extern?

Direct, nu. Poți redirecționa outputul comenzii dbt: dbt run-operation nume > log.txt 2>&1.

### Log() funcționează și în modele?

Da, poți folosi {{ log() }} în orice context Jinja din dbt.

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