全部产品
Search
文档中心

Hologres:Impor dari ClickHouse

更新时间:Feb 05, 2026

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

  • Append

  • insert or ignore

  • insert or replace

  • update

Index

  • primary key

  • minmax

  • ngram

  • token

  • bloom filter

  • bitmap

  • dictionary

  • segment

  • primary

  • clustering

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 call set_table_properties('x', 'dictionary_encoding_columns', 'col');.

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.

  1. Di client ClickHouse, jalankan perintah berikut untuk mencantumkan database di instans ClickHouse sumber.

    Catatan

    Database 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.

  2. Di client ClickHouse, jalankan perintah berikut untuk mencantumkan tabel di instans ClickHouse sumber.

    Catatan

    Tabel 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';
  3. 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 Hologres create 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.

  4. 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;
  5. 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.

  1. 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.

  2. 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.

  3. 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, gunakan SELECT 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.