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

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

Набор данных 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 шагов для его приготовления! Показать эти шаги:

Запрос:

Результат:

Онлайн Площадка

Набор данных также доступен в Онлайн Площадке.