Macros
Macros in Ascend SQL Transforms let you implement logic once and reuse it across multiple Components, making your data pipelines more maintainable and consistent.
Organization
Macros must be defined in .sql
files within a macros
directory in your Project root:
- Screenshot
- File tree

macros/
└── utils.sql
For example, if you have a macro called do_something
that accepts one column argument, you would import and use it in a SQL Transform like this:
{% from 'macros/utils.sql' import do_something %}
SELECT
{{ do_something('column') }}
FROM {{ref ('my_table' )}}
Example
This example creates a macro for data standardization that converts text to lowercase and trims whitespace. This avoids duplicating formatting logic across multiple Components that need consistent data cleaning.
Definition
{% macro standardize(col_name) %}
LOWER(TRIM({{ col_name }}))
{% endmacro %}
Parameters
col_name
: Name of the column to standardize
Logic
- Converts the column value to lowercase using
LOWER()
- Removes leading and trailing whitespace using
TRIM()
- Returns the cleaned column value for consistent data formatting
Usage
{% from 'macros/utils.sql' import standardize %}
SELECT
id,
{{ standardize('name') }} AS clean_name,
breed,
age,
route
FROM {{ ref('read_goats', flow='extract-load-duckdb') }}
This example imports the standardize
macro and applies it to clean the name
column, ensuring consistent formatting across the dataset.