このトピックでは、MaxCompute 外部テーブルを使用して ApsaraDB for ClickHouse にデータをインポートする方法について説明します。
注意事項
-
ご利用の ApsaraDB for ClickHouse Community-Compatible クラスターのカーネルバージョンは 20.3 以降である必要があります。
-
MaxCompute は有料サービスです。 課金方法の詳細については、「MaxCompute の課金方法」をご参照ください。
-
ApsaraDB for ClickHouse と MaxCompute 間の安定したネットワーク接続を確保するために、Alibaba Cloud VPC を使用してください。 MaxCompute サービスとご利用の ApsaraDB for ClickHouse クラスターは、同じリージョンに存在する必要があります。
前提条件
-
MaxCompute サービスが有効化されていること。 詳細については、「MaxCompute の有効化」をご参照ください。
-
ご利用の ApsaraDB for ClickHouse クラスターと同じリージョンに MaxCompute プロジェクトが作成されていること。 詳細については、「MaxCompute プロジェクトの作成」をご参照ください。
-
Resource Access Management (RAM) ユーザーが MaxCompute を使用する必要がある場合、Alibaba Cloud アカウント (root ユーザー) はその RAM ユーザーに必要な権限を付与する必要があります。 詳細については、「RAM ユーザーの準備」をご参照ください。
操作手順
-
MaxCompute 外部テーブルの作成
-
MaxCompute コンソールにログインします。
-
左側のナビゲーションウィンドウで、 を選択します。
-
「[DataStudio]」ページで、「
」アイコンにマウスを合わせ、を選択します。 -
[新規テーブル] ダイアログボックスで、[テーブル名] を入力します。このトピックでは maxcompute を例として使用します。
-
[作成] をクリックします。
-
[基本プロパティ] セクションで、パラメーターを設定します。

パラメーターは次のとおりです。
設定項目
説明
表示名
テーブルの表示名。
テーマ
DataWorks におけるテーマは、フォルダに相当します。 テーブルに対して第 1 レベルと第 2 レベルのフォルダを定義します。 これにより、ビジネス目的別にテーブルを分類し、同じ種類のテーブルを同じフォルダにまとめることができます。
説明第 1 レベルと第 2 レベルのテーマは、DataWorks でテーブルを管理するためのフォルダとして表示され、テーブル管理を効率化します。 [テーブル管理] ページでテーマ別にテーブルを素早く見つけることができます。 利用可能なテーマがない場合は、作成することも可能です。 詳細については、「テーブルテーマの定義」をご参照ください。
-
ツールバーで、[DDL] をクリックします。
-
「DDL」ダイアログボックスで、テーブルを作成するための次の文を入力し、[テーブルスキーマの生成] をクリックします。
CREATE TABLE IF NOT EXISTS maxcompute ( v1 INT, v2 INT ) PARTITIONED BY ( v3 STRING ); -
[開発環境へ送信] および [本番環境へ送信] をクリックしてください。
-
-
MaxCompute 外部テーブルへのデータ書き込み
-
[DataStudio] ページで、左側のナビゲーションウィンドウの [アドホッククエリ] をクリックします。
-
アイコンにカーソルを合わせ、 を選択します。 -
「新規ノード」ダイアログボックスで、[パス] を選択し、[名前] を入力します。
-
[Confirm] をクリックします。
-
ノード編集ページで、次の文を入力して MaxCompute 外部テーブルにデータを書き込みます。
insert into maxcompute PARTITION (v3='2021') values (1,2),(2,3); -
ツールバーで
アイコンをクリックします。 -
「[パラメーター]」ウィンドウで、「[スケジュールの共有リソースグループ]」を選択し、「[OK]」をクリックします。
-
「MaxCompute コンピューティングコスト推定」ウィンドウで、[推定料金] を確認し、[実行] をクリックします。
-
-
ApsaraDB for ClickHouse テーブルの作成
-
ApsaraDB for ClickHouse コンソールにログインします。
-
[クラスター] ページで、送信先クラスターの ID をクリックします。
-
ナビゲーションバーの右上隅で、[データベースにログオン] をクリックします。
-
テーブルを作成するためのステートメントを入力し、[実行 (F8)] をクリックします。
テーブルを作成するための構文は次のとおりです。
CREATE TABLE <table_name> [on cluster default] ( 'col_name1' col_type1, 'col_name2' col_type2, ... ) ENGINE = MaxCompute('<tunnel-endpoint>', '<project-name>', '<table-name>', '<partition-spec>', '<access-key-id>', '<access-key-secret>',<read-thread-num>, '<quota>');説明MaxComputeRaw テーブルエンジンを使用する場合、構文内の
tunnel-endpointをodps-endpointに変更してください。 odps-endpoint パラメーターは VPC エンドポイントを指定します。 VPC エンドポイントの取得方法の詳細については、「エンドポイント」をご参照ください。パラメーターは次のとおりです。
パラメーター名
説明
table_nameテーブル名。
col_name1,col_name2列名。
col_type1,col_type2列の型。
説明ApsaraDB for ClickHouse テーブルのスキーマは、MaxCompute テーブルに対応している必要があります。 データ型のマッピングの詳細については、「データ型マッピング」をご参照ください。
tunnel-endpointTunnel サービスの Tunnel エンドポイント。
ApsaraDB for ClickHouse と MaxCompute 間の安定したネットワーク接続を確保するために、Alibaba Cloud VPC を使用してください。 MaxCompute サービスとご利用の ApsaraDB for ClickHouse クラスターは、同じリージョンに存在する必要があります。
説明VPC の
tunnel-endpointを表示する方法の詳細については、「エンドポイント」をご参照ください。project-nameMaxCompute プロジェクトの名前。
table-nameMaxCompute 外部テーブルの名前。
partition-specMaxCompute パーティション。
access-key-idMaxCompute プロジェクトへのアクセスに使用する AccessKey ID。
access-key-secretMaxCompute プロジェクトへのアクセスに使用する AccessKey Secret。
read-thread-num(任意)MaxCompute テーブルの単一シャードを読み取るための並行スレッド数。 デフォルト値は 1 です。
quota(任意)MaxCompute 計算リソースの単位。 デフォルトでは、共有クォータが使用されます。
テーブルを作成する文は次のとおりです。
CREATE TABLE default.maxcomputetest ON CLUSTER default ( v1 Int32, v2 Int32 ) ENGINE = MaxCompute('http://dt.cn-hangzh******.aliyun-inc.com', 'ckfwt', 'maxcompute', 'v3=2021', 'LTAI****************', 'yourAccessKeySecret');
-
-
ApsaraDB for ClickHouse テーブルのクエリ
-
ApsaraDB for ClickHouse コンソールにログインします。
-
[クラスター] ページで、送信先クラスターの ID をクリックします。
-
ナビゲーションバーの右上隅で、[データベースにログオン] をクリックします。
-
クエリ文を入力し、[実行 (F8)] をクリックします。
SELECT * FROM maxcomputetest;クエリ結果は次のとおりです。

