日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

從ClickHouse導(dǎo)入

更新時(shí)間:

本文為您介紹如何遷移自建ClickHouse的數(shù)據(jù)庫表和數(shù)據(jù)至實(shí)時(shí)數(shù)倉Hologres上進(jìn)行數(shù)據(jù)開發(fā)。

前提條件

  • 開通Hologres,詳情請(qǐng)參見購買Hologres

  • 已有ClickHouse實(shí)例,并且安裝ClickHouse-Client工具,如需安裝請(qǐng)單擊ClickHouse-Client,安裝和使用詳情請(qǐng)參見Getting Started

  • 使用PSQL客戶端連接Hologres實(shí)例,詳情請(qǐng)參見PSQL客戶端

背景信息

ClickHouse是一個(gè)用于聯(lián)機(jī)分析(OLAP)的列式數(shù)據(jù)庫管理系統(tǒng)。Hologres是阿里巴巴自主研發(fā)的一款交互式分析產(chǎn)品,支持亞秒級(jí)響應(yīng)與高QPS,您可以從ClickHouse遷移表和數(shù)據(jù)至Hologres獲取更好的數(shù)據(jù)開發(fā)體驗(yàn)。

Hologres與ClickHouse產(chǎn)品特性對(duì)比如下。

分類

對(duì)比項(xiàng)

Clickhouse

Hologres

產(chǎn)品

定位

流量分析

通用實(shí)時(shí)數(shù)倉:數(shù)據(jù)分析和在線服務(wù)。

寫入

存儲(chǔ)

列存

列存和行存。

寫入可見性

秒級(jí)(需要客戶端攢數(shù)據(jù)進(jìn)行批處理,分布式表寫入依賴Shard數(shù)據(jù)復(fù)制完成)

毫秒級(jí)(寫入自適應(yīng)批處理,寫入即可查)

寫入性能

非常高

明細(xì)存儲(chǔ)

支持

支持

主鍵(Primary Key)

非數(shù)據(jù)庫主鍵(不支持唯一性約束,僅用于索引+聚合)

標(biāo)準(zhǔn)數(shù)據(jù)庫主鍵,支持唯一性約束。

可更新

不完備,能力弱(不支持基于主鍵的高QPS更新)。

完整支持(支持基于主鍵的高QPS更新)。

實(shí)時(shí)寫入

Append

  • Append

  • insert or ignore

  • insert or replace

  • update

索引

  • primary key

  • minmax

  • ngram

  • token

  • bloom filter

  • bitmap

  • dictionary

  • segment

  • primary

  • clustering

說明

自動(dòng)建有minmax、bloom filter、ngram等索引,對(duì)用戶透明。

查詢

優(yōu)化器

RBO(Rule-Based Optimizer)

CBO(Cost-Based Optimizer)

聯(lián)邦查詢

支持(Engine支持HDFS、Kafka)

支持(FDW直讀MaxCompute、Hive)

預(yù)聚合

支持(通過MergeTree)

支持(存儲(chǔ)過程+定期調(diào)度)

高QPS點(diǎn)查

不支持

支持,QPS可達(dá)千萬以上。

單表復(fù)雜查詢

性能好

性能好

多表JOIN

性能差

性能好

SQL語法

自定義語法

兼容PostgreSQL,功能更豐富。

WINDOW FUNCTION

不支持

支持

事務(wù)

事務(wù)ACID

無(不保證寫入即可查,最終一致性)

有限支持(支持DDL事務(wù)、單行事務(wù)、基于snapshot的可見性)

復(fù)制

容災(zāi)和備份

通過Replication實(shí)現(xiàn)(遠(yuǎn)程ZK+CK)

通過Binlog復(fù)制實(shí)現(xiàn)邏輯復(fù)制,通過底層機(jī)制實(shí)現(xiàn)物理復(fù)制。

高級(jí)功能

Binlog

提供Binlog

向量檢索

ClickHouse 22.8及以上版本支持

支持

空間數(shù)據(jù)

不支持

支持

安全管理

自定義權(quán)限

兼容PG權(quán)限模型、豐富的權(quán)限控制、IP白名單、數(shù)據(jù)脫敏。

存儲(chǔ)計(jì)算分離

不分離,單機(jī)容量限制

分離,存儲(chǔ)容量近乎無限。

可用性

用戶手工處理Failover

Failover自動(dòng)恢復(fù)

運(yùn)維

復(fù)雜(手工維護(hù)Shard分布)

免運(yùn)維

