Набор данных рецептов
Набор данных 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 шагов для его приготовления! Показать эти шаги:
Запрос:
Результат:
Онлайн Площадка
Набор данных также доступен в Онлайн Площадке.