{ "cells": [ { "cell_type": "markdown", "id": "6d37ef1e", "metadata": {}, "source": [ "Задача 1. Список таблиц для обработки\n", "Напиши функцию process_tables, которая принимает любое количество названий таблиц через *args.\n", "Функция должна:\n", " вывести строку \"Начинаем обработку\";\n", " затем для каждой таблицы вывести:\n", "\n", "Обрабатываем таблицу: users" ] }, { "cell_type": "code", "execution_count": 10, "id": "e10a9075", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Начинаем обработку\n", "Обрабатываем таблицу: users\n", "Обрабатываем таблицу: orders\n" ] } ], "source": [ "def process_tables(*args):\n", " print(\"Начинаем обработку\")\n", " for table in args:\n", " print(f\"Обрабатываем таблицу: {table}\")\n", "\n", "process_tables(\"users\", \"orders\")" ] }, { "cell_type": "markdown", "id": "1b0576ec", "metadata": {}, "source": [ "Задача2. Напиши функцию build_select_query, которая принимает:\n", " table_name\n", " любое количество колонок через args\n", "Логика:\n", "если колонки не переданы, вернуть:\n", "\n", " SELECT * FROM users\n", "\n", "если колонки переданы, вернуть:\n", " \n", " SELECT id,name,email FROM users" ] }, { "cell_type": "code", "execution_count": 25, "id": "5dfaa1e0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "SELECT id, name FROM users\n" ] } ], "source": [ "def build_select_query(table_name, *args):\n", " if args:\n", " arg = \", \".join(args)\n", " else:\n", " arg = \"*\"\n", " return f\"SELECT {arg} FROM {table_name}\"\n", "print(build_select_query(\"users\", \"id\", \"name\"))" ] }, { "cell_type": "markdown", "id": "a95cdb0a", "metadata": {}, "source": [ "Задача 3. Напиши функцию create_connection_config, которая принимает:\n", " connection_name\n", " любое количество именованных параметров через *kwargs\n", "Функция должна вернуть словарь вида:\n", "\n", " {\n", " \"connection_name\":\"source_pg\",\n", " \"settings\": {\n", " \"host\":\"localhost\",\n", " \"port\":5432,\n", " \"user\":\"etl_user\"\n", " }\n", " }" ] }, { "cell_type": "code", "execution_count": 37, "id": "69c1b275", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'connection_name': 'source_pg', 'settings': {'host': 'localhost', 'port': 5432, 'user': 'etl_user'}}\n" ] } ], "source": [ "def create_coonnection_config(connection_name, **kwargs):\n", " config = {\n", " \"connection_name\" : connection_name,\n", " \"settings\" : kwargs\n", " }\n", " return config\n", "result = create_connection_config(\"source_pg\",host=\"localhost\",port=5432,user=\"etl_user\")\n", "print(result)" ] }, { "cell_type": "markdown", "id": "ce6811bd", "metadata": {}, "source": [ "Задача 4. Запуск ETL-задачи\n", "Напиши функцию run_etl_task, которая принимает:\n", " task_name\n", " любое количество колонок через args\n", " любое количество опций через *kwargs\n", "Логика:\n", " вывести имя задачи;\n", " вывести список колонок;\n", " вывести словарь с опциями.\n", "Пример:\n", "\n", " run_etl_task(\n", " \"load_users\",\n", " \"id\",\"name\",\"email\",\n", " source=\"s3\",\n", " target=\"greenplum\",\n", " mode=\"append\",\n", " retries=3\n", " )" ] }, { "cell_type": "code", "execution_count": 40, "id": "bd011ce6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['load_users', ('id', 'name', 'email'), {'source': 's3', 'target': 'greenplum', 'mode': 'append', 'retries': 3}]\n" ] } ], "source": [ "def run_etl_task(tsk_name, *args, **kwargs):\n", " config = [tsk_name, args, kwargs]\n", " return config\n", "print(run_etl_task(\"load_users\", \"id\",\"name\",\"email\", source=\"s3\", target=\"greenplum\", mode=\"append\", retries=3))" ] } ], "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 }