生態(tài)

數(shù)據(jù)接入

Kafka、Flink、Spark、...

Flink、Spark、JDBC、DataX、…

BI工具

支持對(duì)接少量BI工具(Tableau、Superset、...)

兼容PostgreSQL生態(tài),支持對(duì)接100+主流BI工具。

數(shù)據(jù)類型映射

ClickHouse與Hologres的數(shù)據(jù)類型映射如下表所示。

類別

ClickHouse

Hologres

日期

Date

Date

DateTime

TIMESTAMPTZ

DateTime(timezone)

TIMESTAMPTZ

DateTime64

TIMESTAMPTZ

數(shù)值

Int8

不支持單字節(jié)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

無,自動(dòng)智能設(shè)定或使用call set_table_properties('x', 'dictionary_encoding_columns', 'col'); 命令進(jìn)行設(shè)置。

二進(jìn)制

無,使用String或FixString(N)。

BIT(n)、VARBIT(n)、BYTEA、CHAR(n) 等數(shù)據(jù)類型。

其他

UUID

UUID

Enum

不支持,使用TEXT代替。

Nested、 Tuple、Array

數(shù)組

元數(shù)據(jù)遷移

元數(shù)據(jù)的遷移,主要指進(jìn)行建表DDL的遷移。

  1. 在ClickHouse-Client使用如下命令語句查看源ClickHouse實(shí)例的數(shù)據(jù)庫列表。

    說明

    查詢到的表中system是系統(tǒng)數(shù)據(jù)庫,不需要遷移,可以直接過濾掉。

    clickhouse-client --host="<host>" --port="<port>" --user="<username>" --password="<password>" --query="SHOW databases"  > database.list;

    參數(shù)說明如下。

    參數(shù)

    說明

    host

    ClickHouse源實(shí)例的地址。

    port

    ClickHouse源實(shí)例的端口。

    username

    登錄ClickHouse源實(shí)例的賬號(hào),擁有DML讀寫和設(shè)置權(quán)限,允許DDL權(quán)限。

    password

    登錄ClickHouse源實(shí)例賬號(hào)的密碼。

  2. 在ClickHouse-Client使用如下命令語句查看源ClickHouse實(shí)例的數(shù)據(jù)表列表。

    說明

    查詢到的表中,如果有以.inner.開頭的表,此類表是物化視圖的內(nèi)部表,不需要遷移,可以直接過濾掉。

    clickhouse-client --host="<host>" --port="<port>" --user="<username>" --password="<password>" --query="SHOW tables from <database_name>" > table.list;

    參數(shù)說明如下。

    參數(shù)

    說明

    host

    源ClickHouse實(shí)例的地址。

    port

    源ClickHouse實(shí)例的端口。

    username

    登錄源ClickHouse實(shí)例的賬號(hào),擁有DML讀寫和設(shè)置權(quán)限,允許DDL權(quán)限。

    password

    登錄源ClickHouse實(shí)例賬號(hào)的密碼。

    database_name

    源ClickHouse實(shí)例遷移表所在的數(shù)據(jù)庫名稱。

    您也可以通過以下命令語句查詢?cè)碈lickHouse實(shí)例所有的數(shù)據(jù)庫和表名稱。

    select distinct database, name from system.tables where database != 'system';
  3. 在ClickHouse-Client使用如下命令語句導(dǎo)出ClickHouse源實(shí)例的建表DDL。

    clickhouse-client --host="<host>" --port="<port>" --user="<username>" --password="<password>" --query="SHOW CREATE TABLE <database_name>.<table_name>"  > table.sql;

    您也可以使用如下命令直接查看system.tables元數(shù)據(jù)表。

    SELECT * FROM system.tables
    where database = '<database_name>' and engine != 'Distributed';

    system.tables中字段的轉(zhuǎn)換說明如下。

    字段

    說明

    database

    ClickHouse的database映射到Hologres(PostgreSQL語法)的Schema概念,即ClickHouse的create database "<database_name>"; 命令映射為Hologres的create schema "<schema_name>";命令。

    name

    表名稱,無需改動(dòng)。

    engine

    Hologres沒有Distributed表概念,沒有Local和Distributed之分,就是一個(gè)單表,分布式存儲(chǔ)和查詢,所以需要過濾掉engine='Distributed'的表。

    is_temporary

    Temporary表邏輯上無須遷移,同時(shí)Hologres暫不支持Temporary表。

    • data_paths

    • metadata_path

    • metadata_modification_time

    可忽略。

    • dependencies_database

    • dependencies_table

    常見于View、Materialized View。具有dependencies的View,在Hologres中,需要先于base表創(chuàng)建。Hologres的Materialized View還未支持。

    create_table_query

    ClickHouse源實(shí)例表的DDL,需轉(zhuǎn)換成Hologres DDL(PostgreSQL語法)。

    engine_full

    Engine詳細(xì)信息,可忽略。

    partition_key

    對(duì)應(yīng)Hologres的分區(qū)列,ClickHouse的源實(shí)例partition_key如果為col1,則Hologres建表語句后添加partition by list (col1);語句。

    sorting_key

    對(duì)應(yīng)Hologres的Segment Key和Clustering Key索引。

    primary_key

    主鍵,對(duì)應(yīng)Hologres DDL語法的Primary Key。

    sampling_key

    Hologres DDL不支持采樣。

    storage_policy

    存儲(chǔ)策略,可忽略。

  4. 將源ClickHouse實(shí)例的建表DDL轉(zhuǎn)換為Hologres的語法(兼容PostgreSQL SQL標(biāo)準(zhǔn))。

    根據(jù)system.tables中字段的轉(zhuǎn)換說明和數(shù)據(jù)類型映射進(jìn)行DDL轉(zhuǎn)換,示例如下。

    • 將名稱為lineitem表在ClickHouse實(shí)例中的DDL轉(zhuǎn)換為Hologres的建表DDL。

      • ClickHouse實(shí)例的建表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);
      • 轉(zhuǎn)換后Hologres實(shí)例的建表DDL如下所示。

        -- 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;
    • 將名稱為customer表在ClickHouse實(shí)例中的DDL轉(zhuǎn)換為Hologres的建表DDL。

      • ClickHouse實(shí)例的建表DDL如下所示。

        -- 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);
      • 轉(zhuǎn)換后Hologres實(shí)例的建表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;
  5. 在PSQL客戶端使用如下命令語句將轉(zhuǎn)換后的建表DDL導(dǎo)入到目標(biāo)Hologres實(shí)例中。

    PGUSER="<username>" PGPASSWORD="<password>" psql -h "<host>" -p "<port>" -d "<database_name>" -f table.sql;

