メインコンテンツへスキップ
メインコンテンツへスキップ

SQL コンソール

SQL コンソールは、ClickHouse Cloud 上のデータベースを探索しクエリを実行するための、最速かつ最も手軽な方法です。SQL コンソールを使用すると、次のことができます:

  • ClickHouse Cloud サービスに接続する
  • テーブル データを表示、フィルタリング、ソートする
  • クエリを実行し、数回のクリックで結果データを可視化する
  • クエリをチームメンバーと共有し、より効果的に共同作業を行う

テーブルの確認

テーブル一覧とスキーマ情報の表示

ClickHouse インスタンスに含まれるテーブルの概要は、左サイドバーで確認できます。左サイドバー上部のデータベースセレクタを使用して、特定のデータベース内のテーブルを表示します。

左サイドバーにデータベーステーブルが表示されたテーブル一覧とスキーマビュー

一覧内のテーブルは展開して、カラムおよびデータ型を表示することもできます。

展開されたテーブルビューにカラム名とデータ型が表示されている様子

テーブルデータの確認

リスト内のテーブルをクリックすると、新しいタブで開きます。Table View では、データを簡単に表示・選択・コピーできます。Microsoft Excel や Google Sheets などのスプレッドシートアプリケーションへコピー&ペーストしても、構造と書式が保持されます。フッターのナビゲーションを使用して、テーブルデータのページ(30 行単位でページ分割)を切り替えることができます。

データを選択してコピーできるテーブルビュー

セルデータの検査

Cell Inspector ツールを使用すると、1 つのセルに含まれる大量のデータを表示できます。起動するには、セルを右クリックして「Inspect Cell」を選択します。セルインスペクタ内の内容は、右上にあるコピーアイコンをクリックすることでコピーできます。

選択されたセルの内容を表示している Cell Inspector ダイアログ

テーブルのフィルタリングと並べ替え

テーブルをソートする

SQL コンソールでテーブルをソートするには、テーブルを開き、ツールバーの「Sort」ボタンを選択します。このボタンをクリックすると、ソートの設定を行えるメニューが開きます。ソートに使用するカラムを選択し、ソート順(昇順または降順)を設定できます。「Apply」を選択するか Enter キーを押してテーブルをソートします。

カラムに対して降順ソートを設定するための設定を示す Sort ダイアログ

SQL コンソールでは、テーブルに複数のソート条件を追加することもできます。別のソート条件を追加するには、もう一度「Sort」ボタンをクリックします。注意:ソートはソートペインに表示される順番(上から下)で適用されます。ソート条件を削除するには、そのソートの横にある「x」ボタンをクリックします。

テーブルのフィルタリング

SQL コンソールでテーブルをフィルタリングするには、テーブルを開き、「Filter」ボタンを選択します。ソートと同様に、このボタンを選択するとフィルタを設定できるメニューが開きます。フィルタに使用するカラムを選択し、必要な条件を設定できます。SQL コンソールは、カラム内に含まれるデータ型に対応したフィルタのオプションを自動的に表示します。

ラジオカラムが GSM と等しい条件でフィルタを設定しているフィルタダイアログ

フィルタの設定が完了したら、「Apply」を選択してデータをフィルタリングします。以下のように、追加のフィルタを加えることもできます。

2000 より大きい範囲で追加のフィルタを設定する方法を示すダイアログ

ソート機能と同様に、フィルタを削除するにはフィルタの横にある「x」ボタンをクリックします。

フィルタとソートを同時に行う

SQL コンソールでは、テーブルに対してフィルタとソートを同時に適用できます。そのためには、上記の手順に従って必要なフィルタとソートをすべて追加し、Apply ボタンをクリックします。

フィルタとソートが同時に適用されたインターフェイスを示す画面

フィルターとソートからクエリを作成する

SQL コンソールでは、ソートとフィルターをワンクリックで直接クエリに変換できます。ツールバーで任意のソートおよびフィルターパラメーターを指定し、「Create Query」ボタンを選択します。「Create Query」をクリックすると、新しいクエリタブが開き、テーブルビュー内のデータに対応する SQL コマンドがあらかじめ入力されています。

フィルターとソートから SQL を生成する Create Query ボタンを示すインターフェース
注記

