Recipes Dataset
The RecipeNLG dataset is available for download here. It contains 2.2 million recipes. The size is slightly less than 1 GB.
Download and Unpack the Dataset
- ダウンロードページに移動します https://recipenlg.cs.put.poznan.pl/dataset.
- 利用規約に同意し、zipファイルをダウンロードします。
- オプション:
md5sum dataset.zip
を使用してzipファイルを検証します。値は3a168dfd0912bb034225619b3586ce76
と等しいはずです。 unzip dataset.zip
を使用してzipファイルを解凍します。dataset
ディレクトリ内にfull_dataset.csv
ファイルが生成されます。
Create a Table
clickhouse-client を実行し、次のCREATEクエリを実行します:
Insert the Data
次のコマンドを実行します:
これはカスタム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
パラメーターを追加し、最大10件の不正なレコードをスキップできます; - 材料、手順、NERフィールドに配列があります; これらの配列は通常とは異なる形式で表現されています: JSONとして文字列にシリアライズされ、その後CSVに配置されます - これをStringとして解析し、次に JSONExtract 関数を使用してArrayに変換します。
Validate the Inserted Data
行数を確認することで検証します:
クエリ:
結果:
Example Queries
Top Components by the Number of Recipes:
この例では、arrayJoin 関数を使用して配列を行セットに展開する方法を学びます。
クエリ:
結果:
いちごを使った最も複雑なレシピ
結果:
この例では、has 関数を使用して、配列要素でフィルタリングし、指示の数でソートします。
126のステップが必要なウェディングケーキがあります!その指示を表示します:
クエリ:
結果:
オンラインプレイグラウンド
データセットは、オンラインプレイグラウンドでも利用可能です。