Skip to main content
Skip to main content
Edit this page

Набор данных кулинарных рецептов

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

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

  1. Перейдите на страницу загрузки https://recipenlg.cs.put.poznan.pl/dataset.
  2. Примите Правила и условия и скачайте zip-архив с набором данных.
  3. Распакуйте zip-архив и вы получите файл full_dataset.csv.

Создайте таблицу

Запустите клиент ClickHouse и выполните следующий запрос для создания таблицы recipes:

Добавьте данные в таблицу

Чтобы добавить данные из файла full_dataset.csv в таблицу recipes, выполните команду:

Это один из примеров анализа пользовательских 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, которые распознаются как NULL в SQL. Поэтому используется параметр --input_format_allow_errors_num 10, разрешающий пропустить до десяти некорректных записей;
  • массивы ingredients, directions и NER представлены в необычном виде: они сериализуются в строку формата JSON, а затем помещаются в CSV — тогда они могут считываться и обрабатываться как обычные строки (String). Чтобы преобразовать строку в массив, используется функция JSONExtract.

Проверьте добавленные данные

Чтобы проверить добавленные данные, подсчитайте количество строк в таблице:

Запрос:

Результат:

Примеры запросов

Самые упоминаемые ингридиенты в рецептах:

В этом примере вы узнаете, как развернуть массив в набор строк с помощью функции arrayJoin.

Запрос:

Результат:

Самые сложные рецепты с клубникой

Запрос:

Результат:

В этом примере используется функция has для проверки вхождения элемента в массив, а также сортировка по количеству шагов (length(directions)).

Существует свадебный торт, который требует целых 126 шагов для производства! Рассмотрим эти шаги:

Запрос:

Результат:

Online Playground

Этот набор данных доступен в Online Playground.