大数据ClickHouse进阶(十九):ClickHouse字典的数据源

举报
Lansonli 发表于 2022/10/17 08:10:45 2022/10/17
2.7k+ 0 0
【摘要】 ClickHouse字典的数据源一、文件数据源ClickHouse中的字典还可以映射本地文件数据。操作如下:1、创建本地csv文件在本地创建的csv文件需要放在“/var/lib/ClickHouse/user_files”路径下,在此目录下创建organization.csv文件,写入如下内容:1,"a0001","研发部"2,"a0002","产品部"3,"a0003","数据部"4,"...

ClickHouse字典的数据源

一、文件数据源

ClickHouse中的字典还可以映射本地文件数据。操作如下:

1、创建本地csv文件

在本地创建的csv文件需要放在“/var/lib/ClickHouse/user_files”路径下,在此目录下创建organization.csv文件,写入如下内容:

1,"a0001","研发部"
2,"a0002","产品部"
3,"a0003","数据部"
4,"a0004","测试部"
5,"a0005","运维部"
6,"a0006","规划部"
7,"a0007","市场部"

2、创建字典表

#在ClickHouse中创建字典表
create dictionary org_dic(
id UInt64,
code String,
name String
)
primary key id
SOURCE(FILE(path '/var/lib/ClickHouse/user_files/organization.csv' format 'CSV'))
LAYOUT(FLAT())
LIFETIME(30);

注意:SOURCE(FILE(path '文件名'' 文件格式')),文件格式支持CSV和TabSeparated。

#查询使用字典表
node1 :) select dictGet('dic_test_db.org_dic','name',toUInt64(2)) as name;
┌─name───┐
│ 产品部 │
└────────┘

二、MySQL数据源

ClickHouse中还支持从MySQL中提取数据到字典表。具体操作如下:

1、在MySQL中创建表organization并插入数据

#在mysql中创建库、表及插入数据
mysql> create database mytest;
mysql> use mytest;
mysql> create table organization(id int,code varchar(255),name varchar(255));

#插入数据
insert into mytest.organization values(1,"a0001","org1");
insert into mytest.organization values(2,"a0002","org2");
insert into mytest.organization values(3,"a0003","org3");
insert into mytest.organization values(4,"a0004","org4");
insert into mytest.organization values(5,"a0005","org5");
insert into mytest.organization values(6,"a0006","org6");
insert into mytest.organization values(7,"a0007","org7");

#查询数据
mysql> select * from organization;

2、在ClickHouse中创建字典表

#在ClickHouse中创建flat字典表
create dictionary org_dic2(
id UInt64,
code String,
name String
)
primary key id
SOURCE(MYSQL(
    port 3306
    user 'root'
    password '123456'
    host 'node2'
    db 'mytest'
    table 'organization'
))
LAYOUT(FLAT())
LIFETIME(MIN 3 MAX 5);
#使用字典表
node1 :)  select dictGet('dic_test_db.org_dic2','name',toUInt64(2)) as name;
┌─name─┐
│ org2 │
└──────┘

注意:ClickHouse字典表除了支持将MySQL、ClickHouse表作为数据来源,还可以从MongoDB中读取数据。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。