Скачайте набор данных
Распакуйте набор данных
Menu— информация о меню: название ресторана, дата, когда меню было замечено, и т. д.Dish— информация о блюдах: название блюда и некоторые его характеристики.MenuPage— информация о страницах меню, поскольку каждая страница относится к какому-либо меню.MenuItem— элемент меню. Блюдо вместе с его ценой на определенной странице меню: ссылки на блюдо и страницу меню.
Создайте таблицы
Импорт данных
format_csv_allow_single_quotes, поскольку в полях данных используются только двойные кавычки, а одинарные кавычки могут встречаться внутри значений и не должны вводить CSV-парсер в заблуждение.
Мы отключаем input_format_null_as_default, так как в наших данных нет NULL. В противном случае ClickHouse будет пытаться разобрать последовательности \N и может перепутать их с \ в данных.
Настройка date_time_input_format best_effort позволяет разбирать поля DateTime в самых разных форматах. Например, ISO-8601 без секунд, например ‘2000-01-01 01:02’, будет распознан. Без этой настройки допускается только фиксированный формат DateTime.
Денормализуйте данные
JOIN каждый раз. Такие данные называются “денормализованными”.
Мы создадим таблицу menu_item_denorm, которая будет содержать все данные, объединённые с помощью JOIN:
Проверьте данные
Query
Response
Выполните несколько запросов
Средние исторические цены на блюда
Query
Response
Цены на бургеры
Query
Response
Водка
Query
Response
vodka, нам нужно написать ILIKE '%vodka%', и это, безусловно, звучит эффектно.
Икра
Query
Response