Skip to content

Cum să printezi informații în consolă din operațiile dbt

DodaTech Updated 2025-01-15 2 min read

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

Mesajele în consolă sunt esențiale pentru depanarea macro-urilor dbt. Funcțiile {{ print() }} și {{ log() }} îți permit să afișezi informații în timpul execuției. Acest ghid explică cum și când să le folosești.

Step-by-Step Fix

1. Folosește print() pentru debugging rapid

-- macros/debug_print.sql
{% macro debug_vars(var_name, var_value) %}
    {{ print("Variable " ~ var_name ~ " = " ~ var_value) }}
{% endmacro %}

2. Folosește log() pentru output controlat

{% macro process_records(table_name) %}
    {% set sql = "SELECT COUNT(*) FROM " ~ table_name %}
    {% set result = run_query(sql) %}
    {% set count = result.columns[0].values()[0] %}
    {% do log("Processing " ~ count ~ " records from " ~ table_name, info=True) %}

    {% if count > 1000000 %}
        {% do log("Large dataset detected!", warn=True) %}
    {% endif %}
{% endmacro %}

3. Compară print() vs log()

# print() — apare mereu
dbt run-operation debug_vars --args "{var_name: table, var_value: orders}"

# log() — apare doar cu --log-level adecvat
dbt run-operation debug_vars --args "{var_name: table, var_value: orders}" --log-level info

Output așteptat pentru print():

Variable table = orders

Output așteptat pentru log():

15:23:45  Processing 500000 records from orders
15:23:45  Large dataset detected!

Common Mistakes

Greșeală Soluție
Se folosește print() în loc de log() în producție print() nu are control pe nivel — folosește log() cu niveluri
Se încearcă printarea unor obiecte Jinja complexe Convertește obiectele la string cu ~ ""
Output-ul print() nu apare în loguri print() scrie în stdout, nu în sistemul de log al dbt

Prevention Tips

  • Folosește print() doar pentru depanare temporară
  • Folosește log() cu info=True pentru producție
  • Nu printa informații sensibile
  • Șterge printurile de debugging înainte de commit

DodaTech Tools

Doda Browser capturează output-ul print() într-un panou lateral. DodaZIP arhivează sesiunile de depanare. Durga Antivirus Pro filtrează output-ul pentru informații sensibile.

FAQ

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

print() afișează întotdeauna în consolă. log() respectă nivelurile de log și oferă timestamp.

### Când ar trebui să folosesc print()?

Doar în timpul dezvoltării și depanării. Pentru producție, folosește log().

### Pot redirecționa output-ul într-un fișier?

Da, folosește dbt run-operation nume > output.txt 2>&1.

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