Попробуйте эту ссылку в макросах DBT. Есть макрос только для разворота.
https://github.com/fishtown-analytics/dbt-utils/blob/master/macros/sql/pivot.sql
{# Значения разворота из строк в столбцы.
Пример:
Input: `public.test`
| size | color |
|------+-------|
| S | red |
| S | blue |
| S | red |
| M | red |
select
size,
{{ dbt_utils.pivot('color', dbt_utils.get_column_values('public.test',
'color')) }}
from public.test
group by size
Output:
| size | red | blue |
|------+-----+------|
| S | 2 | 1 |
| M | 1 | 0 |
Аргументы: столбец: имя столбца, обязательные значения: список значений строк для преобразования в столбцы, требуемый псевдоним: следует ли создавать псевдонимы столбцов, по умолчанию - True agg: SQL функция агрегирования, по умолчанию - sum cmp: SQL сравнение значений, по умолчанию = prefix: Префикс псевдонима столбца, по умолчанию - пустой суффикс: Постфикс псевдонима столбца, по умолчанию - пустой quote_identifiers: следует ли заключать псевдонимы столбцов в двойные кавычки, по умолчанию - true #}
{% macro pivot (column, values, alias = True, agg = 'sum', cmp = '=', prefix = ' ', suffix =' ', then_value = 1, else_value = 0, quote_identifiers = True)%} {% для v в значениях%} {{agg}} (случай, когда {{column}} {{cmp}}' {{ v}} 'then {{then_value}} else {{else_value}} end) {% if псевдоним %} {% if quote_identifiers%} как {{адаптер.quote (префикс ~ v ~ суффикс)}} {% else%} как {{префикс ~ v ~ суффикс}} {% endif%} {% endif%} {% если не l oop .last%}, {% endif%} {% endfor%} {% endmacro%}