Перейти к основному содержимому
Перейти к основному содержимому

Набор данных рецептов

Набор данных RecipeNLG доступен для загрузки здесь. Он содержит 2.2 миллиона рецептов. Размер составляет чуть меньше 1 ГБ.

Загрузка и распаковка набора данных

  1. Перейдите на страницу загрузки https://recipenlg.cs.put.poznan.pl/dataset.
  2. Примите Условия и положения и загрузите ZIP-файл.
  3. Опционально: Используйте команду md5sum dataset.zip, чтобы проверить целостность ZIP-файла; он должен совпадать с 3a168dfd0912bb034225619b3586ce76.
  4. Распакуйте 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 шагов для приготовления! Покажем эти инструкции:

Запрос:

Результат:

Онлайн Песочница

Данные также доступны в Онлайн Песочнице.