數(shù)據(jù)遷移

從源ClickHouse遷移數(shù)據(jù)至Hologres有如下三種方法。

  • (推薦)在源實(shí)例將數(shù)據(jù)導(dǎo)出為文件,然后通過COPY語句命令語句(JDBC/PSQL)將文件導(dǎo)入到Hologres目標(biāo)實(shí)例。

  • 通過編寫Flink、Spark job將源實(shí)例數(shù)據(jù)讀出,然后寫入目標(biāo)Hologres實(shí)例,請(qǐng)參見使用Spark導(dǎo)入

  • 通過DataWorks數(shù)據(jù)集成或DataX,讀取源實(shí)例數(shù)據(jù),后寫入目標(biāo)Hologres實(shí)例,請(qǐng)參見數(shù)據(jù)集成概述

在源實(shí)例將數(shù)據(jù)導(dǎo)出為文件,再導(dǎo)入目標(biāo)Hologres實(shí)例,操作步驟如下。

  1. 在ClickHouse-Client使用如下命令語句導(dǎo)出源實(shí)例數(shù)據(jù)至本地CSV文件。

    clickhouse-client --host="<host>" --port="<port>" --user="<username>" --password="<password>"  --query="select * from <database_name>.<table_name> FORMAT CSV"  > table.csv;

    參數(shù)說明如下。

    參數(shù)

    說明

    host

    ClickHouse源實(shí)例的地址。

    port

    ClickHouse源實(shí)例的端口。

    username

    登錄ClickHouse源實(shí)例的賬號(hào),擁有DML讀寫和設(shè)置權(quán)限,允許DDL權(quán)限。

    password

    登錄ClickHouse源實(shí)例賬號(hào)的密碼。

    database_name

    ClickHouse源實(shí)例遷移表所在的數(shù)據(jù)庫名稱。

    table_name

    ClickHouse源實(shí)例遷移的表名稱。

  2. 在PSQL客戶端使用如下命令語句將本地CSV文件導(dǎo)入到Hologres實(shí)例。

    PGUSER="<username>" PGPASSWORD="<password>" psql -h "<host>" -p "<port>" -d "<database_name>" -c "COPY <schema_name>.<table_name> FROM STDIN (FORMAT 'csv')" < table.csv;

    參數(shù)說明如下。

    參數(shù)

    說明

    username

    登錄Hologres目標(biāo)實(shí)例的賬號(hào),擁有DML讀寫和設(shè)置權(quán)限,允許DDL權(quán)限。通常是阿里云賬號(hào)的AccessKey ID,您可以單擊AccessKey 管理,獲取AccessKey ID。

    password

    登錄Hologres目標(biāo)實(shí)例賬號(hào)的密碼,通常是阿里云賬號(hào)的AccessKey Secret,您可以單擊AccessKey 管理,獲取AccessKey Secret。

    host

    Hologres實(shí)例的服務(wù)器地址。

    您可以登錄管理控制臺(tái),進(jìn)入實(shí)例詳情頁,從網(wǎng)絡(luò)信息獲取。

    port

    Hologres實(shí)例的端口。

    您可以登錄管理控制臺(tái),進(jìn)入實(shí)例詳情頁,從網(wǎng)絡(luò)信息獲取。

    database_name

    遷移到Hologres實(shí)例的數(shù)據(jù)庫名稱。

    schema_name

    遷移到Hologres實(shí)例的Schema名稱,不填默認(rèn)為public。

    table_name

    遷移到Hologres實(shí)例的表名稱。

  3. 在Hologres中查詢導(dǎo)入數(shù)據(jù),驗(yàn)證數(shù)據(jù)是否導(dǎo)入成功。

