Real-Time Market AnalyticsClickHouse Workshops

02 テーブルを作成する

2,650万件の為替ティックを入れる CREATE TABLE 1本と、なぜ base と quote が sort key の先頭に来るのか。モジュール04で体感する設計判断です。

まず、為替ティックを格納する空のテーブルを作成します。SQL Console を開き、下のステートメントを 貼り付けて実行してください。

-- 26.5M forex ticks (12 pairs incl. gold, Jan 2020); base+quote+time lead the sort key
CREATE TABLE forex
(
    datetime DateTime64(3, 'UTC'),    -- millisecond quote timestamp
    bid      Float64,
    ask      Float64,
    base     LowCardinality(String),  -- e.g. 'EUR', 'XAU' (gold)
    quote    LowCardinality(String),  -- e.g. 'USD', 'JPY'
    pair     String  ALIAS concat(base, '/', quote),   -- handy label, computed on read
    spread   Float64 ALIAS ask - bid,                  -- bid/ask spread
    mid      Float64 ALIAS (bid + ask) / 2             -- mid price
)
ENGINE = MergeTree
ORDER BY (base, quote, datetime);

なぜこの形なのか? base と quote が ORDER BY(テーブルの sort key)の先頭に来ています。 つまり通貨ペアと時間範囲で絞り込むと、ClickHouse はデータのほぼすべてをスキップできます。それが どれだけ効くかは モジュール04の最後のクエリ で正確に確認できます。

表示されるはずの結果

Ok. — テーブルが作成され、中身は空です。次はこれを埋めていきます。

Track your progress?

Optional. We email a link to confirm your address; progress records once you open it.

Please use your work email address, not a personal one.

Progress tracking also requires accepting the current Terms of Service in Privacy settings.

JA