このトピックでは、データ開発のために、自社管理の ClickHouse インスタンスからリアルタイムデータウェアハウスである Hologres にデータベーステーブルとデータを移行する方法について説明します。
前提条件
-
Hologres を有効化します。 詳細については、「Hologres インスタンスの購入」をご参照ください。
-
ClickHouse インスタンスがあり、ClickHouse クライアントツールがインストールされていること。 インストールするには、ClickHouse-Client をクリックしてください。 インストールと使用方法の詳細については、「クイックスタート」をご参照ください。
-
PSQL クライアントを使用して Hologres インスタンスに接続します。 詳細については、「PSQL クライアント」をご参照ください。
背景情報
ClickHouse は、オンライン分析処理 (OLAP) 向けに設計された列指向 DBMS です。 Hologres は、Alibaba Cloud が開発したフルマネージドのインタラクティブ分析サービスで、サブ秒の応答時間と高い秒間クエリ数 (QPS) をサポートします。 ClickHouse から Hologres にテーブルとデータを移行することで、より良いデータ開発体験を得ることができます。
次の表は、Hologres と ClickHouse の機能を比較したものです。
|
カテゴリ |
基準 |
ClickHouse |
Hologres |
|
製品 |
目的 |
ネットワークトラフィック分析 |
汎用リアルタイムデータウェアハウス:データ分析とオンラインサービス。 |
|
書き込み |
ストレージ |
カラムストア |
カラムストアとローストア。 |
|
書き込み可視性 |
第 2 レベル (バッチ処理にはクライアント側でのバッチ化が必要;分散テーブルへの書き込みはシャードのレプリケーション完了に依存) |
ミリ秒レベル (適応型書き込みバッチ。書き込み後すぐにデータをクエリ可能) |
|
|
書き込み性能 |
高い |
非常に高い |
|
|
詳細ストレージ |
サポート |
サポート |
|
|
プライマリキー |
真のデータベースプライマリキーではない (一意性制約なし。インデックス作成と集約にのみ使用) |
一意性制約をサポートする標準的なデータベースプライマリキー。 |
|
|
更新可能 |
不完全で限定的 (プライマリキーに基づく高 QPS の更新をサポートしない)。 |
完全にサポート (プライマリキーに基づく高 QPS の更新をサポート)。 |
|
|
リアルタイム書き込み |
追加 |
|
|
|
インデックス |
|
説明
minmax、ブルームフィルター、ngram などのインデックスをユーザーに対して透過的に自動作成します。 |
|
|
クエリ |
オプティマイザ |
RBO (ルールベースオプティマイザ) |
CBO (コストベースオプティマイザ) |
|
フェデレーションクエリ |
サポート (エンジンは HDFS と Kafka をサポート) |
サポート (FDW は MaxCompute と Hive を直接読み取り) |
|
|
事前集約 |
サポート (MergeTree 経由) |
サポート (ストアドプロシージャとスケジュールジョブ経由) |
|
|
高 QPS ポイントクエリ |
サポート対象外 |
サポート、QPS は数千万を超える。 |
|
|
複雑な単一テーブルクエリ |
良好なパフォーマンス |
良好なパフォーマンス |
|
|
複数テーブルの JOIN |
パフォーマンスが低い |
良好なパフォーマンス |
|
|
SQL 構文 |
カスタム構文 |
PostgreSQL 互換で、より豊富な機能。 |
|
|
ウィンドウ関数 |
サポート対象外 |
サポート |
|
|
トランザクション |
ACID |
なし (書き込み後の即時クエリ可能性を保証しない。結果整合性) |
限定的なサポート (DDL トランザクション、単一行トランザクション、スナップショットベースの可視性をサポート) |
|
コピー |
災害復旧とバックアップ |
レプリケーション (リモート ZooKeeper + ClickHouse) 経由で実装 |
Binlog 経由の論理レプリケーション。基盤メカニズム経由の物理レプリケーション。 |
|
高度な機能 |
Binlog |
なし |
Binlog を提供 |
|
ベクトル検索 |
ClickHouse 22.8 以降でサポート |
サポート |
|
|
空間データ |
サポート対象外 |
サポート |
|
|
セキュリティ管理 |
カスタム権限 |
PostgreSQL 互換の権限モデル、豊富なアクセス制御、IP 許可リスト、データマスキング。 |
|
|
ストレージとコンピューティングの分離 |
分離されていない。単一ノードの容量に制限される |
分離されている。ほぼ無制限のストレージ容量。 |
|
|
可用性 |
手動フェイルオーバー処理 |
自動フェイルオーバー回復 |
|
|
O&M |
複雑 (手動でのシャード分散メンテナンス) |
フルマネージド |
|
|
エコシステム |
データ取り込み |
Kafka、Flink、Spark など |
Flink、Spark、JDBC、DataX など |
|
BI ツール |
限られた数の BI ツール (Tableau、Superset など) との統合をサポート |
PostgreSQL エコシステムと互換。100 以上の主要な BI ツールとの統合をサポート。 |
データ型のマッピング
次の表は、ClickHouse と Hologres の間のデータ型のマッピングを示しています。
|
カテゴリ |
ClickHouse |
Hologres |
|
日付 |
Date |
Date |
|
DateTime |
TIMESTAMPTZ |
|
|
DateTime(timezone) |
TIMESTAMPTZ |
|
|
DateTime64 |
TIMESTAMPTZ |
|
|
値 |
Int8 |
1 バイトの INT はサポートされていません。代わりに SMALLINT を使用してください。 |
|
Int16 |
SMALLINT |
|
|
Int32 |
INT |
|
|
Int64 |
BIGINT |
|
|
UInt8 |
INT |
|
|
UInt16 |
INT |
|
|
UInt32 |
BIGINT |
|
|
UInt64 |
BIGINT |
|
|
Float32 |
FLOAT |
|
|
Float64 |
DOUBLE PRECISION |
|
|
Decimal(P, S) |
DECIMAL |
|
|
Decimal32(S) |
DECIMAL |
|
|
Decimal64(S) |
DECIMAL |
|
|
Decimal128(S) |
DECIMAL |
|
|
ブール値 |
利用できません。代わりに UInt8 を使用してください。 |
BOOLEAN |
|
文字 |
String |
TEXT |
|
FixString(N) |
利用できません。代わりに TEXT を使用してください。 |
|
|
LowCardinality |
利用できません。自動的に最適化されるか、 |
|
|
バイナリ |
利用できません。String または FixString(N) を使用してください。 |
BIT(n)、VARBIT(n)、BYTEA、CHAR(n) などのデータ型。 |
|
その他 |
UUID |
UUID |
|
Enum |
サポートされていません。代わりに TEXT を使用してください。 |
|
|
Nested、Tuple、Array |
Array |
メタデータ移行
メタデータ移行とは、主にテーブル作成のための DDL 文の移行を指します。
-
ClickHouse クライアントで、次のコマンドを実行してソース ClickHouse インスタンス内のデータベースを一覧表示します。
説明システムデータベースが結果に表示されますが、移行する必要はありません。除外してください。
clickhouse-client --host="<host>" --port="<port>" --user="<username>" --password="<password>" --query="SHOW databases" > database.list;パラメーターの説明は次のとおりです。
パラメーター
説明
host
ソース ClickHouse インスタンスのアドレス。
port
ソース ClickHouse インスタンスのポート。
username
ソース ClickHouse インスタンスにログインするためのアカウント。DML の読み書き権限、設定権限、および DDL 権限が必要です。
password
ソース ClickHouse インスタンスへのログインに使用するアカウントのパスワード。
-
ClickHouse クライアントで、次のコマンドを実行してソース ClickHouse インスタンス内のテーブルを一覧表示します。
説明.inner. で始まるテーブルはマテリアライズドビューの内部テーブルであり、移行する必要はありません。除外してください。
clickhouse-client --host="<host>" --port="<port>" --user="<username>" --password="<password>" --query="SHOW tables from <database_name>" > table.list;パラメーターの説明は次のとおりです。
パラメーター
説明
host
ソース ClickHouse インスタンスのアドレス。
port
ソース ClickHouse インスタンスのポート。
username
ソース ClickHouse インスタンスにログインするためのアカウント。DML の読み書き権限、設定権限、および DDL 権限が必要です。
password
ソース ClickHouse インスタンスへのログインに使用するアカウントのパスワード。
database_name
ソース ClickHouse インスタンスで移行するテーブルを含むデータベースの名前。
また、次のコマンドを実行して、ソース ClickHouse インスタンス内のすべてのデータベース名とテーブル名をクエリすることもできます。
select distinct database, name from system.tables where database != 'system'; -
ClickHouse クライアントで、次のコマンドを実行して、ソース ClickHouse インスタンスからテーブル作成用の DDL をエクスポートします。
clickhouse-client --host="<host>" --port="<port>" --user="<username>" --password="<password>" --query="SHOW CREATE TABLE <database_name>.<table_name>" > table.sql;また、system.tables メタデータテーブルを直接クエリすることもできます。
SELECT * FROM system.tables where database = '<database_name>' and engine != 'Distributed';system.tables のフィールド変換ルールは次のとおりです。
フィールド
説明
database
ClickHouse のデータベースは Hologres (PostgreSQL 構文) のスキーマにマッピングされます。 たとえば、ClickHouse コマンド
create database "<database_name>";は Hologres コマンドcreate schema "<schema_name>";にマッピングされます。name
テーブル名。変更は不要です。
engine
Hologres には分散テーブルの概念や、ローカルテーブルと分散テーブルの区別がありません。 すべてのテーブルは、分散ストレージと分散クエリを備えた単一テーブルです。 したがって、
engine='Distributed'のテーブルは除外してください。is_temporary
一時テーブルは移行する必要はありません。 Hologres は現在、一時テーブルをサポートしていません。
-
data_paths
-
metadata_path
-
metadata_modification_time
無視します。
-
dependencies_database
-
dependencies_table
依存関係は、ビューやマテリアライズドビューで共通の考慮事項です。 Hologres では、依存関係のあるビューは、そのベーステーブルの前に作成する必要があります。 Hologres は現在、マテリアライズドビューをサポートしていないことに注意してください。
create_table_query
ソース ClickHouse テーブルの DDL。Hologres DDL (PostgreSQL 構文) に変換します。
engine_full
詳細なエンジン情報。無視します。
partition_key
Hologres のパーティションキー列にマッピングされます。 ClickHouse の partition_key が col1 の場合、Hologres のテーブル作成文に
partition by list (col1);を追加します。sorting_key
Hologres のセグメントキーとクラスタリングキーのインデックスにマッピングされます。
primary_key
プライマリキー。Hologres DDL 構文の Primary Key 句にマッピングされます。
sampling_key
Hologres DDL はサンプリングをサポートしていません。
storage_policy
ストレージポリシー。無視します。
-
-
ソース ClickHouse DDL を Hologres 構文 (PostgreSQL SQL 標準と互換) に変換します。
system.tables のフィールド変換ルールとデータ型のマッピングに基づいて DDL を変換します。 以下に例を示します。
-
lineitem という名前のテーブルの DDL を ClickHouse から Hologres に変換します。
-
ClickHouse インスタンスでテーブルを作成するための DDL は次のとおりです。
-- lineitem on ClickHouse CREATE TABLE lineitem_local ON CLUSTER default( l_orderkey UInt64, l_partkey UInt32, l_suppkey UInt32, l_linenumber UInt32, l_quantity decimal(15,2), l_extendedprice decimal(15,2), l_discount decimal(15,2), l_tax decimal(15,2), l_returnflag LowCardinality(String), l_linestatus LowCardinality(String), l_shipdate Date, l_commitdate Date, l_receiptdate Date, l_shipinstruct LowCardinality(String), l_shipmode LowCardinality(String), l_comment LowCardinality(String) ) ENGINE = MergeTree PARTITION BY toYear(l_shipdate) ORDER BY (l_orderkey, l_linenumber); CREATE TABLE lineitem on cluster default as lineitem_local ENGINE = Distributed(default, default, lineitem_local, l_orderkey); -
変換後の Hologres インスタンスでテーブルを作成するための DDL は次のとおりです。
-- lineitem on Hologres -- 32 シャードのテーブルグループを作成します CALL hg_create_table_group ('lineitem_tg', 32); BEGIN; CREATE TABLE LINEITEM ( L_ORDERKEY BIGINT NOT NULL, L_PARTKEY INT NOT NULL, L_SUPPKEY INT NOT NULL, L_LINENUMBER INT NOT NULL, L_QUANTITY DECIMAL(15,2) NOT NULL, L_EXTENDEDPRICE DECIMAL(15,2) NOT NULL, L_DISCOUNT DECIMAL(15,2) NOT NULL, L_TAX DECIMAL(15,2) NOT NULL, L_RETURNFLAG TEXT NOT NULL, L_LINESTATUS TEXT NOT NULL, L_SHIPDATE TIMESTAMPTZ NOT NULL, L_COMMITDATE TIMESTAMPTZ NOT NULL, L_RECEIPTDATE TIMESTAMPTZ NOT NULL, L_SHIPINSTRUCT TEXT NOT NULL, L_SHIPMODE TEXT NOT NULL, L_COMMENT TEXT NOT NULL, PRIMARY KEY (L_ORDERKEY,L_LINENUMBER) ); CALL set_table_property('LINEITEM', 'clustering_key', 'L_SHIPDATE,L_ORDERKEY'); CALL set_table_property('LINEITEM', 'segment_key', 'L_SHIPDATE'); CALL set_table_property('LINEITEM', 'table_group', 'lineitem_tg'); CALL set_table_property('LINEITEM', 'distribution_key', 'L_ORDERKEY'); -- LowCardinality の列 CALL set_table_property('LINEITEM', 'bitmap_columns', 'L_RETURNFLAG,L_LINESTATUS,L_SHIPINSTRUCT,L_SHIPMODE,L_COMMENT'); -- LowCardinality の列 CALL set_table_property('LINEITEM', 'dictionary_encoding_columns', 'L_RETURNFLAG,L_LINESTATUS,L_SHIPINSTRUCT,L_SHIPMODE,L_COMMENT'); CALL set_table_property('LINEITEM', 'time_to_live_in_seconds', '31536000'); COMMIT;
-
-
customer という名前のテーブルの DDL を ClickHouse から Hologres に変換します。
-
次の DDL 文は、ClickHouse インスタンスにテーブルを作成します。
-- customer on ClickHouse CREATE TABLE customer_local ON CLUSTER default( c_custkey UInt32, c_name String, c_address String, c_nationkey UInt32, c_phone LowCardinality(String), c_acctbal decimal(15,2), c_mktsegment LowCardinality(String), c_comment LowCardinality(String) ) ENGINE = MergeTree ORDER BY (c_custkey); CREATE TABLE customer on cluster default as customer_local ENGINE = Distributed(default, default, customer_local, c_custkey); -
変換後の Hologres インスタンスでテーブルを作成するための DDL は次のとおりです。
-- customer on Hologres BEGIN; CREATE TABLE CUSTOMER ( C_CUSTKEY INT NOT NULL PRIMARY KEY, C_NAME TEXT NOT NULL, C_ADDRESS TEXT NOT NULL, C_NATIONKEY INT NOT NULL, C_PHONE TEXT NOT NULL, C_ACCTBAL DECIMAL(15,2) NOT NULL, C_MKTSEGMENT TEXT NOT NULL, C_COMMENT TEXT NOT NULL ); CALL set_table_property('CUSTOMER', 'distribution_key', 'C_CUSTKEY'); CALL set_table_property('CUSTOMER', 'table_group', 'lineitem_tg'); CALL set_table_property('CUSTOMER', 'bitmap_columns', 'C_CUSTKEY,C_NATIONKEY,C_NAME,C_ADDRESS,C_PHONE,C_MKTSEGMENT,C_COMMENT'); CALL set_table_property('CUSTOMER', 'dictionary_encoding_columns', 'C_NAME,C_ADDRESS,C_PHONE,C_MKTSEGMENT,C_COMMENT'); CALL set_table_property('CUSTOMER', 'time_to_live_in_seconds', '31536000'); COMMIT;
-
-
-
PSQL クライアントで、次のコマンドを実行して、変換された DDL をターゲット Hologres インスタンスにインポートします。
PGUSER="<username>" PGPASSWORD="<password>" psql -h "<host>" -p "<port>" -d "<database_name>" -f table.sql;
データ移行
次の 3 つの方法のいずれかを使用して、ソース ClickHouse インスタンスから Hologres にデータを移行できます。
-
(推奨) ソースインスタンスからファイルにデータをエクスポートし、
COPY 文(JDBC または PSQL 経由) を使用してファイルをターゲット Hologres インスタンスにインポートします。 -
Flink または Spark ジョブを記述して、ソースインスタンスからデータを読み取り、ターゲット Hologres インスタンスに書き込みます。 詳細については、「Spark を使用したデータのインポート」をご参照ください。
-
DataWorks データ統合または DataX を使用して、ソースインスタンスからデータを読み取り、ターゲット Hologres インスタンスに書き込みます。 詳細については、「データ統合」をご参照ください。
ソースインスタンスからファイルにデータをエクスポートし、それをターゲット Hologres インスタンスにインポートするには、次の手順に従います。
-
ClickHouse クライアントで、次のコマンドを実行して、ソースインスタンスからローカル CSV ファイルにデータをエクスポートします。
clickhouse-client --host="<host>" --port="<port>" --user="<username>" --password="<password>" --query="select * from <database_name>.<table_name> FORMAT CSV" > table.csv;パラメーターの説明は次のとおりです。
パラメーター
説明
host
ソース ClickHouse インスタンスのアドレス。
port
ソース ClickHouse インスタンスのポート。
username
ソース ClickHouse インスタンスにログインするためのアカウント。DML の読み書き権限、設定権限、および DDL 権限が必要です。
password
ソース ClickHouse インスタンスへのログインに使用するアカウントのパスワード。
database_name
ソース ClickHouse インスタンスで移行するテーブルを含むデータベースの名前。
table_name
ソース ClickHouse インスタンスから移行するテーブルの名前。
-
PSQL クライアントで、次のコマンドを実行して、ローカル CSV ファイルを Hologres インスタンスにインポートします。
PGUSER="<username>" PGPASSWORD="<password>" psql -h "<host>" -p "<port>" -d "<database_name>" -c "COPY <schema_name>.<table_name> FROM STDIN (FORMAT 'csv')" < table.csv;パラメーターの説明は次のとおりです。
パラメーター
説明
username
ターゲット Hologres インスタンスにログインするためのアカウント。DML の読み書き権限、設定権限、および DDL 権限が必要です。 通常、これは Alibaba Cloud アカウントの AccessKey ID です。 AccessKey 管理から取得できます。
password
ターゲット Hologres インスタンスへのログインに使用するアカウントのパスワード。 通常、これは Alibaba Cloud アカウントの AccessKey Secret です。 AccessKey 管理から取得できます。
host
Hologres インスタンスのサーバーアドレス。
管理コンソールにログインし、インスタンス詳細ページに移動して、Network Information で確認できます。
port
Hologres インスタンスのポート。
管理コンソールにログインし、インスタンス詳細ページに移動して、Network Information で確認できます。
database_name
データの移行先となる Hologres インスタンス内のデータベースの名前。
schema_name
データの移行先となる Hologres インスタンス内のスキーマの名前。 指定しない場合、デフォルトは public です。
table_name
データの移行先となる Hologres インスタンス内のテーブルの名前。
-
Hologres でインポートされたデータをクエリして、データが正常にインポートされたことを確認します。
ClickHouse からのオフラインでのデータベース全体の同期
DataWorks データ統合ソリューションを使用して、ClickHouse データベース全体をオフラインで Hologres に同期できます。 詳細については、「ClickHouse データベース全体をオフラインで Hologres に同期する」をご参照ください。
クエリ文の移行
Hologres はクエリに PostgreSQL 構文を使用しますが、ClickHouse は独自の構文を使用し、これは部分的に ANSI SQL と互換性があります。 両者は概ね似ていますが、詳細が異なります。 したがって、クエリ文を移行する必要があります。 一般的な移行には、スカラー関数、ウィンドウ関数、その他の関数名が含まれます。
ClickHouse と Hologres SQL の主な違いは次のとおりです。
-
ClickHouse では、
''で囲まれた列名は、Hologres では""に置き換える必要があります。 -
ClickHouse では、
SELECT X FROM <database_name>.<table_name>を使用します。 Hologres では、SELECT X FROM <schema_name>.<table_name>を使用します。 -
式の違いは主に関数にあります。 次の表は、2 つのシステムで異なる関数を一覧表示しています (一覧にない関数は同じです)。
ClickHouse
Hologres
toYear(expr)
to_char(expr, 'YYYY')
toInt32(expr)
CAST(expr as INTEGER)
-
uniq()
-
uniqCombined()
-
uniqCombined64()
-
uniqHLL12()
approx_count_distinct()
uniqExact()
count(distinct x)
quantile(level) (expr)
approx_percentile(level) WITHIN GROUP(ORDER BY expr)
quantileExact(level) (expr)
percentile_cont (level) WITHIN GROUP(ORDER BY expr)
-
次の方法を使用してクエリ文を移行できます。
-
正規表現置換
正規表現を使用して、ClickHouse 構文の固定パターン (関数名、識別子、式など) を Hologres 構文に置き換えます。 たとえば、
''を""に置き換えます。 -
ClickHouse 拡張機能
Hologres は、
toUInt32()など、変換なしで一部の ClickHouse 関数をサポートする ClickHouse 拡張機能を提供します。
次の例は、TPC-H クエリを ClickHouse から Hologres に移行する方法を示しています。
-
例 1。
-
ClickHouse クエリ:
-- Q1 on ClickHouse select l_returnflag, l_linestatus, sum(l_quantity) as sum_qty, sum(l_extendedprice) as sum_base_price, sum(l_extendedprice * (1 - l_discount)) as sum_disc_price, sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge, avg(l_quantity) as avg_qty, avg(l_extendedprice) as avg_price, avg(l_discount) as avg_disc, count(*) as count_order from lineitem where l_shipdate <= date '1998-12-01' - interval '90' day group by l_returnflag, l_linestatus order by l_returnflag, l_linestatus; -
変換された Hologres クエリ:
-- Q1 on Hologres select l_returnflag, l_linestatus, sum(l_quantity) as sum_qty, sum(l_extendedprice) as sum_base_price, sum(l_extendedprice * (1 - l_discount)) as sum_disc_price, sum(l_extendedprice * (1 - l_discount) * (1 + l_tax)) as sum_charge, avg(l_quantity) as avg_qty, avg(l_extendedprice) as avg_price, avg(l_discount) as avg_disc, count(*) as count_order from lineitem where l_shipdate <= date '1998-12-01' - interval '90' day group by l_returnflag, l_linestatus order by l_returnflag, l_linestatus;
-
-
例 2。
-
ClickHouse インスタンスでのデータのクエリ。
-- Q4 on ClickHouse select o_orderpriority, count(*) as order_count from orders where o_orderdate >= date '1993-07-01' and o_orderdate < date '1993-07-01' + interval '3' month and o_orderdate in ( select o_orderdate from lineitem, orders where l_orderkey = o_orderkey and l_commitdate < l_receiptdate ) group by o_orderpriority order by o_orderpriority; -
変換された Hologres クエリ:
-- Q4 on Hologres select o_orderpriority, count(*) as order_count from orders where o_orderdate >= date '1993-07-01' and o_orderdate < date '1993-07-01' + interval '3' month and exists ( select * from lineitem where l_orderkey = o_orderkey and l_commitdate < l_receiptdate ) group by o_orderpriority order by o_orderpriority;
-
-
例 3。
-
ClickHouse クエリ:
-- Q11 on ClickHouse select ps_partkey, sum(ps_supplycost * ps_availqty) as value from partsupp, supplier, nation where ps_suppkey = s_suppkey and s_nationkey = n_nationkey and n_name = 'GERMANY' group by ps_partkey having sum(ps_supplycost * ps_availqty) > ( select sum(ps_supplycost * ps_availqty) * toDecimal32(0.0000010000,9) from partsupp, supplier, nation where ps_suppkey = s_suppkey and s_nationkey = n_nationkey and n_name = 'GERMANY' ) order by value desc limit 100; -
変換された Hologres クエリ:
-- Q11 on Hologres select ps_partkey, sum(ps_supplycost * ps_availqty) as value from partsupp, supplier, nation where ps_suppkey = s_suppkey and s_nationkey = n_nationkey and n_name = 'GERMANY' group by ps_partkey having sum(ps_supplycost * ps_availqty) > ( select sum(ps_supplycost * ps_availqty) * 0.0000010000 from partsupp, supplier, nation where ps_suppkey = s_suppkey and s_nationkey = n_nationkey and n_name = 'GERMANY' ) order by value desc limit 100;
-
関数の互換性
Hologres と ClickHouse は、同じ構文を持つ多くの基本関数を共有しています。 他の ClickHouse 関数については、Hologres は同じ関数または意味的に同等な代替手段をサポートしています。 関数の互換性の詳細については、「ClickHouse 互換関数」をご参照ください。