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

レシピデータセット

RecipeNLGデータセットは、ここからダウンロードできます。220万のレシピが含まれており、サイズは約1 GB未満です。

データセットのダウンロードと解凍

  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ファイルが生成されます。

テーブルの作成

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 パラメータを追加し、最大10件の不正なレコードをスキップできるようにします。
  • 材料、指示、NERフィールドに対して配列があります; これらの配列は不規則な形式で表現されています: JSONとして文字列にシリアル化され、CSVに置かれています - それらをStringとして解析し、その後 JSONExtract 関数を用いてArrayに変換します。

挿入されたデータの検証

行数を確認することで検証します:

クエリ:

結果:

例クエリ

レシピ数によるトップコンポーネント:

この例では、arrayJoin 関数を使用して配列を行のセットに展開する方法を学びます。

クエリ:

結果:

いちごを使った最も複雑なレシピ

結果:

この例では、has関数を使用して配列要素でフィルタリングし、指示の数でソートしています。

全126ステップのウエディングケーキがあります!その指示を表示します:

クエリ:

結果:

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

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