refactor(sql): reorganize sql files into structured directory hierarchy

Move DDL files from flat ddl/ directory to sql/ddl/ with layer-based
subdirectories (stg, ods, dds, dm). Move batch transformation SQL from
jobs/ to sql/ layer directories. Update scripts and documentation to
reflect new paths for improved organization and Airflow integration.
This commit is contained in:
2026-02-07 20:51:51 +03:00
parent 6466921bda
commit 9e340bb729
14 changed files with 95 additions and 64 deletions
+25 -15
View File
@@ -3,8 +3,8 @@
# Скрипт применения DDL в ClickHouse
#
# Назначение:
# Последовательно применяет SQL-файлы из ddl/*.sql в базу ClickHouse.
# Файлы применяются в алфавитном порядке (00 → 10 → 20 → 30 → 40).
# Последовательно применяет SQL-файлы из sql/ddl/* в базу ClickHouse.
# Порядок фиксированный: 00 → 10 → 20 → 30 → 40.
#
# Как запускать:
# make ddl
@@ -22,7 +22,7 @@ set -euo pipefail
# Директория со скриптом
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DDL_DIR="${SCRIPT_DIR}/../ddl"
SQL_ROOT_DIR="${SCRIPT_DIR}/../sql"
# Параметры подключения (можно переопределить через переменные окружения)
COMPOSE_BIN="${COMPOSE_BIN:-docker compose}"
@@ -31,7 +31,7 @@ CLICKHOUSE_DB="${CLICKHOUSE_DB:-default}"
CLICKHOUSE_USER="${CLICKHOUSE_USER:-default}"
CLICKHOUSE_PASSWORD="${CLICKHOUSE_PASSWORD:-123456}"
echo "Применение DDL из ${DDL_DIR}..."
echo "Применение DDL из ${SQL_ROOT_DIR}..."
# -----------------------------------------------------------------------------
# Проверка: ClickHouse запущен?
@@ -45,18 +45,28 @@ fi
# -----------------------------------------------------------------------------
# Применение SQL-файлов по порядку
# -----------------------------------------------------------------------------
# shellcheck disable=SC2044
for sql_file in "${DDL_DIR}"/*.sql; do
if [[ -f "$sql_file" ]]; then
echo "Применение: $(basename "$sql_file")"
${COMPOSE_BIN} exec -T "${CLICKHOUSE_SERVICE}" clickhouse-client \
--user="${CLICKHOUSE_USER}" \
--password="${CLICKHOUSE_PASSWORD}" \
--database="${CLICKHOUSE_DB}" \
--multiquery \
< "$sql_file"
echo " ✓ OK"
DDL_FILES=(
"${SQL_ROOT_DIR}/ddl/00_databases.sql"
"${SQL_ROOT_DIR}/ddl/stg/10_stg.sql"
"${SQL_ROOT_DIR}/ddl/ods/20_ods.sql"
"${SQL_ROOT_DIR}/ddl/dds/30_dds.sql"
"${SQL_ROOT_DIR}/ddl/dm/40_dm.sql"
)
for sql_file in "${DDL_FILES[@]}"; do
if [[ ! -f "$sql_file" ]]; then
echo "Ошибка: не найден SQL-файл: $sql_file" >&2
exit 1
fi
echo "Применение: $(basename "$sql_file")"
${COMPOSE_BIN} exec -T "${CLICKHOUSE_SERVICE}" clickhouse-client \
--user="${CLICKHOUSE_USER}" \
--password="${CLICKHOUSE_PASSWORD}" \
--database="${CLICKHOUSE_DB}" \
--multiquery \
< "$sql_file"
echo " ✓ OK"
done
echo ""
+19 -4
View File
@@ -3,7 +3,7 @@
# Скрипт batch-трансформации данных: ODS → DDS → DM
#
# Назначение:
# Запускает SQL-скрипты из jobs/ для преобразования данных между слоями:
# Запускает SQL-скрипты из sql/dds и sql/dm для преобразования данных между слоями:
# 1. ODS → DDS : Сборка сущностей из типизированных данных
# 2. DDS → DM : Обновление сводки по качеству данных (dq_summary)
#
@@ -24,7 +24,9 @@ set -euo pipefail
# Директория со скриптом
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
JOBS_DIR="${SCRIPT_DIR}/../jobs"
SQL_ROOT_DIR="${SCRIPT_DIR}/../sql"
DDS_TRANSFORM_SQL="${SQL_ROOT_DIR}/dds/30_ods_to_dds.sql"
DM_TRANSFORM_SQL="${SQL_ROOT_DIR}/dm/40_dds_to_dm.sql"
# Параметры подключения
COMPOSE_BIN="${COMPOSE_BIN:-docker compose}"
@@ -42,6 +44,19 @@ if ! ${COMPOSE_BIN} ps | grep -q "${CLICKHOUSE_SERVICE}"; then
exit 1
fi
# -----------------------------------------------------------------------------
# Проверка: SQL-файлы batch существуют?
# -----------------------------------------------------------------------------
if [[ ! -f "${DDS_TRANSFORM_SQL}" ]]; then
echo "Ошибка: Не найден SQL-файл: ${DDS_TRANSFORM_SQL}"
exit 1
fi
if [[ ! -f "${DM_TRANSFORM_SQL}" ]]; then
echo "Ошибка: Не найден SQL-файл: ${DM_TRANSFORM_SQL}"
exit 1
fi
# -----------------------------------------------------------------------------
# Проверка: в ODS есть данные?
# -----------------------------------------------------------------------------
@@ -83,7 +98,7 @@ ${COMPOSE_BIN} exec -T "${CLICKHOUSE_SERVICE}" clickhouse-client \
--user="${CLICKHOUSE_USER}" \
--password="${CLICKHOUSE_PASSWORD}" \
--database="${CLICKHOUSE_DB}" \
--multiquery < "${JOBS_DIR}/30_dds_refresh.sql"
--multiquery < "${DDS_TRANSFORM_SQL}"
echo " ✓ DDS обновлён"
@@ -105,7 +120,7 @@ ${COMPOSE_BIN} exec -T "${CLICKHOUSE_SERVICE}" clickhouse-client \
--user="${CLICKHOUSE_USER}" \
--password="${CLICKHOUSE_PASSWORD}" \
--database="${CLICKHOUSE_DB}" \
--multiquery < "${JOBS_DIR}/40_dm_refresh.sql"
--multiquery < "${DM_TRANSFORM_SQL}"
echo " ✓ DM обновлён"