Overview
Jinja is a powerful and popular templating engine. SDF uses Mini Jinja, a lightweight version of the Pythonic Jinja designed specifically for Rust applications. It provides similar functionality to Jinja but is tailored for integration with Rust projects, offering enhanced performance.SDF comes with Jinja support built-in! No additional installations are required.
How Does it Work?
Jinja (or Mini Jinja) enables developers to embed logic and dynamic content into static templates. It leverages a unique syntax which resembles Python and is added directly to a file:- Jinja blocks should to be wrapped with
{%
and%}
- Jinja variables should be wrapped with
{{
and}}
This guide provides a high level overview of Jinja basics. We highly recommend to learn more from the
official Jinja documentation and other sources online.
Common Templating in Data Pipelines
Variables
Let’s look at a simple example to make this more concrete. For simplicity, let’s assume we knowtable_name = orders
:
In the code blocks below, toggle between the queries jinja templates and the rendered versions
of the queries. The rendered versions of the queries are the ones that will be compiled and
executed by SDF.
table_name
Jinja variable. This is done using a set
block:
If Statements
Let’s make it more interesting. If the environment name is ‘dev’, we want to querydev_orders
, otherwise, orders
.
For that, we can use an if
Jinja block. Notice, we need to close the if
block with a endif
block
SDF has many built-in Jinja variables that can be accessed in your models. Specifically,
builtin.environment
returns the environment name of the current environment.For Loops
Jinja supports advanced data structures like lists and dictionaries. Notice that similarly toif
statements,
for
loop blocks need to end with endfor
blocks.
Jinja supports some Python native methods. For example, the
join
method of lists as can be seen in the
example above.Mini Jinja syntax differs slightly from Pythonic Jinja, but it will still meets
all your Jinja needs.For example, although iterating over dictionaries is slightly different, both
libraries can implement the same logic with minor adjustments.
Resources
Jinja templating is incredibly powerful and there is much more to learn. We hope this guide helped provide an introduction to Jinja, but we encourage you to learn more about what you can do.- Mini Jinja Documentation: Official documentation providing detailed guidance on using Mini Jinja.
- Mini Jinja GitHub Repository: The source code, issues, and discussions related to Mini Jinja can be found on GitHub.