すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB for ClickHouse:CREATE TABLE

最終更新日:Dec 31, 2025

このトピックでは、ApsaraDB for ClickHouse でテーブルを作成する方法について説明します。

ローカルテーブルの作成

構文:

CREATE TABLE [IF NOT EXISTS] [db.]local_table_name ON CLUSTER cluster
(
    name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1],
    name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2],
    ...
    INDEX index_name1 expr1 TYPE type1(...) GRANULARITY value1,
    INDEX index_name2 expr2 TYPE type2(...) GRANULARITY value2
) ENGINE = engine_name()
[PARTITION BY expr]
ORDER BY expr
[PRIMARY KEY expr]
[SAMPLE BY expr]
[SETTINGS name=value, ...];

パラメーター:

パラメーター

説明

db

データベースの名前。デフォルト値は現在のデータベースです。このトピックでは `default` を例として使用します。

local_table_name

ローカルテーブルの名前。

ON CLUSTER cluster

各ノードにローカルテーブルを作成します。値は ON CLUSTER default に固定されます。

name1,name2

列名。

type1,type2

列のデータ型。

説明

ApsaraDB for ClickHouse がサポートするデータ型の詳細については、「データ型」をご参照ください。

ENGINE = engine_name()

テーブルエンジンのタイプ。

このエンジンを使用してテーブルを作成する場合、パラメーターを次のように設定します。

  • ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}'):固定構成です。変更する必要はありません。

  • ReplicatedMergeTree()ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}') と同等です。

重要

ダブルレプリカ版のクラスターでテーブルを作成する場合、MergeTree ファミリーの Replicated テーブルエンジンを使用する必要があります。非レプリケートテーブルエンジンを使用すると、レプリカ間でデータが複製されず、データ不整合が発生する可能性があります。

ApsaraDB for ClickHouse がサポートするテーブルエンジンのタイプの詳細については、「テーブルエンジン」をご参照ください。

ORDER BY expr

ソートキー。このパラメーターは必須です。値は、列セットのタプルまたは任意の式にすることができます。

[DEFAULT|MATERIALIZED|ALIAS expr]

デフォルト式。

  • DEFAULT:通常のデフォルト式。フィールドに値が指定されていない場合、デフォルト値が自動的に生成されて使用されます。

  • MATERIALIZED:マテリアライズド式。

  • ALIAS:エイリアス式。

GRANULARITY

インデックスの粒度パラメーター。

[PARTITION BY expr]

パーティションキー。データは通常、日付でパーティション分割されます。他のフィールドまたはフィールド式を使用することもできます。

[PRIMARY KEY expr]

プライマリキー。デフォルトでは、プライマリキーはソートキーと同じです。ほとんどの場合、PRIMARY KEY 句を使用してプライマリキーを別途指定する必要はありません。

[SAMPLE BY expr]

サンプリング式。サンプリング式を使用する場合、この式をプライマリキーに含める必要があります。

[SETTINGS name=value, ...]

パフォーマンスに影響する追加パラメーター。

説明

SETTINGS でサポートされているパラメーターの詳細については、「SETTINGS 設定項目」をご参照ください。

説明

MergeTree ファミリーのテーブルエンジンのみが、次のパラメーターをサポートします:ORDER BYGRANULARITYPARTITION BYPRIMARY KEYSAMPLE BY、および [SETTINGS name=value, ...]。 詳細については、「CREATE TABLE」をご参照ください。

例:

CREATE TABLE local_table ON CLUSTER default
(
    Year UInt16,
    Quarter UInt8,
    Month UInt8,
    DayofMonth UInt8,
    DayOfWeek UInt8,
    FlightDate Date,
    FlightNum String,
    Div5WheelsOff String,
    Div5TailNum String
)ENGINE = MergeTree()
 PARTITION BY toYYYYMM(FlightDate)
 PRIMARY KEY (intHash32(FlightDate))
 ORDER BY (intHash32(FlightDate),FlightNum)
 SAMPLE BY intHash32(FlightDate)
