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, стать
orders
2: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