homework, pet project DE Dmitry_Medvedev #1
@@ -21,7 +21,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 32,
|
||||
"id": "ad2441e7",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
@@ -156,7 +156,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 55,
|
||||
"id": "d3c6683e",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
@@ -172,11 +172,11 @@
|
||||
],
|
||||
"source": [
|
||||
"def build_mart_name(entity_name, layer):\n",
|
||||
" print(f\"{layer}_{entity_name}\")\n",
|
||||
" return f\"{layer}_{entity_name}\"\n",
|
||||
|
|
||||
"\n",
|
||||
"build_mart_name(\"orders\", \"dm\")\n",
|
||||
"build_mart_name(\"users\", \"core\")\n",
|
||||
"build_mart_name(\"payments\", \"stg\")"
|
||||
"print(build_mart_name(\"orders\", \"dm\"))\n",
|
||||
"print(build_mart_name(\"users\", \"core\"))\n",
|
||||
"print(build_mart_name(\"payments\", \"stg\"))"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"execution_count": 59,
|
||||
"id": "2af8c0ea",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
@@ -30,9 +30,9 @@
|
||||
],
|
||||
"source": [
|
||||
"def log_job_start(job_name, level = \"INFO\", env = \"dev\"):\n",
|
||||
" print(f\"[{level}] {job_name} load_users started in {env}\")\n",
|
||||
" print(f\"[{level}] Job {job_name} started in {env}\")\n",
|
||||
|
aleksei_bogatyrev
commented
Имя процесса load_users зафиксировано в строке, а job_name подставляется вместо слова Job. Например, вызов log_job_start("load_orders") выведет «[INFO] load_orders load_users started in dev». По условию имя процесса должно браться из аргумента, сохраняя формат «[INFO] Job load_orders started in dev». Проверь, какая часть сообщения должна быть постоянной. Имя процесса load_users зафиксировано в строке, а job_name подставляется вместо слова Job. Например, вызов log_job_start("load_orders") выведет «[INFO] load_orders load_users started in dev». По условию имя процесса должно браться из аргумента, сохраняя формат «[INFO] Job load_orders started in dev». Проверь, какая часть сообщения должна быть постоянной.
|
||||
"\n",
|
||||
"log_job_start(\"Job\")"
|
||||
"log_job_start(\"load_users\")"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -138,7 +138,7 @@
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"execution_count": 94,
|
||||
"id": "ceb7c30b",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
@@ -148,7 +148,7 @@
|
||||
"'Row is valid'"
|
||||
]
|
||||
},
|
||||
"execution_count": 55,
|
||||
"execution_count": 94,
|
||||
"metadata": {},
|
||||
"output_type": "execute_result"
|
||||
}
|
||||
@@ -158,10 +158,11 @@
|
||||
" if required_fields is None:\n",
|
||||
" required_fields = [\"id\"]\n",
|
||||
" for field in required_fields:\n",
|
||||
" if field not in required_fields:\n",
|
||||
" if field not in row:\n",
|
||||
|
aleksei_bogatyrev
commented
Здесь поле проверяется в required_fields, из которого оно только что взято, поэтому отсутствие поля в row никогда не обнаруживается: даже validate_row({}) возвращает «Row is valid». Проверь, в каком объекте нужно искать обязательные поля. Также успешный return внутри цикла завершает проверку после первого поля: остальные поля не проверяются. Успех должен означать, что проверены все обязательные поля. Проверь случай row={"id": 1}, required_fields=["id", "email"] — ожидается «Missing field: email». Здесь поле проверяется в required_fields, из которого оно только что взято, поэтому отсутствие поля в row никогда не обнаруживается: даже validate_row({}) возвращает «Row is valid». Проверь, в каком объекте нужно искать обязательные поля. Также успешный return внутри цикла завершает проверку после первого поля: остальные поля не проверяются. Успех должен означать, что проверены все обязательные поля. Проверь случай row={"id": 1}, required_fields=["id", "email"] — ожидается «Missing field: email».
|
||||
" return f\"Missing field: {field}\"\n",
|
||||
" else:\n",
|
||||
" return \"Row is valid\""
|
||||
" return \"Row is valid\"\n",
|
||||
"\n",
|
||||
"validate_row({\"id\": 1, \"email\":2}, [\"id\", \"email\"])"
|
||||
]
|
||||
}
|
||||
],
|
||||
|
||||
По условию build_mart_name должна возвращать готовую строку имени витрины, а сейчас возвращает кортеж из двух аргументов. Формирование имени выполняется снаружи, только при печати. Перенеси формирование строки внутрь функции и поправь использование возвращаемого результата. Угловые скобки в шаблоне обозначают подставляемые значения: для первого примера ожидается dm_orders, без символов < и >.
В задании 4 осталось замечание о возвращаемом значении: build_mart_name печатает имя витрины, но возвращает None. По условию функция должна возвращать сформированную строку, чтобы её можно было использовать дальше. Исправь возврат результата и проверь именно возвращаемое значение на трёх примерах из задания.