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

DataWorks:ClickHouse データソース

最終更新日:Jan 10, 2026

ClickHouse データソースは、ClickHouse との間でデータの読み書きを行うための双方向チャネルを提供します。このトピックでは、DataWorks が ClickHouse に対してサポートするデータ同期機能について説明します。

サポートされるバージョン

次の表に、Alibaba Cloud ClickHouse のバージョンと JDBC ドライバーのバージョンの互換性を示します。

JDBC ドライバーのバージョン

Alibaba Cloud ClickHouse のバージョン

0.2.4

20.8、21.8

0.4.0、0.4.2

22.8、23.8

制限事項

ClickHouse データソースは、オフラインの読み取りおよび書き込み操作のみをサポートします。次の制限が適用されます。

  • サーバーレスリソースグループ (推奨) および データ統合専用リソースグループ を使用できます。

  • JDBC を使用して ClickHouse に接続し、JDBC 文を介してのみデータを読み取ることができます。

  • カラムを選択して並べ替えることができます。また、使用するカラムを指定することもできます。

  • ClickHouse の過負荷を避けるため、ClickHouse Writer が INSERT モードを使用する場合、システムスループット (TPS) を最大 1,000 に制限する必要があります。

サポートされるデータの型

一般的な Alibaba Cloud ClickHouse のデータの型はサポートされています。Alibaba Cloud ClickHouse のデータの型の完全なリストについては、「データの型」をご参照ください。オープンソースの ClickHouse ドキュメントに記載されているその他のデータの型はサポートされていません。オープンソースの ClickHouse のデータの型の完全なリストについては、「ClickHouse ドキュメント」をご参照ください。

データの型

ClickHouse Reader

ClickHouse Writer

Int8

サポート

サポート

Int16

サポート

サポート

Int32

サポート

サポート

Int64

サポート

サポート

UInt8

サポート

サポート

UInt16

サポート

サポート

UInt32

サポート

サポート

UInt64

サポート

サポート

Float32

サポート

サポート

Float64

サポート

サポート

Decimal

サポート

サポート

String

サポート

サポート

FixedString

サポート

サポート

Date

サポート

サポート

DateTime

サポート

サポート

DateTime64

サポート

サポート

Boolean

サポート

説明

ClickHouse には専用のブール値型はありません。代わりに UInt8 または Int8 を使用してください。

サポート

Array

部分的にサポート。

配列要素が整数、浮動小数点数、文字列、またはミリ秒精度の DateTime64 の場合にのみサポートされます。

サポート

Tuple

サポート

サポート

Domain(IPv4,IPv6)

サポート

サポート

Enum8

サポート

サポート

Enum16

サポート

サポート

Nullable

サポート

サポート

Nested

部分的にサポート。

Nested データの型は、整数、浮動小数点数、文字列、およびミリ秒精度の DateTime64 値をサポートします。

サポート

データソースの追加

DataWorks で同期タスクを開発する前に、「データソース管理」の手順に従って、必要なデータソースを DataWorks に追加する必要があります。データソースを追加する際に、DataWorks コンソールでパラメーターの説明を表示して、各パラメーターの意味を理解することができます

データ同期タスクの開発

同期タスクを設定するためのエントリポイントと手順については、以下の設定ガイドをご参照ください。

単一テーブルのオフライン同期タスクの設定

データベース全体のオフライン読み取り同期の設定

手順の詳細については、「リアルタイムのデータベース全体の同期タスクの設定」をご参照ください。

付録:スクリプトデモとパラメーターの説明

コードエディタを使用したバッチ同期タスクの設定

コードエディタを使用してバッチ同期タスクを設定する場合、統一されたスクリプトフォーマットの要件に基づいて、スクリプト内の関連パラメーターを設定する必要があります。詳細については、「コードエディタでのタスクの設定」をご参照ください。以下では、コードエディタを使用してバッチ同期タスクを設定する際に、データソースに対して設定する必要があるパラメーターについて説明します。

Reader スクリプトデモ

{
    "type": "job",
    "version": "2.0",
    "steps": [
        {
            "stepType": "clickhouse", // プラグイン名
            "parameter": {
                "fetchSize":1024,// データベースサーバーから一度にフェッチするレコード数
                "datasource": "example",
                "column": [   // カラム名
                    "id",
                    "name"
                ],
                "where": "",    // フィルター条件
                "splitPk": "",  // シャーディングキー
                "table": ""    // テーブル名
            },
            "name": "Reader",
            "category": "reader"
        },
        {
            "stepType": "clickhouse",
            "parameter": {
                "postSql": [
                    "update @table set db_modify_time = now() where db_id = 1"
                ],
                "datasource": "example",    // データソース
                "batchByteSize": "67108864",
                "column": [
                    "id",
                    "name"
                ],
                "writeMode": "insert",
                "encoding": "UTF-8",
                "batchSize": 1024,
                "table": "ClickHouse_table",
                "preSql": [
                    "delete from @table where db_id = -1"
                ]
            },
            "name": "Writer",
            "category": "writer"
        }
    ],
    "setting": {
        "executeMode": null,
        "errorLimit": {
            "record": "0"  // 同期中に許容されるエラーレコードの最大数
        },
        "speed": {
         "throttle":true,// throttle が false の場合、mbps は無視されます (速度制限なし)。throttle が true の場合、速度制限が有効になります。
            "concurrent":1, // ジョブの同時実行数
            "mbps":"12"// 速度制限率。1 mbps = 1 MB/s
        }
    },
    "order": {
        "hops": [
            {
                "from": "Reader",
                "to": "Writer"
            }
        ]
    }
}