-
データ型マッピング
|
MaxCompute のデータ型 |
ClickHouse のデータ型 |
|
Boolean |
UInt8 |
|
Tinyint |
UInt8, Int8 |
|
Smalllint |
UInt16, Int16 |
|
Int |
UInt32, Int32 |
|
Bigint |
UInt64, Int64 |
|
Float |
Float32 |
|
Double |
Float64 |
|
Char |
String |
|
Varchar |
String |
|
Binary |
String |
|
String |
String |
|
Date |
Date |
|
Datetime |
Datetime |
|
UUID |
サポートされていません |
|
INTERVAL |
サポートされていません |
|
Decimal |
String |
|
Timestamp |
サポートされていません |
|
Map |
Nested(Nullable(keyType), Nullable(valueType))。 単一レベルでネストされていない Map 構造のみがサポートされます。 たとえば、MaxCompute の map<string, string> は、ApsaraDB for ClickHouse の Nested(k Nullable(String), v Nullable(String)) に対応します。 説明
Nested 内の型は Nullable である必要があります。 そうでない場合、テーブル作成時にエラーが発生します。 |
|
Array |
Array(Nullable(Type))。 単一レベルでネストされていない Array 構造のみがサポートされます。 たとえば、MaxCompute の array<int> は、ApsaraDB for ClickHouse の Array(Nullable(Int32)) に対応します。 説明
Array 内の型は Nullable である必要があります。 そうでない場合、テーブル作成時にエラーが発生します。 |
|
Struct |
Tuple(Nullable(Type))。 単一レベルでネストされていない Struct 構造のみがサポートされます。 たとえば、MaxCompute の struct<x:int, y:string> は、ApsaraDB for ClickHouse の Tuple(Nullable(Int32), Nullable(String)) に対応します。 説明
Tuple 内の型は Nullable である必要があります。 そうでない場合、テーブル作成時にエラーが発生します。 |