Набор данных рецептов
Набор данных RecipeNLG доступен для загрузки здесь. Он содержит 2.2 миллиона рецептов. Размер составляет чуть меньше 1 ГБ.
Загрузка и распаковка набора данных
- Перейдите на страницу загрузки https://recipenlg.cs.put.poznan.pl/dataset.
- Примите Условия и положения и загрузите ZIP-файл.
- Опционально: Используйте команду
md5sum dataset.zip
, чтобы проверить целостность ZIP-файла; он должен совпадать с3a168dfd0912bb034225619b3586ce76
. - Распакуйте ZIP-файл с помощью команды
unzip dataset.zip
. Вы получите файлfull_dataset.csv
в директорииdataset
.
Создание таблицы
Запустите clickhouse-client
и выполните следующий запрос CREATE:
Вставка данных
Выполните следующую команду:
Это пример того, как разобрать пользовательский CSV, так как он требует нескольких настроек.
Объяснение:
- Набор данных в формате CSV, но требует некоторой предобработки при вставке; мы используем табличную функцию input для выполнения предобработки;
- Структура CSV-файла указана в аргументе табличной функции
input
; - Поле
num
(номер строки) ненужное - мы извлекаем его из файла и игнорируем; - Мы используем
FORMAT CSVWithNames
, но заголовок в CSV будет проигнорирован (параметр командной строки--input_format_with_names_use_header 0
), потому что заголовок не содержит имени для первого поля; - Файл использует только двойные кавычки для обрамления CSV-строк; некоторые строки не обрамлены двойными кавычками, и одинарная кавычка не должна восприниматься как обрамление строки - поэтому мы также добавляем параметр
--format_csv_allow_single_quote 0
; - Некоторые строки из CSV не могут быть разобраны, потому что они содержат последовательность
\M/
в начале значения; единственное значение, начинающееся с обратной косой черты в CSV, может быть\N
, которое интерпретируется как SQL NULL. Мы добавляем параметр--input_format_allow_errors_num 10
, и до десяти поврежденных записей могут быть пропущены; - В массивы входят ингредиенты, направления и поля NER; эти массивы представлены в необычной форме: они сериализованы в строку как JSON и затем размещены в CSV - мы разбираем их как String, а затем используем функцию JSONExtract, чтобы преобразовать их в Array.
Проверка вставленных данных
Проверив количество строк:
Запрос:
Результат:
Примеры запросов
Топ компонентов по количеству рецептов:
В этом примере мы учимся использовать функцию arrayJoin, чтобы расширить массив в набор строк.
Запрос:
Результат:
Самые Сложные Рецепты с Клубникой
Результат:
В этом примере мы используем has функцию для фильтрации по элементам массива и сортируем по количеству направлений.
Есть свадебный торт, для которого требуется целых 126 шагов для приготовления! Покажем эти инструкции:
Запрос:
Результат:
Онлайн Песочница
Данные также доступны в Онлайн Песочнице.