「Create Query」機能を使用する際に、フィルターやソートは必須ではありません。

SQL コンソールでのクエリ実行についての詳細は、(link) のクエリドキュメントを参照してください。

クエリの作成と実行

クエリを作成する

SQL コンソールで新しいクエリを作成する方法は 2 つあります。

  • タブバーの「+」ボタンをクリックします
  • 左サイドバーのクエリリストで「New Query」ボタンをクリックします
「+」ボタンまたは New Query ボタンを使って新しいクエリを作成する方法を示すインターフェース

クエリの実行

クエリを実行するには、SQL Editor に SQL コマンドを入力して「Run」ボタンをクリックするか、ショートカット cmd / ctrl + enter を使用します。複数のコマンドを順に記述して実行する場合は、各コマンドの末尾にセミコロンを付けてください。

クエリの実行オプション デフォルトでは、「Run」ボタンをクリックすると SQL Editor 内に含まれるすべてのコマンドが実行されます。SQL コンソールでは、他にも次の 2 つのクエリ実行オプションをサポートしています。

  • 選択したコマンドを実行
  • カーソル位置のコマンドを実行

選択したコマンドを実行するには、目的のコマンドまたは一連のコマンドを選択し、「Run」ボタンをクリックするか(またはショートカット cmd / ctrl + enter を使用します)。選択範囲がある状態で、SQL Editor のコンテキストメニュー(エディタ内の任意の場所を右クリック)から「Run selected」を選択することもできます。

SQL クエリの選択部分を実行するインターフェイス

現在のカーソル位置のコマンドを実行するには、次の 2 通りの方法があります。

  • 拡張 Run オプションメニューから「At Cursor」を選択する(または対応するキーボードショートカット cmd / ctrl + shift + enter を使用する)
拡張 Run オプションメニュー内の「Run at cursor」オプション
  • SQL Editor のコンテキストメニューから「Run at cursor」を選択する
SQL Editor のコンテキストメニュー内の「Run at cursor」オプション
注記

カーソル位置にあるコマンドは、実行時に黄色く点滅します。

クエリのキャンセル

クエリの実行中は、Query Editor ツールバーの「Run」ボタンが「Cancel」ボタンに置き換えられます。クエリをキャンセルするには、このボタンをクリックするか、Esc を押します。注: すでに返されている結果は、キャンセル後もそのまま残ります。

クエリ実行中に表示される Cancel ボタン

クエリを保存する

まだ名前を付けていない場合、クエリ名は「Untitled Query」として表示されます。クエリ名をクリックすると変更できます。クエリの名前を変更すると、そのクエリは保存されます。

Untitled Query からクエリ名を変更する方法を示すインターフェイス

保存ボタン、または cmd / ctrl + s キーボードショートカットを使用してクエリを保存することもできます。

クエリエディターのツールバー内にある保存ボタン

GenAI を使用してクエリを管理する

この機能を使用すると、クエリを自然言語の質問として入力し、利用可能なテーブルのコンテキストに基づいてクエリコンソールが SQL クエリを生成できるようになります。GenAI はクエリのデバッグにも役立ちます。

GenAI の詳細については、Announcing GenAI powered query suggestions in ClickHouse Cloud blog post を参照してください。

Table setup

