diff --git a/docs/labs/1-1-events-enriched.md b/docs/labs/1-1-events-enriched.md index 2a9587f..3de404a 100644 --- a/docs/labs/1-1-events-enriched.md +++ b/docs/labs/1-1-events-enriched.md @@ -6,6 +6,8 @@ ## Сначала прочитать - [«Хранилище и его слои»](../handbook/storage-layers.md). +- [Как применить свой DDL](README.md#как-применить-свой-ddl): файл для решения + и подключение с правами на создание витрины. ## Роль витрины @@ -70,6 +72,13 @@ DDS читают из ODS без отдельной загрузки. Эти с ## Как проверить себя +После применения DDL откройте Airflow по [адресу из README](../../README.md#адреса-и-пароли), +найдите даг `homework_check` и запустите его вручную. В новом запуске откройте +задачу `events_enriched`: она должна завершиться успешно. Если задача +красная, откройте ее журнал (`Logs`) — там будет причина ошибки, а при +расхождениях с источником — дни и примеры несовпадений. Задачи еще не +созданных витрин будут красными; это ожидаемо и не мешает проверке первой. + Деловой ключ — `event_id` внутри дня. Получите результат прямо из `dds.event_v` за тот же день. Соедините его с витриной полным внешним соединением по `event_id`. Посчитайте строки, где ключ отсутствует с одной diff --git a/docs/labs/README.md b/docs/labs/README.md index b3316e1..ca355ba 100644 --- a/docs/labs/README.md +++ b/docs/labs/README.md @@ -64,8 +64,10 @@ DM](../architecture/dm.md). Пример обоснования — `dm.revenue_daily_dist` в [`sql/ddl/55-dm-tables.sql`](../../sql/ddl/55-dm-tables.sql). -**Где лежит код.** DDL заданий — в `sql/ddl/70-labs.sql`: он применяется -после стендовых, поэтому ваши объекты не мешаются со стендовыми. В +**Где лежит код.** DDL заданий — в `sql/ddl/70-labs.sql`. +При создании мира он применяется после стендовых файлов. +В уже работающем стенде сохранение файла и повторный `make up` новый DDL +не применят — выполните его сами, как описано ниже. В `sql/dm/<витрина>_scope.sql` определяются дни прогона, в `_rebuild.sql` они собираются в донор, в `_replace.sql` заменяется партиция. Задачу сборки добавьте в [`dags/dm_transform.py`](../../dags/dm_transform.py): без нее @@ -76,6 +78,20 @@ DM](../architecture/dm.md). образец всего порядка пересборки. Состав колонок берите из своего ТЗ, иначе получите показатели другой витрины. +## Как применить свой DDL + +В DBeaver создайте подключение по [инструкции в README](../../README.md#подключиться-из-dbeaver), +но укажите пользователя `etl` и пароль из `CLICKHOUSE_ETL_PASSWORD` в `.env`. +Пользователь `analyst` из той инструкции предназначен для чтения; +у `etl` есть права создавать таблицы и представления в `dm`. + +Создайте файл `sql/ddl/70-labs.sql` и сохраняйте в нем DDL своих витрин. +Откройте его в SQL-редакторе этого подключения и выполните DDL текущего +задания. Создавайте объекты с +`ON CLUSTER clickstream_cluster`, чтобы они появились на обеих нодах; +образец для представления — [`sql/ddl/60-dm-views.sql`](../../sql/ddl/60-dm-views.sql). +Сохраненный файл позволит воссоздать ваши объекты при пересборке мира. + ## Самопроверка ступени 1 Даг `homework_check` запускается руками, расписания у него нет. Задача