{ "cells": [ { "cell_type": "markdown", "id": "669999d9", "metadata": {}, "source": [ "Задача 1. Лог запуска процесса\n", "Напиши функцию log_job_start, которая принимает:\n", " job_name\n", " level=\"INFO\"\n", " env=\"dev\"\n", "Функция должна выводить строку:\n", " [INFO] Job load_users started in dev" ] }, { "cell_type": "code", "execution_count": 59, "id": "2af8c0ea", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[INFO] Job load_users started in dev\n" ] } ], "source": [ "def log_job_start(job_name, level = \"INFO\", env = \"dev\"):\n", " print(f\"[{level}] Job {job_name} started in {env}\")\n", "\n", "log_job_start(\"load_users\")" ] }, { "cell_type": "markdown", "id": "60ce459d", "metadata": {}, "source": [ "Задача 2. Подключение к источнику\n", "Напиши функцию connect_source, которая принимает:\n", " source_name\n", " host=\"localhost\"\n", " port=5432\n", " user=\"etl_user\"\n", "Функция должна возвращать словарь с настройками подключения." ] }, { "cell_type": "code", "execution_count": null, "id": "d73d7ab5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'source_name': 'dwh', 'host': 'localhost', 'port': 5432, 'user': 'etl_user'} \n" ] } ], "source": [ "def connect_source(source_name, host = \"localhost\", port = 5432, user = \"etl_user\"):\n", " connecting_configuration = {\n", " \"source_name\" : source_name,\n", " \"host\" : host,\n", " \"port\" : port,\n", " \"user\" : user\n", " }\n", " return connecting_configuration" ] }, { "cell_type": "markdown", "id": "e667db79", "metadata": {}, "source": [ "Задача 3. Построение SELECT-запроса\n", "Напиши функцию build_select_query, которая принимает:\n", " table_name\n", " columns=None\n", "Логика:\n", " если columns=None, функция должна вернуть:\n", " SELECT * FROM table_name\n", " если список колонок передан, собрать их через запятую." ] }, { "cell_type": "code", "execution_count": 51, "id": "4b710ebe", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'SELECT id, user_id, email FROM orders'" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def build_select_query(table_name, columns = None):\n", " if columns is None:\n", " return f\"SELECT * FROM {table_name}\"\n", " else:\n", " columns_str = \", \".join(columns)\n", " return f\"SELECT {columns_str} FROM {table_name}\"\n", "\n", "build_select_query(\"orders\")\n", "build_select_query(\"orders\", [\"id\", \"user_id\", \"email\"])\n" ] }, { "cell_type": "markdown", "id": "ba059bd5", "metadata": {}, "source": [ "Задача 4. Проверка обязательных полей\n", "Напиши функцию validate_row, которая принимает:\n", " row — словарь;\n", " required_fields=None\n", "Логика:\n", " если required_fields=None, использовать [\"id\"];\n", " проверить, есть ли все нужные поля;\n", " если какого-то поля нет, вернуть строку:\n", " Missing field: email\n", " если всё хорошо, вернуть:\n", " Row is valid" ] }, { "cell_type": "code", "execution_count": 94, "id": "ceb7c30b", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'Row is valid'" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def validate_row(row, required_fields = None):\n", " if required_fields is None:\n", " required_fields = [\"id\"]\n", " for field in required_fields:\n", " if field not in row:\n", " return f\"Missing field: {field}\"\n", " return \"Row is valid\"\n", "\n", "validate_row({\"id\": 1, \"email\":2}, [\"id\", \"email\"])" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.7" } }, "nbformat": 4, "nbformat_minor": 5 }