UK Price Paid のサンプルデータセットをインポートし、それを使っていくつかの GenAI クエリを作成します。

  1. ClickHouse Cloud サービスを開きます。

  2. + アイコンをクリックして新しいクエリを作成します。

  3. 次のコードを貼り付けて実行します:

    CREATE TABLE uk_price_paid
    (
        price UInt32,
        date Date,
        postcode1 LowCardinality(String),
        postcode2 LowCardinality(String),
        type Enum8('terraced' = 1, 'semi-detached' = 2, 'detached' = 3, 'flat' = 4, 'other' = 0),
        is_new UInt8,
        duration Enum8('freehold' = 1, 'leasehold' = 2, 'unknown' = 0),
        addr1 String,
        addr2 String,
        street LowCardinality(String),
        locality LowCardinality(String),
        town LowCardinality(String),
        district LowCardinality(String),
        county LowCardinality(String)
    )
    ENGINE = MergeTree
    ORDER BY (postcode1, postcode2, addr1, addr2);
    

    このクエリの実行には約 1 秒かかります。完了すると、uk_price_paid という空のテーブルが作成されているはずです。

  4. 新しいクエリを作成し、次のクエリを貼り付けます:

    INSERT INTO uk_price_paid
    WITH
       splitByChar(' ', postcode) AS p
    SELECT
        toUInt32(price_string) AS price,
        parseDateTimeBestEffortUS(time) AS date,
        p[1] AS postcode1,
        p[2] AS postcode2,
        transform(a, ['T', 'S', 'D', 'F', 'O'], ['terraced', 'semi-detached', 'detached', 'flat', 'other']) AS type,
        b = 'Y' AS is_new,
        transform(c, ['F', 'L', 'U'], ['freehold', 'leasehold', 'unknown']) AS duration,
        addr1,
        addr2,
        street,
        locality,
        town,
        district,
        county
    FROM url(
        'http://prod.publicdata.landregistry.gov.uk.s3-website-eu-west-1.amazonaws.com/pp-complete.csv',
        'CSV',
        'uuid_string String,
        price_string String,
        time String,
        postcode String,
        a String,
        b String,
        c String,
        addr1 String,
        addr2 String,
        street String,
        locality String,
        town String,
        district String,
        county String,
        d String,
        e String'
    ) SETTINGS max_http_get_redirects=10;
    

このクエリは gov.uk のウェブサイトからデータセットを取得します。このファイルは約 4GB あるため、クエリの実行には数分かかります。ClickHouse がクエリを処理し終わると、uk_price_paid テーブル内にデータセット全体が格納されます。

クエリの作成

自然言語を使ってクエリを作成してみましょう。

  1. uk_price_paid テーブルを選択し、Create Query をクリックします。

  2. Generate SQL をクリックします。クエリが ChatGPT に送信されることへの同意を求められる場合があります。続行するには I agree を選択する必要があります。

  3. プロンプト欄に自然言語でクエリ内容を入力すると、ChatGPT がそれを SQL クエリに変換してくれます。この例では次のように入力します:

    uk_price_paid のすべてのトランザクションについて、年ごとの合計価格と件数を表示してください。

  4. コンソールは目的のクエリを生成し、新しいタブに表示します。この例では、GenAI によって次のクエリが作成されました:

    -- uk_price_paid のすべてのトランザクションについて、年ごとの合計価格と件数を表示してください。
    SELECT year(date), sum(price) as total_price, Count(*) as total_transactions
    FROM uk_price_paid
    GROUP BY year(date)
    
  5. クエリの内容を確認して正しければ、Run をクリックして実行します。

デバッグ

ここでは、GenAI のクエリデバッグ機能を試してみます。

  1. + アイコンをクリックして新しいクエリを作成し、次のコードを貼り付けます:

    -- 年ごとの uk_price_paid トランザクションの合計価格と合計件数を表示して。
    SELECT year(date), sum(pricee) as total_price, Count(*) as total_transactions
    FROM uk_price_paid
    GROUP BY year(date)
    
  2. Run をクリックします。price ではなく pricee から値を取得しようとしているため、クエリは失敗します。

  3. Fix Query をクリックします。

  4. GenAI がクエリの修正を試みます。この例では、priceeprice に変更しています。また、このシナリオでは toYear を使う方がより適切であることも認識しました。

  5. Apply を選択して提案された変更をクエリに反映し、Run をクリックします。

GenAI は実験的な機能であることに留意してください。GenAI が生成したクエリを任意のデータセットに対して実行する際は、慎重に扱ってください。

高度なクエリ機能

クエリ結果の検索

クエリの実行後、結果ペイン内の検索欄を使用して、返された結果セットをすばやく検索できます。この機能は、追加の WHERE 句を適用した場合の結果をプレビューしたり、特定のデータが結果セットに含まれているか確認したりする際に役立ちます。検索欄に値を入力すると、結果ペインが更新され、入力した値に一致するエントリを含むレコードのみが表示されます。次の例では、ClickHouse を含むコメントに対して、hackernews テーブル内で breakfast のすべての出現箇所を検索します(大文字小文字は区別されません):

Search Hacker News Data

注意: 入力した値に一致する任意のフィールドが返されます。たとえば、上のスクリーンショットの 3 番目のレコードは by フィールドには breakfast が含まれていませんが、text フィールドには含まれています:

