メインコンテンツまでスキップ
メインコンテンツまでスキップ

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

  1. ダウンロードページに移動します https://recipenlg.cs.put.poznan.pl/dataset.
  2. 利用規約に同意し、zipファイルをダウンロードします。
  3. オプション: md5sum dataset.zip を使用してzipファイルを検証します。値は 3a168dfd0912bb034225619b3586ce76 と等しいはずです。
  4. 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のステップが必要なウェディングケーキがあります!その指示を表示します:

クエリ:

結果:

オンラインプレイグラウンド

データセットは、オンラインプレイグラウンドでも利用可能です。