レシピデータセット
RecipeNLGデータセットは、ここからダウンロードできます。220万のレシピが含まれており、サイズは約1 GB未満です。
データセットのダウンロードと解凍
- ダウンロードページに移動します https://recipenlg.cs.put.poznan.pl/dataset。
- 利用規約に同意し、zipファイルをダウンロードします。
- オプション:
md5sum dataset.zip
を使用してzipファイルを検証し、3a168dfd0912bb034225619b3586ce76
と等しいことを確認します。 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ステップのウエディングケーキがあります!その指示を表示します:
クエリ:
結果:
オンラインプレイグラウンド
データセットはオンラインプレイグラウンドでも利用可能です。