Topik ini menjelaskan cara memigrasikan tabel dan data dari instans ClickHouse yang dikelola sendiri ke Hologres, yaitu gudang data real-time, untuk pengembangan data.
Prasyarat
-
Aktifkan Hologres. Untuk informasi selengkapnya, lihat Beli instans Hologres.
-
Miliki instans ClickHouse dan instal tool client ClickHouse. Untuk menginstalnya, klik ClickHouse-Client. Untuk detail instalasi dan penggunaan, lihat Getting Started.
-
Gunakan client PSQL untuk menghubungkan ke instans Hologres Anda. Untuk informasi selengkapnya, lihat Client PSQL.
Informasi latar belakang
ClickHouse adalah DBMS berorientasi kolom yang dirancang untuk pemrosesan analitik daring (OLAP). Hologres adalah layanan analitik interaktif yang sepenuhnya dikelola oleh Alibaba Cloud yang mendukung waktu respons di bawah satu detik dan kueri per detik (QPS) tinggi. Anda dapat memigrasikan tabel dan data dari ClickHouse ke Hologres untuk pengalaman pengembangan data yang lebih baik.
Tabel berikut membandingkan fitur-fitur Hologres dan ClickHouse.
|
Category |
Criteria |
ClickHouse |
Hologres |
|
Product |
Purpose |
Network traffic analysis |
Gudang data real-time tujuan umum: analitik data dan layanan online. |
|
Write |
Storage |
Column store |
Column store dan row store. |
|
Write visibility |
Tingkat kedua (memerlukan batching di sisi klien untuk pemrosesan batch; penulisan tabel terdistribusi bergantung pada penyelesaian replikasi shard) |
Tingkat milidetik (batching penulisan adaptif; data langsung dapat dikueri setelah ditulis) |
|
|
Write performance |
Tinggi |
Sangat tinggi |
|
|
Detail storage |
Didukung |
Didukung |
|
|
Primary key |
Bukan primary key database sebenarnya (tidak ada kendala unik; hanya digunakan untuk pengindeksan dan agregasi) |
Primary key database standar dengan dukungan kendala unik. |
|
|
Updatable |
Tidak lengkap dan terbatas (tidak mendukung pembaruan QPS tinggi berdasarkan primary key). |
Didukung penuh (mendukung pembaruan QPS tinggi berdasarkan primary key). |
|
|
Real-time write |
Append |
|
|
|
Index |
|
Catatan
Membuat indeks minmax, bloom filter, ngram, dan lainnya secara otomatis secara transparan bagi pengguna. |
|
|
Query |
Optimizer |
RBO (Rule-Based Optimizer) |
CBO (Cost-Based Optimizer) |
|
Federated query |
Didukung (engine mendukung HDFS dan Kafka) |
Didukung (FDW membaca MaxCompute dan Hive secara langsung) |
|
|
Pre-aggregation |
Didukung (melalui MergeTree) |
Didukung (melalui prosedur tersimpan dan pekerjaan terjadwal) |
|
|
High-QPS point query |
Tidak didukung |
Didukung, dengan QPS melebihi puluhan juta. |
|
|
Complex single-table query |
Kinerja baik |
Kinerja baik |
|
|
Multi-table JOIN |
Kinerja buruk |
Kinerja baik |
|
|
SQL syntax |
Sintaks kustom |
Kompatibel dengan PostgreSQL dengan fungsionalitas yang lebih kaya. |
|
|
WINDOW FUNCTION |
Tidak didukung |
Didukung |
|
|
Transaction |
ACID |
Tidak (tidak menjamin ketersediaan kueri segera setelah penulisan; konsistensi akhir) |
Dukungan terbatas (mendukung transaksi DDL, transaksi baris tunggal, dan visibilitas berbasis Snapshot) |
|
Copy |
Disaster recovery dan backup |
Diimplementasikan melalui Replication (ZooKeeper remote + ClickHouse) |
Replikasi logis melalui Binlog; replikasi fisik melalui mekanisme dasar. |
|
Advanced features |
Binlog |
Tidak ada |
Menyediakan Binlog |
|
Vector search |
Didukung di ClickHouse 22.8 dan versi selanjutnya |
Didukung |
|
|
Spatial data |
Tidak didukung |
Didukung |
|
|
Security management |
Izin kustom |
Model izin kompatibel PostgreSQL, kontrol akses yang kaya, daftar IP yang diizinkan, dan penyamaran data. |
|
|
Storage-compute separation |
Tidak dipisahkan; dibatasi oleh kapasitas node tunggal |
Dipisahkan; kapasitas penyimpanan hampir tak terbatas. |
|
|
Availability |
Penanganan failover manual |
Pemulihan failover otomatis |
|
|
O&M |
Kompleks (perawatan distribusi shard manual) |
Sepenuhnya dikelola |
|
|
Ecosystem |
Data ingestion |
Kafka, Flink, Spark, ... |
Flink, Spark, JDBC, DataX, … |
|
BI tools |
Mendukung integrasi dengan jumlah terbatas alat BI (Tableau, Superset, ...) |
Kompatibel dengan ekosistem PostgreSQL; mendukung integrasi dengan lebih dari 100 alat BI utama. |
Pemetaan tipe data
Tabel berikut menunjukkan pemetaan tipe data antara ClickHouse dan Hologres.
|
Category |
ClickHouse |
Hologres |
|
Date |
Date |
Date |
|
DateTime |
TIMESTAMPTZ |
|
|
DateTime(timezone) |
TIMESTAMPTZ |
|
|
DateTime64 |
TIMESTAMPTZ |
|
|
Value |
Int8 |
INT satu byte tidak didukung; gunakan SMALLINT sebagai gantinya. |
|
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 |
|
|
Boolean |
Tidak tersedia; gunakan UInt8 sebagai gantinya. |
BOOLEAN |
|
Character |
String |
TEXT |
|
FixString(N) |
Tidak tersedia; gunakan TEXT sebagai gantinya. |
|
|
LowCardinality |
Tidak tersedia; dioptimalkan secara otomatis atau diatur menggunakan perintah |
|
|
Binary |
Tidak tersedia; gunakan String atau FixString(N). |
Tipe data BIT(n), VARBIT(n), BYTEA, CHAR(n), dan lainnya. |
|
Other |
UUID |
UUID |
|
Enum |
Tidak didukung; gunakan TEXT sebagai gantinya. |
|
|
Nested, Tuple, Array |
Array |
Migrasi metadata
Migrasi metadata terutama mengacu pada migrasi pernyataan DDL untuk pembuatan tabel.
-
Di client ClickHouse, jalankan perintah berikut untuk mencantumkan database di instans ClickHouse sumber.
CatatanDatabase sistem muncul dalam hasil tetapi tidak perlu dimigrasikan. Filter database tersebut.
clickhouse-client --host="<host>" --port="<port>" --user="<username>" --password="<password>" --query="SHOW databases" > database.list;Deskripsi parameter sebagai berikut.
Parameter
Description
host
Alamat instans ClickHouse sumber.
port
Port instans ClickHouse sumber.
username
Akun untuk login ke instans ClickHouse sumber, dengan izin baca/tulis DML dan pengaturan, serta izin DDL.
password
Kata sandi untuk akun yang digunakan untuk login ke instans ClickHouse sumber.
-
Di client ClickHouse, jalankan perintah berikut untuk mencantumkan tabel di instans ClickHouse sumber.
CatatanTabel yang diawali dengan .inner. adalah Tabel internal untuk Tampilan yang di-materialisasi dan tidak perlu dimigrasikan. Filter tabel tersebut.
clickhouse-client --host="<host>" --port="<port>" --user="<username>" --password="<password>" --query="SHOW tables from <database_name>" > table.list;Deskripsi parameter sebagai berikut.
Parameter
Description
host
Alamat instans ClickHouse sumber.
port
Port instans ClickHouse sumber.
username
Akun untuk login ke instans ClickHouse sumber, dengan izin baca/tulis DML dan pengaturan, serta izin DDL.
password
Kata sandi untuk akun yang digunakan untuk login ke instans ClickHouse sumber.
database_name
Nama database yang berisi tabel yang akan dimigrasikan di instans ClickHouse sumber.
Anda juga dapat menjalankan perintah berikut untuk mengkueri semua nama database dan tabel di instans ClickHouse sumber.
select distinct database, name from system.tables where database != 'system'; -
Di client ClickHouse, jalankan perintah berikut untuk mengekspor DDL pembuatan tabel dari instans ClickHouse sumber.
clickhouse-client --host="<host>" --port="<port>" --user="<username>" --password="<password>" --query="SHOW CREATE TABLE <database_name>.<table_name>" > table.sql;Anda juga dapat mengkueri tabel metadata system.tables secara langsung.
SELECT * FROM system.tables where database = '<database_name>' and engine != 'Distributed';Aturan konversi bidang untuk system.tables sebagai berikut.
Field
Description
database
Database ClickHouse dipetakan ke skema di Hologres (sintaks PostgreSQL). Misalnya, perintah ClickHouse
create database "<database_name>";dipetakan ke perintah Hologrescreate schema "<schema_name>";.name
Nama tabel; tidak perlu perubahan.
engine
Hologres tidak memiliki konsep tabel Distributed atau perbedaan antara tabel Local dan Distributed. Semua tabel adalah tabel tunggal dengan penyimpanan dan kueri terdistribusi. Oleh karena itu, filter tabel di mana
engine='Distributed'.is_temporary
Tabel temporary tidak perlu dimigrasikan. Hologres saat ini tidak mendukung tabel temporary.
-
data_paths
-
metadata_path
-
metadata_modification_time
Abaikan.
-
dependencies_database
-
dependencies_table
Dependencies merupakan pertimbangan umum untuk view dan Tampilan yang di-materialisasi. Di Hologres, view dengan dependencies harus dibuat sebelum tabel dasarnya. Perhatikan bahwa Hologres saat ini tidak mendukung Tampilan yang di-materialisasi.
create_table_query
DDL untuk tabel ClickHouse sumber; ubah ke DDL Hologres (sintaks PostgreSQL).
engine_full
Informasi engine detail; abaikan.
partition_key
Dipetakan ke kolom kunci partisi di Hologres. Jika partition_key ClickHouse adalah col1, tambahkan
partition by list (col1);ke pernyataan pembuatan tabel Hologres.sorting_key
Dipetakan ke indeks Segment Key dan Clustering Key di Hologres.
primary_key
Primary key; dipetakan ke klausa Primary Key dalam sintaks DDL Hologres.
sampling_key
DDL Hologres tidak mendukung sampling.
storage_policy
Kebijakan penyimpanan; abaikan.
-
-
Ubah DDL ClickHouse sumber ke sintaks Hologres (kompatibel dengan standar SQL PostgreSQL).
Ubah DDL berdasarkan aturan konversi bidang untuk system.tables dan Pemetaan tipe data. Berikut contohnya.
-
Ubah DDL untuk tabel bernama lineitem dari ClickHouse ke Hologres.
-
DDL untuk membuat tabel di instans ClickHouse sebagai berikut.
-- 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); -
DDL untuk membuat tabel di instans Hologres yang telah diubah sebagai berikut.
-- lineitem on Hologres -- create a table group with 32 shards 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'); -- columns with LowCardinality CALL set_table_property('LINEITEM', 'bitmap_columns', 'L_RETURNFLAG,L_LINESTATUS,L_SHIPINSTRUCT,L_SHIPMODE,L_COMMENT'); -- columns with 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;
-
-
Ubah DDL untuk tabel bernama customer dari ClickHouse ke Hologres.
-
Pernyataan DDL berikut membuat tabel di instans 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); -
DDL untuk membuat tabel di instans Hologres setelah transformasi sebagai berikut.
-- 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;
-
-
-
Di client PSQL, jalankan perintah berikut untuk mengimpor DDL yang telah diubah ke instans Hologres target.
PGUSER="<username>" PGPASSWORD="<password>" psql -h "<host>" -p "<port>" -d "<database_name>" -f table.sql;
Migrasi data
Anda dapat memigrasikan data dari instans ClickHouse sumber ke Hologres menggunakan salah satu dari tiga metode berikut.
-
(Direkomendasikan) Ekspor data dari instans sumber ke file, lalu gunakan
pernyataan COPY(melalui JDBC atau PSQL) untuk mengimpor file tersebut ke instans Hologres target. -
Buat pekerjaan Flink atau Spark untuk membaca data dari instans sumber dan menulisnya ke instans Hologres target. Untuk informasi selengkapnya, lihat Impor data menggunakan Spark.
-
Gunakan Data Integration DataWorks atau DataX untuk membaca data dari instans sumber dan menulisnya ke instans Hologres target. Untuk informasi selengkapnya, lihat Data Integration.
Untuk mengekspor data dari instans sumber ke file dan kemudian mengimpornya ke instans Hologres target, ikuti langkah-langkah berikut.
-
Di client ClickHouse, jalankan perintah berikut untuk mengekspor data dari instans sumber ke file CSV lokal.
clickhouse-client --host="<host>" --port="<port>" --user="<username>" --password="<password>" --query="select * from <database_name>.<table_name> FORMAT CSV" > table.csv;Deskripsi parameter sebagai berikut.
Parameter
Description
host
Alamat instans ClickHouse sumber.
port
Port instans ClickHouse sumber.
username
Akun untuk login ke instans ClickHouse sumber, dengan izin baca/tulis DML dan pengaturan, serta izin DDL.
password
Kata sandi untuk akun yang digunakan untuk login ke instans ClickHouse sumber.
database_name
Nama database yang berisi tabel yang akan dimigrasikan di instans ClickHouse sumber.
table_name
Nama tabel yang akan dimigrasikan dari instans ClickHouse sumber.
-
Di client PSQL, jalankan perintah berikut untuk mengimpor file CSV lokal ke instans 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;Deskripsi parameter sebagai berikut.
Parameter
Description
username
Akun untuk login ke instans Hologres target, dengan izin baca/tulis DML dan pengaturan, serta izin DDL. Biasanya, ini adalah ID AccessKey Akun Alibaba Cloud Anda. Anda dapat memperolehnya dari AccessKey Management.
password
Kata sandi untuk akun yang digunakan untuk login ke instans Hologres target. Biasanya, ini adalah Rahasia AccessKey Akun Alibaba Cloud Anda. Anda dapat memperolehnya dari AccessKey Management.
host
Alamat server instans Hologres.
Anda dapat login ke Konsol Manajemen, buka halaman detail instans, dan temukan di bawah Network Information.
port
Port instans Hologres.
Anda dapat login ke Konsol Manajemen, buka halaman detail instans, dan temukan di bawah Network Information.
database_name
Nama database di instans Hologres tempat Anda memigrasikan data.
schema_name
Nama skema di instans Hologres tempat Anda memigrasikan data. Default-nya adalah public jika tidak ditentukan.
table_name
Nama tabel di instans Hologres tempat Anda memigrasikan data.
-
Kueri data yang diimpor di Hologres untuk memverifikasi bahwa data berhasil diimpor.
Sinkronisasi offline seluruh database dari ClickHouse
Anda dapat menggunakan solusi Data Integration DataWorks untuk menyinkronkan seluruh database ClickHouse ke Hologres secara offline. Untuk informasi selengkapnya, lihat Sinkronisasi seluruh database ClickHouse ke Hologres secara offline.
Migrasi pernyataan kueri
Hologres menggunakan sintaks PostgreSQL untuk kueri, sedangkan ClickHouse menggunakan sintaksnya sendiri yang sebagian kompatibel dengan ANSI SQL. Keduanya umumnya mirip tetapi berbeda dalam detailnya. Oleh karena itu, Anda harus memigrasikan pernyataan kueri. Migrasi umum melibatkan fungsi skalar, Fungsi jendela, dan nama fungsi lainnya.
Perbedaan utama antara SQL ClickHouse dan Hologres meliputi hal-hal berikut.
-
Di ClickHouse, nama kolom yang diapit dengan
''harus diganti dengan""di Hologres. -
Di ClickHouse, gunakan
SELECT X FROM <database_name>.<table_name>. Di Hologres, gunakanSELECT X FROM <schema_name>.<table_name>. -
Perbedaan ekspresi terutama melibatkan fungsi. Tabel berikut mencantumkan fungsi yang berbeda antara kedua sistem (fungsi yang tidak tercantum identik).
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)
-
Anda dapat memigrasikan pernyataan kueri menggunakan metode berikut.
-
Penggantian ekspresi reguler
Gunakan ekspresi reguler untuk mengganti pola tetap dalam sintaks ClickHouse (seperti nama fungsi, pengidentifikasi, dan ekspresi) dengan sintaks Hologres. Misalnya, ganti
''dengan"". -
Ekstensi ClickHouse
Hologres menyediakan Ekstensi ClickHouse yang mendukung beberapa fungsi ClickHouse tanpa konversi, seperti
toUInt32().
Contoh berikut menunjukkan cara memigrasikan kueri TPC-H dari ClickHouse ke Hologres.
-
Contoh 1.
-
Kueri 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; -
Kueri Hologres yang dikonversi:
-- 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;
-
-
Contoh 2.
-
Mengkueri data di instans 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; -
Kueri Hologres yang dikonversi:
-- 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;
-
-
Contoh 3.
-
Kueri 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; -
Kueri Hologres yang dikonversi:
-- 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;
-
Kompatibilitas fungsi
Hologres dan ClickHouse memiliki banyak fungsi dasar dengan sintaks identik. Untuk fungsi ClickHouse lainnya, Hologres mendukung fungsi yang sama atau alternatif semantik yang setara. Untuk detail kompatibilitas fungsi, lihat Fungsi kompatibel ClickHouse.