| courier_id | order_id | action | time |
|---|---|---|---|
| 2766 | 59342 | deliver_order | 2022-09-08 23:18:00 |
| 1716 | 52265 | deliver_order | 2022-09-07 19:22:00 |
| 154 | 23521 | accept_order | 2022-09-02 06:34:00 |
| 1713 | 19462 | deliver_order | 2022-09-01 07:03:00 |
| 1038 | 15831 | deliver_order | 2022-08-31 06:56:00 |
Лабораторна робота №1
Хмарні технології обробки даних
Найближчі кілька лабораторних робіт ми будемо працювати з даними, які представляють сервіс з доставки продуктів. Тому дуже важливо розібратися у них. Всього буде 6 таблиць:
courier_actions- дії кур’єрівcouriers- дані про кур’єрівorders- дані про замовленняproducts- дані про продуктиuser_actions- дії користувачівusers- дані про користувачів
Важливо
1. Обліковий запис Google Cloud Platform
- Створіть проєкт в Google Cloud Platform (GCP)1, наприклад
cloud-course-IAV-21.
2. Дані
- Створіть набір даних (dataset) в BigQuery, наприклад
food_delivery. - Завантажте дані в таблиці відповідно до назви файлів. Використайте наступні схеми для створення таблиць:
courier_actions:courier_id- INT64, id кур’єраorder_id- INT64, id замовленняaction- STRING, дія кур’єра із замовленнямtime- DATETIME, час виконання дії
couriers:courier_id- INT64, id кур’єраbitrh_day- DATE, дата народженняsex- STRING, стать
orders2:order_id- INT64, id замовленняcreation_time- DATETIME, час створення замовленняproduct_ids- INT64, REPEATED, id продуктів у замовленні
products:product_id- INT64, id продуктуname- STRING, назва продуктуprice- FLOAT64, ціна продукту
user_actions:user_id- INT64, id користувачаorder_id- INT64, id замовленняaction- STRING, дія користувача із замовленнямtime- DATETIME, час виконання дії
users:user_id- INT64, id користувачаbitrh_day- DATE, дата народженняsex- STRING, стать
Приклади даних
Для кращого розуміння наводжу зрізи даних з кожної таблиці.
courier_actions:
couriers:
| courier_id | birth_date | sex |
|---|---|---|
| 2163 | 1992-09-21 | male |
| 37 | 1991-05-02 | female |
| 18 | 1995-01-05 | female |
| 2314 | 1990-12-07 | male |
| 166 | 1989-12-08 | female |
orders:
| order_id | creation_time | product_ids |
|---|---|---|
| 6063 | 2022-08-28 10:44:00 | ['31', '79', '14', '32', '10'] |
| 44689 | 2022-09-05 21:29:00 | ['80', '77', '76', '83'] |
| 18888 | 2022-09-01 00:36:00 | ['82', '3', '56', '63'] |
| 26217 | 2022-09-02 19:06:00 | ['57', '6', '40'] |
| 9526 | 2022-08-29 12:04:00 | ['1', '30'] |
products:
| product_id | name | price |
|---|---|---|
| 41 | carbonated water | 80 |
| 57 | pork | 450 |
| 68 | dried fish | 116 |
| 56 | sausages | 150 |
| 35 | lemonade | 90 |
user_actions:
| user_id | order_id | action | time |
|---|---|---|---|
| 10792 | 24277 | create_order | 2022-09-02 10:40:00 |
| 1382 | 6061 | create_order | 2022-08-28 10:42:00 |
| 5092 | 55299 | create_order | 2022-09-08 08:22:00 |
| 10405 | 23282 | create_order | 2022-09-02 04:15:00 |
| 15622 | 39134 | create_order | 2022-09-04 20:18:00 |
users:
| user_id | birth_date | sex |
|---|---|---|
| 3366 | 1993-08-23 | female |
| 20802 | 1993-09-27 | male |
| 20784 | 1993-03-28 | female |
| 12504 | 1993-10-20 | female |
| 6255 | 1993-11-27 | female |
3. Запити
Створіть запити для вирішення наступних завдань:
- Який товар має найдовшу назву?
- Які користувачі зробили найбільше замовлень?
- Підвищить ціну на 5% тільки на товари, вартість яких перевищує 100 одиниць. Ціну решти товарів залиште без змін. Також не підвищуйте ціну на ікру (caviar), яка й так коштує 800 одиниць. Виведіть id та найменування всіх товарів, їх стару та нову ціну.
- Розрахуйте вік наймолодшого3 кур’єра з таблиці
couriers. - Використовуючи функцію
DATE_TRUNC, порахуйте, скільки замовлень було зроблено та скільки було скасовано кожного місяця. Розрахунки проводьте за таблицеюuser_actions. - За таблицями
ordersтаcourier_actionsвизначте id десяти замовлень, які доставляли найдовше.
Примітка
Документація до операторів та функцій BigQuery: https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators
Важливо
- Дедлайн здачі роботи: 26.03.2024