首页 > 其他分享 >大数据-135 - ClickHouse 集群 - 数据类型 实际测试

大数据-135 - ClickHouse 集群 - 数据类型 实际测试

时间:2024-09-24 16:53:49浏览次数:12  
标签:icu -- 数据类型 如下 ClickHouse 135 toDecimal32 SELECT wzk


点一下关注吧!!!非常感谢!!持续更新!!!

目前已经更新到了:

  • Hadoop(已更完)
  • HDFS(已更完)
  • MapReduce(已更完)
  • Hive(已更完)
  • Flume(已更完)
  • Sqoop(已更完)
  • Zookeeper(已更完)
  • HBase(已更完)
  • Redis (已更完)
  • Kafka(已更完)
  • Spark(已更完)
  • Flink(已更完)
  • ClickHouse(正在更新···)

章节内容

上节我们完成了如下的内容:

  • 单机安装
  • 单机测试
  • 集群安装
  • 集群启动

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_大数据

上节情况

上节已经完成了ClickHouse 的安装和启动。

测试连接

clickhouse-client -m --host h121.wzk.icu --port 9000 --user default --password [email protected]

如果可以从 122 连接到 121 说明你的服务已经搭建好了。

你可以测试以下,是否三台节点之间都是互通的,确保服务和服务之间一切正常,方便我们后续的学习研究。

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_大数据_02

检验集群

任意连接一个节点,我们进行测试

h121

clickhouse-client -m --host h121.wzk.icu --port 9000 --user default --password [email protected]
SELECT * FROM system.clusters WHERE cluster = 'perftest_3shards_1replicas';

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_clickhouse_03

h122

clickhouse-client -m --host h122.wzk.icu --port 9001 --user default --password [email protected]

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_clickhouse_04

h123

clickhouse-client -m --host h123.wzk.icu --port 9001 --user default --password [email protected]

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_flink_05

数据类型

简单介绍

支持DML,为了提高性能,较传统数据库而言,ClickHouse提供了复合数据类型。ClickHouse的Update和Delete就是由Alter变种实现的。

启动测试

我这里采用了 h121 机器的服务,当然如果你使用别的机器的服务也可以。

clickhouse-client -m --host h121.wzk.icu --port 9000 --user default --password [email protected]

整型

固定长度的整型,包括有符号整型,和无符号整型。

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_大数据_06


大数据-135 - ClickHouse 集群 - 数据类型 实际测试_flink_07

SELECT 255;
SELECT -128;

执行的结果截图如下图:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_大数据_08

浮点型

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_大数据_09


建议尽可能以整数形式存储数据,例如,将固定精度的数字转换为整数值,如时间用毫秒为单位表示,因为浮点型计算行为可能引起四舍五入的误差。

SELECT 1-0.9;
SELECT 1/0;
SELECT 0/0;

执行的结果如下图:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_架构_10

Decimal

如果要求更高精度,可以选择Decimal类型,格式:Decimal(P,S)

  • P:代表精度,决定总位数(正数部分+小数部分),取值0-38
  • S:代表规模,决定小数位数,取值范围是0-P

ClickHouse对Decimal提供三种简写:

  • Decimal32
  • Decimal64
  • Decimal128

相加、减精度取大

SELECT toDecimal32(2, 4) + toDecimal32(2, 2);
SELECT toDecimal32(4, 4) + toDecimal32(2, 2);

运行结果的截图如下图所示:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_flink_11

相乘精度取和

SELECT toDecimal32(2, 2) * toDecimal32(4, 4)

运行结果的截图如下图所示:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_大数据_12

相除精度取被除数

SELECT toDecimal32(4, 4) / toDecimal32(2, 2)

运行结果的截图如下图所示:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_大数据_13

字符串

String

字符串可以任意长度,它可以包含任意的字符集,包含空字节。

FixedString(N)

固定长度为N的字符串,N必须是严格的正自然数。当服务端读取长度小于N的字符串时候,通过在字符串末尾添加空字节来达到N字节长度。当服务端读取长度小于N的字符串的时候,将返回错误。

SELECT toFixedString('abc', 5), LENGTH(toFixedString('abc', 5)) AS LENGTH;

执行结果如下图:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_clickhouse_14

UUID

ClickHouse将UUID这种在传统数据库中充当主键的类型直接做成了数据类型

创建新表

CREATE TABLE UUID_TEST(
  `c1` UUID,
  `c2` String
)ENGINE = memory;

执行结果如下图:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_clickhouse_15

插入数据

INSERT INTO UUID_TEST SELECT generateUUIDv4(), 't1';
INSERT INTO UUID_TEST(c2) VALUES('t2');

执行结果如下图:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_java_16

查询结果

SELECT * FROM UUID_TEST;

执行结果如下图:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_java_17

枚举类型

包括 Enum8 和 Enum16 类型,保存 string = integer 的对应关系。
Enum8 用 String = Int8 对描述
Enum16 用 String = Int16 对描述。

创建新表

CREATE TABLE t_enum (
  x Enum8('hello' = 1, 'word' = 2)
) ENGINE = TinyLog;

执行结果如下所示:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_clickhouse_18


注意:这个列 x 只能存储定义列出的值,“Hello” 或者 “world”,如果插入其他值则会报错。