ClickHouse離線整庫同步

可以通過DataWorks數(shù)據(jù)集成同步解決方案將ClickHouse整個(gè)數(shù)據(jù)庫的數(shù)據(jù)離線同步至Hologres,詳情請(qǐng)參見ClickHouse整庫數(shù)據(jù)離線同步至Hologres

數(shù)據(jù)查詢語句遷移

Hologres的數(shù)據(jù)查詢語句采用PostgreSQL語法,ClickHouse為自創(chuàng)語法,部分兼容SQL ANSI,兩者語法基本類似,但有細(xì)節(jié)上的差異。所以需要對(duì)數(shù)據(jù)查詢語句進(jìn)行遷移,常見的是SQL中使用函數(shù)名的遷移,例如Scalar函數(shù)、Window函數(shù)等。

ClickHouse和Hologres的SQL有如下差別。

  • ClickHouse中用''包圍的列名,在Hologres中需要替換成""包圍。

  • ClickHouse中使用SELECT X FROM <database_name>.<table_name>命令,在Hologres中使用SELECT X FROM <schema_name>.<table_name>命令。

  • 表達(dá)式差異,主要表現(xiàn)在函數(shù)上,函數(shù)映射表(僅列出有差異的函數(shù),未列出則無差異)如下所示。

    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)

數(shù)據(jù)查詢語句遷移有如下方法。

  • 正則替換

    采用正則替換的方式,將ClickHouse的一些固定模式的語法(函數(shù)名、標(biāo)志符、表達(dá)式等)轉(zhuǎn)換成Hologres的語法,例如將''轉(zhuǎn)換為""

  • ClickHouse Extension

    Hologres中具備ClickHouse Extension,兼容部分ClickHouse函數(shù),無需轉(zhuǎn)換,例如toUInt32()函數(shù)。

下面以部分TPC-H Query為例,將ClickHouse源實(shí)例的數(shù)據(jù)查詢語句遷移至Hologres的示例如下所示。

  • 示例一。

    • 在ClickHouse實(shí)例上的數(shù)據(jù)查詢語句。

      -- 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;
    • 轉(zhuǎn)換后Hologres實(shí)例的數(shù)據(jù)查詢語句。

      -- 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;
  • 示例二。

    • 在ClickHouse實(shí)例上的數(shù)據(jù)查詢語句。

      -- 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;
    • 轉(zhuǎn)換后Hologres實(shí)例的數(shù)據(jù)查詢語句。

      -- 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;
  • 示例三。

    • 在ClickHouse實(shí)例上的數(shù)據(jù)查詢語句。

      -- 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;
    • 轉(zhuǎn)換后Hologres實(shí)例的數(shù)據(jù)查詢語句。

      -- 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;

函數(shù)兼容

Hologres與Clickhouse存在大量語法一致的基礎(chǔ)函數(shù)。針對(duì)其他Clickhouse函數(shù),Hologres支持部分函數(shù)或其同語義函數(shù)。具體函數(shù)兼容情況請(qǐng)參見Clickhouse兼容函數(shù)