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

ApsaraDB for ClickHouse:CREATE TABLE

最終更新日:Oct 17, 2024

このトピックでは、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

データベースの名前。 デフォルト値は、現在のデータベースの名前です。 この例では、デフォルトがデータベース名として使用されます。

local_table_name

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

ON CLUSTERクラスター

各ノードにローカルテーブルを作成することを指定します。 値をON CLUSTER defaultに設定します。

name1,name2

列の名前。

type1,type2

列のデータ型。

説明

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

ENGINE = engine_name()

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

Double-replica Editionのクラスターにテーブルを作成する場合は、プレフィックスがReplicatedで、MergeTreeファミリーのエンジン間でのデータレプリケーションをサポートするテーブルエンジンを使用する必要があります。 プレフィックスがReplicatedのテーブルエンジンを使用しない場合、レプリカ間でデータをレプリケートできず、一貫性のないデータクエリ結果が返されます。 このエンジンを使用してテーブルを作成する場合は、次のいずれかの方法を使用してパラメーターを設定します。

  • ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}') 。 設定は固定されており、変更する必要はありません。

  • ReplicatedMergeTree() 。 これは、ReplicatedMergeTree('/clickhouse/tables/{database}/{table}/{shard}', '{replica}') に相当します。

説明

ApsaraDB For ClickHouseでサポートされているテーブルエンジンの種類の詳細については、「テーブルエンジン」をご参照ください。

注文BY expr

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

[デフォルト | MATERIALIZED | ALIAS expr]

デフォルトの式。

  • DEFAULT: デフォルトの式。 フィールドが空の場合、デフォルト値は自動的に生成され、入力されます。

  • MATERIALIZED: 具体化された表現。

  • ALIAS: エイリアス式。

グラヌラリティ

インデックスの粒度。

[PARTITION BY expr]

パーティションキー。 ほとんどの場合、データは日付で分割されます。 別のフィールドまたはフィールド式をパーティションキーとして指定できます。

[主要なキーexpr]

主キー。 デフォルトでは、主キーはソートキーと同じです。 ほとんどの場合、主キーを指定するためにPRIMARY KEY句を使用する必要はありません。

[サンプルBY expr]

サンプリング式。 サンプリング式を使用する場合は、主キーにサンプリング式を含めます。

[設定名=値, ...]

テーブル作成のパフォーマンスに影響を与える追加のパラメーター。

説明

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;

分散テーブルの作成

分散テーブルは、ローカルテーブルのコレクションです。 分散テーブルは、ローカルテーブルを統合テーブルに抽象化し、データの書き込みとクエリをサポートします。 データが分散テーブルに書き込まれると、データはコレクション内の各ローカルテーブルに自動的に分散されます。 分散テーブルを照会すると、コレクション内のローカルテーブルが個別に照会され、最終結果がロールアップされて返されます。 分散テーブルを作成する前に、ローカルテーブルを作成します。

構文:

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

次の表に、上記の構文のパラメーターを示します。

パラメーター

説明

db

データベースの名前。 デフォルト値は、現在のデータベースの名前です。 この例では、デフォルトがデータベース名として使用されます。

distributed_table_name

分散テーブルの名前。

ON 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

データベースの名前。 デフォルト値は、現在のデータベースの名前です。 この例では、デフォルトがデータベース名として使用されます。

table_name1

スキーマのコピー元のソーステーブルの名前。 この例では、作成されたローカルテーブルlocal_tableが使用されます。

table_name2

作成するテーブルの名前を指定します。

ON CLUSTERクラスター

各ノードにテーブルを作成することを指定します。 値をON CLUSTER defaultに設定します。

[ENGINE = engine_name]

テーブルエンジンのタイプ。 テーブルの作成時にテーブルエンジンを指定しない場合、ソーステーブルのテーブルエンジンがデフォルトで使用されます。

説明

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 ...

次の表に、上記の構文のパラメーターを示します。

パラメーター

説明

db

データベースの名前。 デフォルト値は、現在のデータベースの名前です。 この例では、デフォルトがデータベース名として使用されます。

s_table_name

create tableステートメントでSELECT句を指定して作成するテーブルの名前。

ON 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;

関連ドキュメント

  • テーブルの作成方法の詳細については、「create table」をご参照ください。

  • テーブルスキーマをコピーしてテーブルを作成する方法の詳細については、「他のテーブルに類似したスキーマ」をご参照ください。

  • create tableステートメントでSELECT句を指定してテーブルを作成する方法の詳細については、「SELECTクエリから」をご参照ください。