SETTINGS index_granularity= 8192;

分散テーブルの作成

分散テーブルはローカルテーブルのコレクションです。複数のローカルテーブルにまたがるデータの書き込みとクエリをサポートする統一されたビューを提供します。分散テーブルにデータを書き込むと、データはコレクション内の各ローカルテーブルに自動的に分散されます。分散テーブルをクエリすると、各ローカルテーブルが個別にクエリされ、結果が集約されて返されます。分散テーブルを作成する前に、ローカルテーブルを作成する必要があります。

説明

ApsaraDB for ClickHouse Community-Compatible Edition のみが Distributed エンジンを使用した分散テーブルの作成をサポートします。ApsaraDB for ClickHouse Enterprise Edition では、シャードの概念は使用されません。Enterprise Edition では、複数のノードがレプリカとして機能します。そのため、分散テーブルを作成する必要はありません。

構文:

CREATE TABLE [db.]distributed_table_name ON CLUSTER default
 AS db.local_table_name ENGINE = Distributed(cluster, db, local_table_name [, sharding_key])

パラメーター:

パラメーター

説明

db

データベースの名前。デフォルト値は現在のデータベースです。このトピックでは `default` を例として使用します。

distributed_table_name

分散テーブルの名前。

ON CLUSTER cluster

各ノードにテーブルを作成します。値は ON CLUSTER default に固定されます。

local_table_name

作成されたローカルテーブルの名前。

sharding_key

シャーディング式。データが書き込まれるシャードを決定します。

sharding_key は、rand() 関数などの式、または Integer 型の user_id などの列にすることができます。

例:

CREATE TABLE distributed_table ON CLUSTER default
 AS default.local_table 
ENGINE = Distributed(default, default, local_table, rand());

テーブルスキーマをコピーしたテーブルの作成

ソーステーブルのスキーマをコピーして、同じ構造の新しいテーブルを作成できます。

構文:

CREATE TABLE [IF NOT EXISTS] [db.]table_name2 ON CLUSTER cluster AS [db.]table_name1 [ENGINE = engine_name];

パラメーター:

パラメーター

説明

db

データベースの名前。デフォルト値は現在のデータベースです。このトピックでは `default` を例として使用します。

table_name1

スキーマをコピーするソーステーブル。このトピックでは、作成されたローカルテーブル `local_table` を例として使用します。

table_name2

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

ON CLUSTER cluster

各ノードにテーブルを作成します。値は ON CLUSTER default に固定されます。

[ENGINE = engine_name]

テーブルエンジンのタイプ。テーブルエンジンを指定しない場合、新しいテーブルはデフォルトでソーステーブルと同じエンジンを使用します。

説明

ApsaraDB for ClickHouse がサポートするテーブルエンジンのタイプの詳細については、「テーブルエンジン」をご参照ください。

例:

CREATE TABLE t2 ON CLUSTER default as default.local_table;

クエリ結果セットと同じ構造を持つテーブルの作成

SELECT 句の結果セットと同じ構造を持つテーブルを作成できます。テーブルは指定されたエンジンを使用し、結果セットのデータが入力されます。

構文:

CREATE TABLE [IF NOT EXISTS] [db.]s_table_name ON CLUSTER cluster ENGINE = engine_name() AS SELECT ...

パラメーター:

パラメーター

説明

db

データベースの名前。デフォルト値は現在のデータベースです。このトピックでは `default` を例として使用します。

s_table_name

`SELECT` 文から作成されるテーブル。

ON CLUSTER cluster

各ノードにテーブルを作成します。値は ON CLUSTER default に固定されます。

ENGINE = engine_name()

テーブルエンジンのタイプ。

説明

ApsaraDB for ClickHouse がサポートするテーブルエンジンのタイプの詳細については、「テーブルエンジン」をご参照ください。

SELECT ...

SELECT 句。

例:

CREATE TABLE t3 ON CLUSTER default ENGINE =MergeTree() order by Year as select * from default.local_table;

関連ドキュメント