このトピックでは、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, ...];次の表に、上記の構文のパラメーターを示します。
パラメーター | 説明 |
| データベースの名前。 デフォルト値は、現在のデータベースの名前です。 この例では、デフォルトがデータベース名として使用されます。 |
| ローカルテーブルの名前。 |
| 各ノードにローカルテーブルを作成することを指定します。 値を |
| 列の名前。 |
| 列のデータ型。 説明 ApsaraDB For ClickHouseでサポートされているデータ型の詳細については、「データ型」をご参照ください。 |
| テーブルエンジンのタイプ。 このエンジンを使用してテーブルを作成する場合は、次のいずれかの方法を使用してパラメーターを設定します。
重要 Double-replica Editionクラスターでテーブルを作成するときは、テーブルがMergeTreeファミリーのReplicatedテーブルエンジンを使用していることを確認してください。 テーブルが非レプリケートテーブルエンジンを使用している場合、テーブル上のデータはレプリカ間でレプリケートされません。 これは、データの不一致につながる可能性があります。 説明 ApsaraDB For ClickHouseでサポートされているテーブルエンジンの種類の詳細については、「テーブルエンジン」をご参照ください。 |
| ソートキー。 This parameter is required. 値は、列のセットのタプルまたは式にすることができます。 |
| デフォルトの式。
|
| インデックスの粒度。 |
| パーティションキー。 ほとんどの場合、データは日付で分割されます。 別のフィールドまたはフィールド式をパーティションキーとして指定できます。 |
| 主キー。 デフォルトでは、主キーはソートキーと同じです。 ほとんどの場合、主キーを指定するために |
| サンプリング式。 サンプリング式を使用する場合は、主キーにサンプリング式を含めます。 |
| テーブル作成のパフォーマンスに影響を与える追加のパラメーター。 説明
|
MergeTreeファミリーのテーブルエンジンのみが、ORDER BY、GRANULARITY、PARTITION BY、PRIMARY KEY、SAMPLE 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;分散テーブルの作成
分散テーブルは、ローカルテーブルのコレクションです。 分散テーブルは、ローカルテーブルを統合テーブルに抽象化し、データの書き込みとクエリをサポートします。 データが分散テーブルに書き込まれると、データはコレクション内の各ローカルテーブルに自動的に分散されます。 分散テーブルを照会すると、コレクション内のローカルテーブルが個別に照会され、最終結果がロールアップされて返されます。 分散テーブルを作成する前に、ローカルテーブルを作成します。
Community-compatible Editionのマルチノードクラスター内の複数の分散テーブルでJOINまたはINサブクエリを実行すると、次のエラーメッセージが表示されることがあります。例外: 二重分散in /JOINサブクエリは拒否されます (distributed_product_mode = 'deny') 。 テーブルの作成後、分散テーブルに対してJOINまたはINサブクエリを実行しないことを推奨します。 サブクエリの実行方法の詳細については、「FAQ」をご参照ください。
構文:
CREATE TABLE [db.]distributed_table_name ON CLUSTER default
AS db.local_table_name ENGINE = Distributed(cluster, db, local_table_name [, sharding_key])次の表に、上記の構文のパラメーターを示します。
パラメーター | 説明 |
| データベースの名前。 デフォルト値は、現在のデータベースの名前です。 この例では、デフォルトがデータベース名として使用されます。 |
| 分散テーブルの名前。 |
| 各ノードにテーブルを作成することを指定します。 値を |
| 作成したローカルテーブルの名前。 |
| シャーディング式。 シャーディング式は、データを書き込むシャードを決定します。
|
例:
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];次の表に、上記の構文のパラメーターを示します。
パラメーター | 説明 |
| データベースの名前。 デフォルト値は、現在のデータベースの名前です。 この例では、デフォルトがデータベース名として使用されます。 |
| スキーマのコピー元のソーステーブルの名前。 この例では、作成されたローカルテーブルlocal_tableが使用されます。 |
| 作成するテーブルの名前を指定します。 |
| 各ノードにテーブルを作成することを指定します。 値を |
| テーブルエンジンのタイプ。 テーブルの作成時にテーブルエンジンを指定しない場合、ソーステーブルのテーブルエンジンがデフォルトで使用されます。 説明 ApsaraDB For ClickHouseでサポートされているテーブルエンジンの種類の詳細については、「テーブルエンジン」をご参照ください。 |
例:
CREATE TABLE t2 ON CLUSTER default as default.local_table;SELECT句のクエリ結果セットと同じスキーマを持つテーブルを作成します。
指定したテーブルエンジンを使用して、SELECT句のクエリ結果セットと同じスキーマを持つテーブルを作成できます。 SELECT句のクエリ結果セットがテーブルに入力されます。
構文:
CREATE TABLE [IF NOT EXISTS] [db.]s_table_name ON CLUSTER cluster ENGINE = engine_name() AS SELECT ...次の表に、上記の構文のパラメーターを示します。
パラメーター | 説明 |
| データベースの名前。 デフォルト値は、現在のデータベースの名前です。 この例では、デフォルトがデータベース名として使用されます。 |
| create tableステートメントでSELECT句を指定して作成するテーブルの名前。 |
| 各ノードにテーブルを作成することを指定します。 値を |
| テーブルエンジンのタイプ。 説明 ApsaraDB For ClickHouseでサポートされているテーブルエンジンの種類の詳細については、「テーブルエンジン」をご参照ください。 |
|
|
例:
CREATE TABLE t3 ON CLUSTER default ENGINE =MergeTree() order by Year as select * from default.local_table;関連ドキュメント
テーブルの作成方法の詳細については、「create table」をご参照ください。
テーブルスキーマをコピーしてテーブルを作成する方法の詳細については、「他のテーブルに類似したスキーマ」をご参照ください。
create tableステートメントでSELECT句を指定してテーブルを作成する方法の詳細については、「SELECTクエリから」をご参照ください。