Data Management Service (DMS) を使用して、ApsaraDB for ClickHouse にローカルテーブルと分散テーブルを作成できます。
前提条件
クイックスタートガイドで以下の手順を完了している必要があります。
手順
-
DMS コンソールの SQL Console ページで、
CREATE TABLEステートメントを入力してローカルテーブルを作成します。説明ローカルテーブルは実際のデータを格納します。各 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ローカルテーブルの名前。
clusterクラスターの名前。値は
defaultに固定です。name1,name2列の名前。
type1,type2列の型。
engine_nameテーブルエンジンの種類。詳細については、「テーブルエンジン」をご参照ください。
単一レプリカエディションのクラスターの場合は MergeTree、マスターレプリカクラスターの場合は ReplicatedMergeTree に設定します。
重要ダブルレプリカエディションのクラスターでテーブルを作成する場合は、MergeTree ファミリの Replicated テーブルエンジンを使用する必要があります。非レプリケートテーブルエンジンを使用すると、レプリカ間でデータがレプリケートされないため、データの不整合が発生する可能性があります。
PARTITION BYパーティションキー。
ORDER BYソートキー。
PRIMARY KEYプライマリキー。
SAMPLE BYサンプリング式。サンプリング式を使用する場合、プライマリキーにこの式を含める必要があります。
SETTINGSパフォーマンスに影響を与えるその他のパラメーター (
index_granularityなど)。説明パラメーターの詳細については、「Create Table」をご参照ください。
例:
CREATE TABLE clickhouse_demo.ontime_local ON CLUSTER default ( `Year` UInt16, `Quarter` UInt8, `Month` UInt8, `DayofMonth` UInt8, `DayOfWeek` UInt8, `FlightDate` Date, `Reporting_Airline` String, `DOT_ID_Reporting_Airline` Int32, `IATA_CODE_Reporting_Airline` String, `Tail_Number` String, `Flight_Number_Reporting_Airline` String, `OriginAirportID` Int32, `OriginAirportSeqID` Int32, `OriginCityMarketID` Int32, `Origin` FixedString(5), `OriginCityName` String, `OriginState` FixedString(2), `OriginStateFips` String, `OriginStateName` String, `OriginWac` Int32, `DestAirportID` Int32, `DestAirportSeqID` Int32, `DestCityMarketID` Int32, `Dest` FixedString(5), `DestCityName` String, `DestState` FixedString(2), `DestStateFips` String, `DestStateName` String, `DestWac` Int32, `CRSDepTime` Int32, `DepTime` Int32, `DepDelay` Int32, `DepDelayMinutes` Int32, `DepDel15` Int32, `DepartureDelayGroups` String, `DepTimeBlk` String, `TaxiOut` Int32, `WheelsOff` Int32, `WheelsOn` Int32, `TaxiIn` Int32, `CRSArrTime` Int32, `ArrTime` Int32, `ArrDelay` Int32, `ArrDelayMinutes` Int32, `ArrDel15` Int32, `ArrivalDelayGroups` Int32, `ArrTimeBlk` String, `Cancelled` UInt8, `CancellationCode` FixedString(1), `Diverted` UInt8, `CRSElapsedTime` Int32, `ActualElapsedTime` Int32, `AirTime` Nullable(Int32), `Flights` Int32, `Distance` Int32, `DistanceGroup` UInt8, `CarrierDelay` Int32, `WeatherDelay` Int32, `NASDelay` Int32, `SecurityDelay` Int32, `LateAircraftDelay` Int32, `FirstDepTime` String, `TotalAddGTime` String, `LongestAddGTime` String, `DivAirportLandings` String, `DivReachedDest` String, `DivActualElapsedTime` String, `DivArrDelay` String, `DivDistance` String, `Div1Airport` String, `Div1AirportID` Int32, `Div1AirportSeqID` Int32, `Div1WheelsOn` String, `Div1TotalGTime` String, `Div1LongestGTime` String, `Div1WheelsOff` String, `Div1TailNum` String, `Div2Airport` String, `Div2AirportID` Int32, `Div2AirportSeqID` Int32, `Div2WheelsOn` String, `Div2TotalGTime` String, `Div2LongestGTime` String, `Div2WheelsOff` String, `Div2TailNum` String, `Div3Airport` String, `Div3AirportID` Int32, `Div3AirportSeqID` Int32, `Div3WheelsOn` String, `Div3TotalGTime` String, `Div3LongestGTime` String, `Div3WheelsOff` String, `Div3TailNum` String, `Div4Airport` String, `Div4AirportID` Int32, `Div4AirportSeqID` Int32, `Div4WheelsOn` String, `Div4TotalGTime` String, `Div4LongestGTime` String, `Div4WheelsOff` String, `Div4TailNum` String, `Div5Airport` String, `Div5AirportID` Int32, `Div5AirportSeqID` Int32, `Div5WheelsOn` String, `Div5TotalGTime` String, `Div5LongestGTime` String, `Div5WheelsOff` String, `Div5TailNum` String )ENGINE = ReplicatedMergeTree() PARTITION BY toYYYYMM(FlightDate) PRIMARY KEY (intHash32(FlightDate)) ORDER BY (intHash32(FlightDate)) SAMPLE BY intHash32(FlightDate) SETTINGS index_granularity= 8192 ; -
データの書き込みとクエリを容易にするために、分散テーブルを作成します。
説明-
ApsaraDB for ClickHouse Enterprise Edition では、分散テーブルを作成する必要はありません。Enterprise Edition でサポートされているテーブルエンジンの詳細については、「ApsaraDB for ClickHouse Enterprise Edition 互換性ガイド」をご参照ください。
-
分散テーブルはデータを直接格納しません。クエリレイヤーとして機能し、ノード間のローカルテーブルにクエリをルーティングして結果を集約します。ClickHouse クラスター内のノード間のデータクエリには、分散テーブルを使用します。
構文:
CREATE TABLE [db.]d_table_name ON CLUSTER cluster AS db.local_table_name ENGINE = Distributed(cluster, db, local_table_name [, sharding_key])パラメーター:
パラメーター
説明
dbデータベースの名前。デフォルトでは、現在のデータベースが使用されます。
d_table_name分散テーブルの名前。
clusterクラスターの名前。値は
defaultに固定です。local_table_name作成したローカルテーブルの名前。
sharding_keyシャーディングキーに使用するシャーディング式。
説明パラメーターの詳細については、「Create Table」をご参照ください。
例:
CREATE TABLE ontime_local_distributed ON CLUSTER default AS clickhouse_demo.ontime_local ENGINE = Distributed(default, clickhouse_demo, ontime_local, rand()); -