Вступить в клуб →
сложнаяpythondbt-проект: модели, окружения и CI

Подстановка ref и source в SQL модели для окружения

Напишите compile_sql(sql, env) — упрощённую компиляцию модели dbt.

  • В тексте встречаются вызовы {{ ref('имя') }} и {{ source('источник', 'таблица') }}. Внутри скобок могут быть одинарные или двойные кавычки и любые пробелы вокруг элементов.
  • env — словарь с ключами "schema" (схема для моделей) и "sources" — словарь источник → схема.
  • ref('x') заменяется на схема.x, source('s', 't') — на sources[s].t.
  • Верните кортеж (скомпилированный_sql, refs), где refs — отсортированный список уникальных имён из ref.
  • Если источника нет в env["sources"], бросьте KeyError.

заготовка решения

import re


def compile_sql(sql, env):
    # ваш код
    return None

🔒 Проверка ответа — для участников клуба

  • Автотесты прямо в браузере
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела