Skip to main content
All quickstarts
リアルタイム分析データウェアハウジングCloudOSS

概要

ニューヨーク市のタクシーのサンプルデータセットを使用して、ClickHouse でデータを取り込み、クエリする方法を学びます。

前提条件

このチュートリアルを完了するには、稼働中の ClickHouse サービスにアクセスできる必要があります。手順については、クイックスタートガイドを参照してください。
1

新しいテーブルを作成する

New York Cityのタクシーデータセットには、数百万件のタクシー乗車記録に関する詳細が含まれています。チップ額、通行料、支払いタイプなどのカラムが含まれます。このデータを格納するテーブルを作成します。
  1. SQL Console に接続します。
    • ClickHouse Cloud の場合は、ドロップダウンメニューからサービスを選択し、左側のナビゲーションメニューで SQL Console を選択します。
    • セルフマネージド ClickHouse の場合は、https://_hostname_:8443/play の SQL Console に接続します。詳細については、ClickHouse 管理者に確認してください。
  2. default データベースに以下の trips テーブルを作成します。
2

データセットを追加

テーブルを作成したら、S3 上の CSV ファイルから New York City のタクシーデータを追加します。
  1. 次のコマンドは、S3 上の 2 つのファイル trips_1.tsv.gztrips_2.tsv.gz から約 2,000,000 行を trips テーブルに挿入します。
  2. INSERT が完了するまで待ちます。150 MB のデータのダウンロードには少し時間がかかる場合があります。
  3. 挿入が完了したら、正しく実行されたことを確認します。
    このクエリは 1,999,657 行を返すはずです。
3

データを分析する

いくつかのクエリを実行してデータを分析してみましょう。以下の例を試すか、独自の SQL クエリを実行してみてください。
  • 平均チップ額を計算します。

  • 乗客数に基づいて平均コストを算出します。

    passenger_count は 0 ~ 9 の値を取ります。

  • 地区ごとの1日あたりの乗車回数を計算します。

  • 各移動の所要時間を分単位で計算し、所要時間ごとに結果をグループ化します。

  • 各地域の乗車件数を時間帯別に表示します。

  1. ラガーディア空港またはJFK空港への乗車データを取得します。

4

Dictionary を作成する

Dictionary は、メモリ上に保持されるキー・バリューのペアのマッピングです。詳細は Dictionaries を参照してくださいClickHouse サービス内のテーブルに関連付けられた Dictionary を作成します。 このテーブルと Dictionary は、ニューヨーク市の地区ごとに 1 行を持つ CSV ファイルに基づいています。各 neighborhood は、ニューヨーク市の 5 つの borough (Bronx、Brooklyn、Manhattan、Queens、Staten Island) の名称と、Newark Airport (EWR) に対応付けられています。以下は、使用するCSVファイルの内容を表形式で抜粋したものです。ファイル内の LocationID カラムは、trips テーブルの pickup_nyct2010_gid および dropoff_nyct2010_gid カラムに対応します:
  1. 次のSQLコマンドを実行します。このコマンドはtaxi_zone_dictionaryという名前のDictionaryを作成し、S3上のCSVファイルからデータを読み込んでDictionaryに投入します。ファイルのURLはhttps://datasets-documentation.s3.eu-west-3.amazonaws.com/nyc-taxi/taxi_zone_lookup.csvです。
LIFETIME を 0 に設定すると、自動更新が無効になり、S3 bucket への不要なトラフィックを回避できます。状況に応じて、別の値を設定することもできます。詳細については、LIFETIME を使用した Dictionary データの更新を参照してください。
  1. 動作を確認します。次のクエリは、各 neighborhood につき 1 行、合計 265 行を返すはずです。
  2. dictGet 関数 (またはそのバリエーション) を使用して、Dictionary から値を取得します。Dictionary の名前、取得する値、キー (この例では taxi_zone_dictionaryLocationID カラム) を指定します。 たとえば、次のクエリは、JFK空港に対応するLocationID 132 のBoroughを返します。
    JFKはクイーンズにあります。値の取得時間が実質的に0であることに注目してください。
  3. dictHas 関数を使用して、Dictionary にキーが存在するかどうかを確認できます。たとえば、次のクエリは 1 (ClickHouse では “true”) を返します。
  4. 次のクエリは、4567 が Dictionary 内の LocationID に存在しない値であるため、0 を返します。
  5. クエリで dictGet 関数を使用して borough の名前を取得します。例:
    このクエリは、LaGuardia 空港または JFK 空港で終了する区ごとのタクシー乗車記録数を集計します。結果は次のようになります。乗車場所の地域が不明な乗車記録がかなり多いことに注目してください。
5

結合を実行する

taxi_zone_dictionarytrips テーブルと結合するクエリをいくつか作成します。
  1. まず、上記の空港クエリと同様の動作をする単純な JOIN を実行します。
    応答は dictGet クエリと同じになります。
上記の JOIN クエリの出力は、dictGetOrDefault を使用した直前のクエリと同じです (Unknown の値が含まれない点を除く) 。内部では、ClickHouse は taxi_zone_dictionary Dictionary に対して実際には dictGet 関数を呼び出していますが、JOIN 構文の方が SQL 開発者にはなじみがあります。
  1. このクエリは、チップ額が最も高い 1,000 件の乗車記録の行を返した後、各行を Dictionary と内部結合します。
一般に、ClickHouse では SELECT * を頻繁に使用することは避けます。実際に必要なカラムのみを取得してください。

次のステップ

以下のドキュメントで、ClickHouseについてさらに詳しく学べます。
Last modified on August 14, 2026