このトピックでは、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, ...];パラメーター:
パラメーター | 説明 |
| データベースの名前。デフォルト値は現在のデータベースです。このトピックでは `default` を例として使用します。 |
| ローカルテーブルの名前。 |
| 各ノードにローカルテーブルを作成します。値は |
| 列名。 |
| 列のデータ型。 説明 ApsaraDB for ClickHouse がサポートするデータ型の詳細については、「データ型」をご参照ください。 |
| テーブルエンジンのタイプ。 このエンジンを使用してテーブルを作成する場合、パラメーターを次のように設定します。
重要 ダブルレプリカ版のクラスターでテーブルを作成する場合、MergeTree ファミリーの Replicated テーブルエンジンを使用する必要があります。非レプリケートテーブルエンジンを使用すると、レプリカ間でデータが複製されず、データ不整合が発生する可能性があります。 ApsaraDB for ClickHouse がサポートするテーブルエンジンのタイプの詳細については、「テーブルエンジン」をご参照ください。 |
| ソートキー。このパラメーターは必須です。値は、列セットのタプルまたは任意の式にすることができます。 |
| デフォルト式。
|
| インデックスの粒度パラメーター。 |
| パーティションキー。データは通常、日付でパーティション分割されます。他のフィールドまたはフィールド式を使用することもできます。 |
| プライマリキー。デフォルトでは、プライマリキーはソートキーと同じです。ほとんどの場合、 |
| サンプリング式。サンプリング式を使用する場合、この式をプライマリキーに含める必要があります。 |
| パフォーマンスに影響する追加パラメーター。 説明
|
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;分散テーブルの作成
分散テーブルはローカルテーブルのコレクションです。複数のローカルテーブルにまたがるデータの書き込みとクエリをサポートする統一されたビューを提供します。分散テーブルにデータを書き込むと、データはコレクション内の各ローカルテーブルに自動的に分散されます。分散テーブルをクエリすると、各ローカルテーブルが個別にクエリされ、結果が集約されて返されます。分散テーブルを作成する前に、ローカルテーブルを作成する必要があります。
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])パラメーター:
パラメーター | 説明 |
| データベースの名前。デフォルト値は現在のデータベースです。このトピックでは `default` を例として使用します。 |
| 分散テーブルの名前。 |
| 各ノードにテーブルを作成します。値は |
| 作成されたローカルテーブルの名前。 |
| シャーディング式。データが書き込まれるシャードを決定します。
|
例:
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];パラメーター:
パラメーター | 説明 |
| データベースの名前。デフォルト値は現在のデータベースです。このトピックでは `default` を例として使用します。 |
| スキーマをコピーするソーステーブル。このトピックでは、作成されたローカルテーブル `local_table` を例として使用します。 |
| 作成する新しいテーブル。 |
| 各ノードにテーブルを作成します。値は |
| テーブルエンジンのタイプ。テーブルエンジンを指定しない場合、新しいテーブルはデフォルトでソーステーブルと同じエンジンを使用します。 説明 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 ...パラメーター:
パラメーター | 説明 |
| データベースの名前。デフォルト値は現在のデータベースです。このトピックでは `default` を例として使用します。 |
| `SELECT` 文から作成されるテーブル。 |
| 各ノードにテーブルを作成します。値は |
| テーブルエンジンのタイプ。 説明 ApsaraDB for ClickHouse がサポートするテーブルエンジンのタイプの詳細については、「テーブルエンジン」をご参照ください。 |
|
|
例:
CREATE TABLE t3 ON CLUSTER default ENGINE =MergeTree() order by Year as select * from default.local_table;関連ドキュメント
テーブルの作成方法の詳細については、「CREATE TABLE」をご参照ください。
テーブルスキーマのコピーによるテーブル作成の詳細については、「他のテーブルと類似したスキーマを使用」をご参照ください。
SELECT 文を使用したテーブルの作成の詳細については、「SELECT クエリから」をご参照ください。