Match in body

ページネーション設定の調整

デフォルトでは、クエリ結果ペインはすべての結果レコードを1ページにまとめて表示します。結果セットが大きい場合は、表示しやすくするために結果をページ分割した方が望ましい場合があります。これは、結果ペイン右下にあるページネーションセレクタを使用して行えます。

ページネーションのオプション

ページサイズを選択すると、ページネーションが即座に結果セットに適用され、ナビゲーションオプションが結果ペインのフッター中央に表示されます。

ページネーションのナビゲーション

クエリ結果データのエクスポート

クエリの結果セットは、SQL コンソールから直接 CSV 形式で簡単にエクスポートできます。そのためには、結果ペインのツールバー右側にある ••• メニューを開き、「Download as CSV」を選択します。

Download as CSV

クエリデータの可視化

一部のデータは、チャート形式にするとより直感的に理解できます。SQL コンソールからクエリ結果データを基に、数回のクリックで素早く可視化を作成できます。例として、NYC タクシー乗車データの週次統計を計算するクエリを使用します。

SELECT
   toStartOfWeek(pickup_datetime) AS week,
   sum(total_amount) AS fare_total,
   sum(trip_distance) AS distance_total,
   count(*) AS trip_total
FROM
   nyc_taxi
GROUP BY
   1
ORDER BY
   1 ASC
表形式のクエリ結果

可視化されていないと、これらの結果を解釈するのは難しいです。グラフにしてみましょう。

グラフの作成

可視化の作成を始めるには、クエリ結果ペインのツールバーから「Chart」オプションを選択します。すると、グラフ設定ペインが表示されます:

Switch from query to chart

まず、week ごとの trip_total を追跡するシンプルな棒グラフを作成します。そのために、week フィールドを x 軸に、trip_total フィールドを y 軸にドラッグします:

Trip total by week

ほとんどのグラフタイプでは、数値軸に複数のフィールドを設定できます。これを示すために、fare_total フィールドを y 軸にドラッグします:

Bar chart

チャートのカスタマイズ

SQL コンソールは 10 種類のチャートタイプをサポートしており、チャート設定ペインのチャートタイプセレクタから選択できます。例えば、先ほどのチャートタイプを Bar から Area へ簡単に変更できます。

Bar チャートから Area への変更

チャートタイトルは、データを提供しているクエリ名と一致します。クエリ名を更新すると、チャートタイトルも同様に更新されます。

クエリ名の更新

より高度なチャートの特性も、チャート設定ペインの「Advanced」セクションで調整できます。まず、次の設定を調整します。

  • サブタイトル
  • 軸タイトル
  • x 軸のラベルの向き

チャートはそれに応じて更新されます。

サブタイトルなどの更新

シナリオによっては、各フィールドごとに軸スケールを個別に調整する必要がある場合があります。これは、チャート設定ペインの「Advanced」セクションで、軸レンジの最小値と最大値を指定することで行えます。例として、上記のチャートは見た目は良好ですが、trip_totalfare_total フィールド間の相関関係を示すには、軸レンジを少し調整する必要があります。

軸スケールの調整

クエリの共有

SQL コンソールを使用すると、チームとクエリを共有できます。クエリを共有すると、チームの全メンバーがそのクエリを表示および編集できるようになります。共有クエリは、チームで共同作業を行うための優れた方法です。

クエリを共有するには、クエリツールバーの「Share」ボタンをクリックします。

クエリツールバー内の Share ボタン

ダイアログが開き、チームの全メンバーとクエリを共有できるようになります。複数のチームがある場合は、どのチームとクエリを共有するかを選択できます。

共有クエリへのアクセスを編集するためのダイアログ
共有クエリにチームを追加するためのインターフェイス
共有クエリへのメンバーアクセスを編集するためのインターフェイス

状況によっては、フィールドごとに軸スケールを個別に調整する必要がある場合があります。これは、チャート設定ペインの「Advanced」セクションで軸範囲の最小値と最大値を指定することで行うこともできます。たとえば、上記のチャートは見た目は良好ですが、trip_total フィールドと fare_total フィールドの相関関係を示すには、軸範囲を少し調整する必要があります。

クエリ一覧の Shared with me セクション