Skip to main content

Jinja Syntax

Jinja is a templating engine for Python. It’s most frequently used in Django and Flask applications. In Coalesce, you can use it to expand SQL capabilities.

These are just some of the syntax options available with Jinja. See Template Designer Documentation for more.

Variables

Variables in Jinja are defined by double curly braces. Jinja replaces the {{ variable_name }} with the value.

variable
{{ variable_name }}

Statement

Statements control logic and flow. For example, starting a loop.

Statement
{% %}

//For Loop Example
{% set cookies = ['chocolate chip', 'oatmeal', 'sugar'] %}

{%- for cookies in cookies -%}

I love {{cookies}} cookies!

{% endfor %}

Comments

Comments are not evaluated when the code is run. Comments are a good place to put information such as what the code does and the expected output.

Comments
{# Some comment info here
More comment information
#}

Whitespace

Jinja will print any whitespace in the code block. To prevent that, adding a dash to the left or right of the percent sign will remove the whitespace.

Filters

Filters are designed by a pipe, |. They change the look, format, or even output new data.

Filters
{{ name | capitalize }}

Set

Set a variable value.

Set
{% set company_name = "Coalesce" %}

For Loop

A for loop will loop over a sequence until a condition is met. For example, you have a list of cookies, chocolate chips, oatmeal, and sugar. For every cookie in the list, print out “I love cookies”. “I love cookies” will be printed three times.

For Loop
{% set cookies = ['chocolate chip', 'oatmeal', 'sugar'] %}
{%- for cookies in cookies -%}
I love {{cookies}} cookies!
{% endfor %}


I love chocolate chip cookies!

If/Else

Use if/else to provide instructions such as if this condition is met, then to this action.

If/Else
{% set color = 'orange' %}
{% if color == 'orange' %}

I love orange!

{% else %}

I only want orange

{% endif %}

Lists

Lists are formatted using brackets, []. Lists are indexed starting at 0. For example, chocolate chip has an index of 0.

Lists
<p>{% set cookies = ['chocolate chip', 'oatmeal', 'sugar'] %}
</p>

Dictionary

Dictionaries use key:value pairs.

Dictionary
{% set company = {
'name': 'Coalesce',
'type': 'Data Transformation',
'trial': 30
} %}

{{ company.trial }}

Comparison Operators

Jinja inherits the comparison operators from Python. Comparison operators are used to compare values and determine if they equate to true or false.

Available comparison operators

Example:

In this example, a single equal, =, is used to set a variable. Use a single equals to set variables, dictionaries, and lists. A double equal, ==, is used to compare if the color is orange. In the example below, it is orange, it evaluates to true.

{% set color = 'orange' %}
{% if color == 'orange' %}

I love orange!

{% else %}

I only want orange

{% endif %}

Jinja Syntax Summary

Because Jinja inherits from Python, you have many syntax options available. There are a few common ones in this guide. You can also use SQL statements such as CASE WHEN. This makes Jinja a very powerful tool in Coalesce.