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

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

Набор данных 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, и до десяти некорректных записей могут быть пропущены;
  • Массивы содержатся для полей ingredients, directions и NER; эти массивы представлены в необычной форме: они сериализованы в строку как JSON и затем помещены в CSV — мы парсим их как String и затем используем функцию JSONExtract, чтобы преобразовать их в Array.

Валидация вставленных данных

Проверив количество строк:

Запрос:

Результат:

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

Наиболее употребляемые компоненты по количеству рецептов:

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

Запрос:

Результат:

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

Результат:

В этом примере мы используем has функцию для фильтрации по элементам массива и сортируем по количеству инструкций.

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

Запрос:

Результат:

Онлайн-игровая площадка

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