Reader スクリプトのパラメーター

パラメーター

説明

必須

デフォルト値

datasource

データソース名。スクリプトモードでは、データソースを追加できます。値は、追加されたデータソース名と完全に一致する必要があります。

はい

なし

table

同期するテーブル。JSON フォーマットで記述します。

説明

table パラメーターは connection 設定ブロックに含める必要があります。

はい

なし

fetchSize

データベースサーバーから一度にフェッチするレコード数。この値は、同期システムがサーバーと通信する頻度を決定し、抽出パフォーマンスに影響します。

説明

fetchSize が大きすぎると、Out-of-Memory (OOM) エラーが発生する可能性があります。ClickHouse の負荷に基づいて、この値を徐々に増やしてください。

いいえ

1,024

column

ClickHouse から読み取るカラム。カラム名はカンマで区切ります。例:"column": ["id", "name", "age"]

説明

column パラメーターは必須であり、空にすることはできません。

はい

なし

jdbcUrl

ソースデータベースの JDBC 接続 URL。jdbcUrl は connection 設定ブロックに含める必要があります。

  • データベースごとに 1 つの値のみ設定できます。

  • jdbcUrl のフォーマットは ClickHouse の公式仕様に従う必要があり、追加のパラメーターを含めることができます。例:jdbc:clickhouse://localhost:3306/test?user=root&password=&useUnicode=true&characterEncoding=gbk &autoReconnect=true&failOverReadOnly=false

はい

なし

username

データソースのユーザー名。

はい

なし

password

指定されたユーザー名のパスワード。

はい

なし

splitPk

ClickHouse からデータを抽出する際に splitPk を指定すると、splitPk が表すフィールドを使用してデータをシャーディングすることを意味します。これにより、同期タスクを同時実行できるようになり、効率が向上します。

説明

splitPk を設定した場合、fetchSize は必須になります。

いいえ

なし

where

フィルター条件。実際には、wheregmt_create>$bizdate に設定することで、当日のデータのみを同期することがよくあります。

where 条件により、効果的な増分同期が可能になります。where 文を指定しない場合 (where のキーまたは値を指定しない場合を含む)、完全データ同期が実行されます。

いいえ

なし

Writer スクリプトデモ

{
    "type":"job",
    "version":"2.0",// バージョン番号
    "steps":[
        {
            "stepType":"stream",
            "parameter":{},
            "name":"Reader",
            "category":"reader"
        },
        {
            "stepType":"clickhouse",// プラグイン名
            "parameter":{
                "username": "",
                "password": "",
                "column": [// フィールド
                    "id",
                    "name"
                ],
                "connection": [
                    {
                        "table": [// テーブル名
                            "ClickHouse_table"
                        ],
                        "jdbcUrl": "jdbc:clickhouse://ip:port/database"
                    }
                ],
                "preSql": [ // 同期タスク実行前に実行される SQL 文
                    "TRUNCATETABLEIFEXISTStablename"
                ],
                "postSql": [// 同期タスク実行後に実行される SQL 文
                    "ALTERTABLEtablenameUPDATEcol1=1WHEREcol2=2"
                ],
                "batchSize": "1024",
                "batchByteSize": "67108864",
                "writeMode": "insert"
            },
            "name":"Writer",
            "category":"writer"
        }
    ],
    "setting":{
        "errorLimit":{
            "record":"0"// エラーレコード数
        },
        "speed":{
            "throttle":true,// throttle が false の場合、mbps は無視されます (速度制限なし)。throttle が true の場合、速度制限が有効になります。
            "concurrent":1, // ジョブの同時実行数
            "mbps":"12"// 速度制限率。1 mbps = 1 MB/s
        }
    },
    "order":{
        "hops":[
            {
                "from":"Reader",
                "to":"Writer"
            }
        ]
    }
}

Writer スクリプトのパラメーター

パラメーター

説明

必須

デフォルト値

jdbcUrl

ターゲットデータベースの JDBC 接続 URL。jdbcUrlconnection 設定ブロックに含める必要があります。

  • データベースごとに 1 つの値のみ設定できます。

  • jdbcUrl のフォーマットは ClickHouse の公式仕様に従う必要があり、追加のパラメーターを含めることができます。例:jdbc:clickhouse://127.0.0.1:3306/database

はい

なし

username

データソースのユーザー名。

はい

なし

password

指定されたユーザー名のパスワード。

はい

なし

table

ターゲットテーブル名。JSON 配列として記述します。

説明

table パラメーターは connection 設定ブロックに含める必要があります。

はい

なし

column

データを書き込むターゲットテーブルのフィールド。フィールド名はカンマで区切ります。例:"column": ["id", "name", "age"]

説明

column パラメーターは必須であり、空にすることはできません。

はい

なし

preSql

ターゲットテーブルにデータを書き込む前に実行される SQL 文。

いいえ

なし

postSql

ターゲットテーブルにデータを書き込んだ後に実行される SQL 文。

いいえ

なし

batchSize

バッチごとに送信されるレコード数。適切な値を設定すると、同期システムと ClickHouse 間のネットワークインタラクションが大幅に削減され、全体的なスループットが向上します。値が大きすぎると、Out-of-Memory (OOM) エラーが発生する可能性があります。

いいえ

1,024