🎯 Definicja
Jinja to system szablonów dla Pythona.
Pozwala łączyć statyczny tekst (HTML, SQL, YAML) z dynamicznymi danymi.
Zamiast pisać 50 zapytań SQL (SELECT * FROM table_2023, SELECT * FROM table_2024…), piszesz jeden szablon z pętlą for.
🔑 Kluczowe punkty
- Narzędzie pracy Inżyniera Danych: dbt, Apache Airflow, Ansible - one wszystkie używają Jinja.
- Składnia:
{{ zmienna }}wypisuje wartość.{% if %}robi logikę. - Makra: Możesz pisać funkcje wewnątrz SQL (np. funkcję do przeliczania walut), żeby nie kopiować kodu.
📚 Szczegółowe wyjaśnienie
Przykład w dbt (SQL):
SELECT
order_id,
{% if target.name == 'dev' %}
'TEST_DATA' as environment
{% else %}
'PROD_DATA' as environment
{% endif %}
FROM ordersJinja “skompiluje” to zapytanie inaczej na produkcji, a inaczej u Ciebie na laptopie.
💡 Przykład zastosowania
Generowanie e-maila powitalnego:
Szablon: Cześć {{ imie }}! Twoje zamówienie {{ numer }} jest gotowe.
Dane: {imie: "Szymon", numer: "123"}.
Wynik: Cześć Szymon! Twoje zamówienie 123 jest gotowe.
📌 Źródła
- Jinja2 Documentation.
👽 Brudnopis
- “SQL with superpowers”. Tak się mówi o połączeniu SQL + Jinja w dbt. To zmienia SQL z języka zapytań w język programowania (metaprogramowania).