插入数据

INSERT INTO t_enum VALUES ('hello'), ('word'), ('hello');

执行结果如下图:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_java_19

查询数据

SELECT * FROM t_enum;

如果需要看到对应行的数值,则必须将Enum转换为整数类型。

SELECT CAST(x, 'Int8') FROM t_enum;

执行结果如下图:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_clickhouse_20

数组

Array(T):由 T 类型元素组成的数组。
T可以是任意类型,包含数组类型,但不推荐使用多维数组,ClickHouse对多维数组的支持有限。
例如,不能再MergeTree表中存储多维数组。

创建数组

SELECT array(1, 2.0) AS x, toTypeName(x);
SELECT [1, 2] AS x, toTypeName(x);

执行结果如下图:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_java_21


如果是声明字段的时候,则需要指明数据类型:

CREATE TABLE Array_test (
  `c1` Array(String)
) ENGINE = Memory;

元组

Tuple(T1,T2):元组,每个元素都有单独的类型。
创建元组的示例:

SELECT tuple(1, 'a') AS x, toTypeName(x);

执行的结果如下图:

大数据-135 - ClickHouse 集群 - 数据类型 实际测试_架构_22


注意:在定义表字段的时候也需要指明数据类型。

Date、DateTime

日期类型、用两个字节存储,表示 1970-01-01 (无符号)到当前的日期值。

布尔型

没有单独的类型来存储布尔值,可以使用 UInt8 类型,取值限制为 0 或 1。


标签:icu,--,数据类型,如下,ClickHouse,135,toDecimal32,SELECT,wzk
From: https://blog.51cto.com/wuzikang/12100912

相关文章

  • 大数据-136 - ClickHouse 集群 表引擎详解1 - 日志、Log、Memory、Merge
    点一下关注吧!!!非常感谢!!持续更新!!!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(正在更新···)章节内容上节我们完成了如下的内容:测试连接集群数据类型......
  • JavaScript数据类型转换 布尔类型转换
    布尔类型转换布尔类型只有两个值:true和false。任何直观上为空的都被转换为false,其他的转换为true。显示转换为布尔类型时,使用Boolean(Value)函数。布尔类型转换规则类型类型转换后0false“0”true“”或者‘’true“”或者‘’即空字符串falsenullfalseundefinedfalseNaNfal......
  • 第二节 基本数据类型与简单程序设计(零基础学C语言)
    1.C语言基本数据类型 有字符型char、短整型short、整型int或long、单精度浮点型float、双精度浮点型double 2.常量(1)符号常量:在程序运行过程中,其值保持不变的量为常量。常量可以用一个标识符(宏名)来表示,成为符号常量,可在程序开头用#define来定义,如#definePI3.1415926,其......
  • go基础-3.基本数据类型
    go语言的基本数据类型有整数形浮点型复数布尔字符串整数型go语言的整数类型,具体细分有很多varn1uint8=2varn2uint16=2varn3uint32=2varn4uint64=2varn5uint=2varn6int8=2varn7int16=2varn8int32=2varn9int64=2va......
  • go基础-10.自定义数据类型
    在Go语言中,自定义类型指的是使用type关键字定义的新类型,它可以是基本类型的别名,也可以是结构体、函数等组合而成的新类型。自定义类型可以帮助我们更好地抽象和封装数据,让代码更加易读、易懂、易维护自定义类型结构体就是自定义类型中的一种除此之外我们使用自定义类型,还可......
  • XML 数据类型有问题
    我想将XML文件转换为CSV。但是,我不断收到错误AttributeError:'NoneType'objecthasnoattribute'integer'。xmlparse=Xet.parse('AppleMusicLibrary.xml')root=xmlparse.getroot()foriinroot:Track_ID=i.find("Tack......
  • JavaScript数据类型转换 数字类型转换
    除了在算术函数和表达式中,会自动进行number类型转换之外,可以使用Number(Value)进行显式的转换。 数字类型转换规则类型类型转换后undefinedNaNnull0true1false0string去掉首尾空格后的纯数字字符串中含有的数字。如果剩余字符串为空,则转换结果为 0。否则,将会从剩余字符串中“读......
  • JavaSE——数据类型与变量
    文章目录一、字面常量字面常量的分类:二、数据类型三、变量1、变量概念2.语法格式3.整形变量3.1整形变量3.2长整型变量3.3短整型变量3.4字节型变量4.浮点型变量4.1双精度浮点型变量4.2单精度浮点型5.字符型变量6.布尔型变量一、字面常量publicclass......
  • Oracle中数据类型number(m,n)
    Oracle中数据类型number(m,n)中m表示的是所有有效数字的位数,n表示的是小数位的位数。m的范围是1-38,即最大38位。   1>.NUMBER类型细讲:Oracle  number  datatype  语法:NUMBER[(precision  [,scale])]简称:precision  -->  p          scale  ......
  • oracle数据类型和对应的java类型
    [转]oracle数据类型和对应的java类型 地址:http://otndnld.oracle.co.jp/document/products/oracle10g/102/doc_cd/java.102/B19275-03/datacc.htm#BHCJBJCCSQL数据类型JDBC类型代码标准的Java类型Oracle扩展的Java类型 1.0标准的JDBC类型:  CHARjava.......