ClickHouse SQL 语法基础极简教程 + bitmap 位图数据类型的使用实例
Posted 东海陈光剑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ClickHouse SQL 语法基础极简教程 + bitmap 位图数据类型的使用实例相关的知识,希望对你有一定的参考价值。
ClickHouse SQL 语法基础极简教程 + bitmap 位图数据类型的使用实例
查看所有数据库
SELECT *
FROM system.databases;
创建数据库
create database circle_db engine=Ordinary comment 'circle_db';
建表:分区键 partition by、主键索引 order by
create table circle_db.bitmap_circle
(
row_key String default -1,
field_value_string String default -1,
field_value_long Int64 default -1,
field_value_double Float64 default -1,
object_id_map AggregateFunction(groupBitmap, UInt64),
p_date DateTime default now(),
table_code String default -1,
field_code String default -1
)
engine = AggregatingMergeTree()
partition by (p_date, table_code, field_code)
order by (row_key, field_value_string, field_value_long, field_value_double)
SETTINGS index_granularity = 128;
-- 由于标签的行数不会太多,将索引粒度调整适量大小(默认8192)
创建 base_user 表结构
create table if not exists circle_db.base_user
(
id UInt64,
name String,
country String,
city String,
tag UInt32,
create_time DateTime
) engine = MergeTree
partition by toYYYYMM(create_time)
order by id
;
插入用户样例数据
insert into circle_db.base_user
values (1, 'Name1', '中国', '重庆', 10001, now()),
(2, 'Name2', '中国', '重庆', 10002, now()),
(3, 'Name3', '中国', '重庆', 10003, now()),
(4, 'Name4', '中国', '重庆', 10004, now()),
(5, 'Name5', '中国', '重庆', 10005, now()),
(6, 'Name6', '中国', '重庆', 10006, now()),
(7, 'Name7', '中国', '重庆', 10007, now()),
(8, 'Name8', '中国', '重庆', 10008, now()),
(9, 'Name9', '中国', '重庆', 10009, now()),
(10, 'Name10', '中国', '重庆', 10010, now()),
(11, 'Name11', '中国', '重庆', 10011, now()),
(12, 'Name12', '中国', '重庆', 10012, now()),
(13, 'Name13', '中国', '重庆', 10013, now()),
(14, 'Name14', '中国', '重庆', 10014, now()),
(15, 'Name15', '中国', '重庆', 10015, now()),
(16, 'Name16', '中国', '重庆', 10016, now()),
(17, 'Name17', '中国', '重庆', 10017, now()),
(18, 'Name18', '中国', '重庆', 10018, now()),
(19, 'Name19', '中国', '重庆', 10019, now()),
(20, 'Name20', '中国', '重庆', 10020, now()),
(21, 'Name21', '中国', '重庆', 10021, now()),
(22, 'Name22', '中国', '重庆', 10022, now()),
(23, 'Name23', '中国', '重庆', 10023, now()),
(24, 'Name24', '中国', '重庆', 10024, now()),
(25, 'Name25', '中国', '重庆', 10025, now()),
(26, 'Name26', '中国', '重庆', 10026, now()),
(27, 'Name27', '中国', '重庆', 10027, now()),
(28, 'Name28', '中国', '重庆', 10028, now()),
(29, 'Name29', '中国', '重庆', 10029, now()),
(30, 'Name30', '中国', '重庆', 10030, now()),
(31, 'Name31', '中国', '重庆', 10031, now()),
(32, 'Name32', '中国', '重庆', 10032, now()),
(33, 'Name33', '中国', '重庆', 10033, now()),
(34, 'Name34', '中国', '重庆', 10034, now()),
(35, 'Name35', '中国', '重庆', 10035, now()),
(36, 'Name36', '中国', '重庆', 10036, now()),
(37, 'Name37', '中国', '重庆', 10037, now()),
(38, 'Name38', '中国', '重庆', 10038, now()),
(39, 'Name39', '中国', '重庆', 10039, now()),
(40, 'Name40', '中国', '重庆', 10040, now()),
(41, 'Name41', '中国', '重庆', 10041, now()),
(42, 'Name42', '中国', '重庆', 10042, now()),
(43, 'Name43', '中国', '重庆', 10043, now()),
(44, 'Name44', '中国', '重庆', 10044, now()),
(45, 'Name45', '中国', '重庆', 10045, now()),
(46, 'Name46', '中国', '重庆', 10046, now()),
(47, 'Name47', '中国', '重庆', 10047, now()),
(48, 'Name48', '中国', '重庆', 10048, now()),
(49, 'Name49', '中国', '重庆', 10049, now()),
(50, 'Name50', '中国', '重庆', 10050, now()),
(51, 'Name51', '中国', '重庆', 10051, now()),
(52, 'Name52', '中国', '重庆', 10052, now()),
(53, 'Name53', '中国', '重庆', 10053, now()),
(54, 'Name54', '中国', '重庆', 10054, now()),
(55, 'Name55', '中国', '重庆', 10055, now()),
(56, 'Name56', '中国', '重庆', 10056, now()),
(57, 'Name57', '中国', '重庆', 10057, now()),
(58, 'Name58', '中国', '重庆', 10058, now()),
(59, 'Name59', '中国', '重庆', 10059, now()),
(60, 'Name60', '中国', '重庆', 10060, now()),
(61, 'Name61', '中国', '重庆', 10061, now()),
(62, 'Name62', '中国', '重庆', 10062, now()),
(63, 'Name63', '中国', '重庆', 10063, now()),
(64, 'Name64', '中国', '重庆', 10064, now()),
(65, 'Name65', '中国', '重庆', 10065, now()),
(66, 'Name66', '中国', '重庆', 10066, now()),
(67, 'Name67', '中国', '重庆', 10067, now()),
(68, 'Name68', '中国', '重庆', 10068, now()),
(69, 'Name69', '中国', '重庆', 10069, now()),
(70, 'Name70', '中国', '重庆', 10070, now()),
(71, 'Name71', '中国', '重庆', 10071, now()),
(72, 'Name72', '中国', '重庆', 10072, now()),
(73, 'Name73', '中国', '重庆', 10073, now()),
(74, 'Name74', '中国', '重庆', 10074, now()),
(75, 'Name75', '中国', '重庆', 10075, now()),
(76, 'Name76', '中国', '重庆', 10076, now()),
(77, 'Name77', '中国', '重庆', 10077, now()),
(78, 'Name78', '中国', '重庆', 10078, now()),
(79, 'Name79', '中国', '重庆', 10079, now()),
(80, 'Name80', '中国', '重庆', 10080, now()),
(81, 'Name81', '中国', '重庆', 10081, now()),
(82, 'Name82', '中国', '重庆', 10082, now()),
(83, 'Name83', '中国', '重庆', 10083, now()),
(84, 'Name84', '中国', '重庆', 10084, now()),
(85, 'Name85', '中国', '重庆', 10085, now()),
(86, 'Name86', '中国', '重庆', 10086, now()),
(87, 'Name87', '中国', '重庆', 10087, now()),
(88, 'Name88', '中国', '重庆', 10088, now()),
(89, 'Name89', '中国', '重庆', 10089, now()),
(90, 'Name90', '中国', '重庆', 10090, now()),
(91, 'Name91', '中国', '重庆', 10091, now()),
(92, 'Name92', '中国', '重庆', 10092, now()),
(93, 'Name93', '中国', '重庆', 10093, now()),
(94, 'Name94', '中国', '重庆', 10094, now()),
(95, 'Name95', '中国', '重庆', 10095, now()),
(96, 'Name96', '中国', '重庆', 10096, now()),
(97, 'Name97', '中国', '重庆', 10097, now()),
(98, 'Name98', '中国', '重庆', 10098, now()),
(99, 'Name99', '中国', '重庆', 10099, now()),
(100, 'Name100', '中国', '重庆', 10100, now()),
(101, 'Name101', '中国', '重庆', 10101, now()),
(102, 'Name102', '中国', '重庆', 10102, now()),
(103, 'Name103', '中国', '重庆', 10103, now()),
(104, 'Name104', '中国', '重庆', 10104, now()),
(105, 'Name105', '中国', '重庆', 10105, now()),
(106, 'Name106', '中国', '重庆', 10106, now()),
(107, 'Name107', '中国', '重庆', 10107, now()),
(108, 'Name108', '中国', '重庆', 10108, now()),
(109, 'Name109', '中国', '重庆', 10109, now()),
(110, 'Name110', '中国', '重庆', 10110, now()),
(111, 'Name111', '中国', '重庆', 10111, now()),
(112, 'Name112', '中国', '重庆', 10112, now()),
(113, 'Name113', '中国', '重庆', 10113, now()),
(114, 'Name114', '中国', '重庆', 10114, now()),
(115, 'Name115', '中国', '重庆', 10115, now()),
(116, 'Name116', '中国', '重庆', 10116, now()),
(117, 'Name117', '中国', '重庆', 10117, now()),
(118, 'Name118', '中国', '重庆', 10118, now()),
(119, 'Name119', '中国', '重庆', 10119, now()),
(120, 'Name120', '中国', '重庆', 10120, now()),
(121, 'Name121', '中国', '重庆', 10121, now()),
(122, 'Name122', '中国', '重庆', 10122, now()),
(123, 'Name123', '中国', '重庆', 10123, now()),
(124, 'Name124', '中国', '重庆', 10124, now()),
(125, 'Name125', '中国', '重庆', 10125, now()),
(126, 'Name126', '中国', '重庆', 10126, now()),
(127, 'Name127', '中国', '重庆', 10127, now()),
(128, 'Name128', '中国', '重庆', 10128, now()),
(129, 'Name129', '中国', '重庆', 10129, now()),
(130, 'Name130', '中国', '重庆', 10130, now()),
(131, 'Name131', '中国', '重庆', 10131, now()),
(132, 'Name132', '中国', '重庆', 10132, now()),
(133, 'Name133', '中国', '重庆', 10133, now()),
(134, 'Name134', '中国', '重庆', 10134, now()),
(135, 'Name135', '中国', '重庆', 10135, now()),
(136, 'Name136', '中国', '重庆', 10136, now()),
(137, 'Name137', '中国', '重庆', 10137, now()),
(138, 'Name138', '中国', '重庆', 10138, now()),
(139, 'Name139', '中国', '重庆', 10139, now()),
(140, 'Name140', '中国', '重庆', 10140, now()),
(141, 'Name141', '中国', '重庆', 10141, now()),
(142, 'Name142', '中国', '重庆', 10142, now()),
(143, 'Name143', '中国', '重庆', 10143, now()),
(144, 'Name144', '中国', '重庆', 10144, now()),
(145, 'Name145', '中国', '重庆', 10145, now()),
(146, 'Name146', '中国', '重庆', 10146, now()),
(147, 'Name147', '中国', '重庆', 10147, now()),
(148, 'Name148', '中国', '重庆', 10148, now()),
(149, 'Name149', '中国', '重庆', 10149, now()),
(150, 'Name150', '中国', '重庆', 10150, now()),
(151, 'Name151', '中国', '重庆', 10151, now()),
(152, 'Name152', '中国', '重庆', 10152, now()),
(153, 'Name153', '中国', '重庆', 10153, now()),
(154, 'Name154', '中国', '重庆', 10154, now()),
(155, 'Name155', '中国', '重庆', 10155, now()),
(156, 'Name156', '中国', '重庆', 10156, now()),
(157, 'Name157', '中国', '重庆', 10157, now()),
(158, 'Name158', '中国', '重庆', 10158, now()),
(159, 'Name159', '中国', '重庆', 10159, now()),
(160, 'Name160', '中国', '重庆', 10160, now()),
(161, 'Name161', '中国', '重庆', 10161, now()),
(162, 'Name162', '中国', '重庆', 10162, now()),
(163, 'Name163', '中国', '重庆', 10163, now()),
(164, 'Name164', '中国', '重庆', 10164, now()),
(165, 'Name165', '中国', '重庆', 10165, now()),
(166, 'Name166', '中国', '重庆', 10166, now()),
(167, 'Name167', '中国', '重庆', 10167, now()),
(168, 'Name168', '中国', '重庆', 10168, now()),
(169, 'Name169', '中国', '重庆', 10169, now()),
(170, 'Name170', '中国', '重庆', 10170, now()),
(171, 'Name171', '中国', '重庆', 10171, now()),
(172, 'Name172', '中国', '重庆', 10172, now()),
(173, 'Name173', '中国', '重庆', 10173, now()),
(174, 'Name174', '中国', '重庆', 10174, now()),
(175, 'Name175', '中国', '重庆', 10175, now()),
(176, 'Name176', '中国', '重庆', 10176, now()),
(177, 'Name177', '中国', '重庆', 10177, now()),
(178, 'Name178', '中国', '重庆', 10178, now()),
(179, 'Name179', '中国', '重庆', 10179, now()),
(180, 'Name180', '中国', '重庆', 10180, now()),
(181, 'Name181', '中国', '重庆', 10181, now()),
(182, 'Name182', '中国', '重庆', 10182, now()),
(183, 'Name183', '中国', '重庆', 10183, now()),
(184, 'Name184', '中国', '重庆', 10184, now()),
(185, 'Name185', '中国', '重庆', 10185, now()),
(186, 'Name186', '中国', '重庆', 10186, now()),
(187, 'Name187', '中国', '重庆', 10187, now()),
(188, 'Name188', '中国', '重庆', 10188, now()),
(189, 'Name189', '中国', '重庆', 10189, now()),
(190, 'Name190', '中国', '重庆', 10190, now()),
(191, 'Name191', '中国', '重庆', 10191, now()),
(192, 'Name192', '中国', '重庆', 10192, now()),
(193, 'Name193', '中国', '重庆', 10193, now()),
(194, 'Name194', '中国', '重庆', 10194, now()),
(195, 'Name195', '中国', '重庆', 10195, now()),
(196, 'Name196', '中国', '重庆', 10196, now()),
(197, 'Name197', '中国', '重庆', 10197, now()),
(198, 'Name198', '中国', '重庆', 10198, now()),
(199, 'Name199', '中国', '重庆', 10199, now()),
(200, 'Name200', '中国', '重庆', 10200, now()),
(201, 'Name201', '中国', '重庆', 10201, now()),
(202, 'Name202', '中国', '重庆', 10202, now()),
(203, 'Name203', '中国', '重庆', 10203, now()),
(204, 'Name204', '中国', '重庆', 10204, now()),
(205, 'Name205', '中国', '重庆', 10205, now()),
(206, 'Name206', '中国', '重庆', 10206, now()),
(207, 'Name207', '中国', '重庆', 10207, now()),
(208, 'Name208', '中国', '重庆', 10208, now()),
(209, 'Name209', '中国', '重庆', 10209, now()),
(210, 'Name210', '中国', '重庆', 10210, now()),
(211, 'Name211', '中国', '重庆', 10211, now()),
(212, 'Name212', '中国', '重庆', 10212, now()),
(213, 'Name213', '中国', '重庆', 10213, now()),
(214, 'Name214', '中国', '重庆', 10214, now()),
(215, 'Name215', '中国', '重庆', 10215, now()),
(216, 'Name216', '中国', '重庆', 10216, now()),
(217, 'Name217', '中国', '重庆', 10217, now()),
(218, 'Name218', '中国', '重庆', 10218, now()),
(219, 'Name219', '中国', '重庆', 10219, now()),
(220, 'Name220', '中国', '重庆', 10220, now()),
(221, 'Name221', '中国', '重庆', 10221, now()),
(222, 'Name222', '中国', '重庆', 10222, now()),
(223, 'Name223', '中国', '重庆', 10223, now()),
(224, 'Name224', '中国', '重庆', 10224, now()),
(225, 'Name225', '中国', '重庆', 10225, now()),
(226, 'Name226', '中国', '重庆', 10226, now()),
(227, 'Name227', '中国', '重庆', 10227, now()),
(228, 'Name228', '中国', '重庆', 10228, now()),
(229, 'Name229', '中国', '重庆', 10229, now()),
(230, 'Name230', '中国', '重庆', 10230, now()),
(231, 'Name231', '中国', '重庆', 10231, now()),
(232, 'Name232', '中国', '重庆', 10232, now()),
(233, 'Name233', '中国', '重庆', 10233, now()),
(234, 'Name234', '中国', '重庆', 10234, now()),
(235, 'Name235', '中国', '重庆', 10235, now()),
(236, 'Name236', '中国', '重庆', 10236, now()),
(237, 'Name237', '中国', '重庆', 10237, now()),
(238, 'Name238', '中国', '重庆', 10238, now()),
(239, 'Name239', '中国', '重庆', 10239, now()),
(240, 'Name240', '中国', '重庆', 10240, now()),
(241, 'Name241', '中国', '重庆', 10241, now()),
(242, 'Name242', '中国', '重庆', 10242, now()),
(243, 'Name243', '中国', '重庆', 10243, now()),
(244, 'Name244', '中国', '重庆', 10244, now()),
(245, 'Name245', '中国', '重庆', 10245, now()),
(246, 'Name246', '中国', '重庆', 10246, now()),
(247, 'Name247', '中国', '重庆', 10247, now()),
(248, 'Name248', '中国', '重庆', 10248, now()),
(249, 'Name249', '中国', '重庆', 10249, now()),
(250, 'Name250', '中国', '重庆', 10250, now()),
(251, 'Name251', '中国', '重庆', 10251, now()),
(252, 'Name252', '中国', '重庆', 10252, now()),
(253, 'Name253', '中国', '重庆', 10253, now()),
(254, 'Name254', '中国', '重庆', 10254, now()),
(255, 'Name255', '中国', '重庆', 10255, now()),
(256, 'Name256', '中国', '重庆', 10256, now()),
(257, 'Name257', '中国', '重庆', 10257, now()),
(258, 'Name258', '中国', '重庆', 10258, now()),
(259, 'Name259', '中国', '重庆', 10259, now()),
(260, 'Name260', '中国', '重庆', 10260, now()),
(261, 'Name261', '中国', '重庆', 10261, now()),
(262, 'Name262', '中国', '重庆', 10262, now()),
(263, 'Name263', '中国', '重庆', 10263, now()),
(264, 'Name264', '中国', '重庆', 10264, now()),
(265, 'Name265', '中国', '重庆', 10265, now()),
(266, 'Name266', '中国', '重庆', 10266, now()),
(267, 'Name267', '中国', '重庆', 10267, now()),
(268, 'Name268', '中国', '重庆', 10268, now()),
(269, 'Name269', '中国', '重庆', 10269, now()),
(270, 'Name270', '中国', '重庆', 10270, now()),
(271, 'Name271', '中国', '重庆', 10271, now()),
(272, 'Name272', '中国', '重庆', 10272, now()),
(273, 'Name273', '中国', '重庆', 10273, now()),
(274, 'Name274', '中国', '重庆', 10274, now()),
(275, 'Name275', '中国', '重庆', 10275, now()),
(276, 'Name276', '中国', '重庆', 10276, now()),
(277, 'Name277', '中国', '重庆', 10277, now()),
(278, 'Name278', '中国', '重庆', 10278, now()),
(279, 'Name279', '中国', '重庆', 10279, now()),
(280, 'Name280', '中国', '重庆', 10280, now()),
(281, 'Name281', '中国', '重庆', 10281, now()),
(282, 'Name282', '中国', '重庆', 10282, now()),
(283, 'Name283', '中国', '重庆', 10283, now()),
(284, 'Name284', '中国', '重庆', 10284, now()),
(285, 'Name285', '中国', '重庆', 10285, now()),
(286, 'Name286', '中国', '重庆', 10286, now()),
(287, 'Name287', '中国', '重庆', 10287, now()),
(288, 'Name288', '中国', '重庆', 10288, now()),
(289, 'Name289', '中国', '重庆', 10289, now()),
(290, 'Name290', '中国', '重庆', 10290, now()),
(291, 'Name291', '中国', '重庆', 10291, now()),
(292, 'Name292', '中国', '重庆', 10292, now()),
(293, 'Name293', '中国', '重庆', 10293, now()),
(294, 'Name294', '中国', '重庆', 10294, now()),
(295, 'Name295', '中国', '重庆', 10295, now()),
(296, 'Name296', '中国', '重庆', 10296, now()),
(297, 'Name297', '中国', '重庆', 10297, now()),
(298, 'Name298', '中国', '重庆', 10298, now()),
(299, 'Name299', '中国', '重庆', 10299, now()),
(300, 'Name300', '中国', '重庆', 10300, now()),
(301, 'Name301', '中国', '重庆', 10301, now()),
(302, 'Name302', '中国', '重庆', 10302, now()),
(303, 'Name303', '中国', '重庆', 10303, now()),
(304, 'Name304', '中国', '重庆', 10304, now()),
(305, 'Name305', '中国', '重庆', 10305, now()),
(306, 'Name306', '中国', '重庆', 10306, now()),
(307, 'Name307', '中国', '重庆', 10307, now()),
(308, 'Name308', '中国', '重庆', 10308, now()),
(309, 'Name309', '中国', '重庆', 10309, now()),
(310, 'Name310', '中国', '重庆', 10310, now()),
(311, 'Name311', '中国', '重庆', 10311, now()),
(312, 'Name312', '中国', '重庆', 10312, now()),
(313, 'Name313', '中国', '重庆', 10313, now()),
(314, 'Name314', '中国', '重庆', 10314, now()),
(315, 'Name315', '中国', '重庆', 10315, now()),
(316, 'Name316', '中国', '重庆', 10316, now()),
(317, 'Name317', '中国', '重庆', 10317, now()),
(318, 'Name318', '中国', '重庆', 10318, now()),
(319, 'Name319', '中国', '重庆', 10319, now()),
(320, 'Name320', '中国', '重庆', 10320, now()),
(321, 'Name321', '中国', '重庆', 10321, now()),
(322, 'Name322', '中国', '重庆', 10322, now()),
(323, 'Name323', '中国', '重庆', 10323, now()),
(324, 'Name324', '中国', '重庆', 10324, now()),
(325, 'Name325', '中国', '重庆', 10325, now()),
(326, 'Name326', '中国', '重庆', 10326, now()),
(327, 'Name327', '中国', '重庆', 10327, now()),
(328, 'Name328', '中国', '重庆', 10328, now()),
(329, 'Name329', '中国', '重庆', 10329, now()),
(330, 'Name330', '中国', '重庆', 10330, now()),
(331, 'Name331', '中国', '重庆', 10331, now()),
(332, 'Name332', '中国', '重庆', 10332, now()),
(333, 'Name333', '中国', '重庆', 10333, now()),
(334, 'Name334', '中国', '重庆', 10334, now()),
(335, 'Name335', '中国', '重庆', 10335, now()),
(336, 'Name336', '中国', '重庆', 10336, now()),
(337, 'Name337', '中国', '重庆', 10337, now()),
(338, 'Name338', '中国', '重庆', 10338, now()),
(339, 'Name339', '中国', '重庆', 10339, now()),
(340, 'Name340', '中国', '重庆', 10340, now()),
(341, 'Name341', '中国', '重庆', 10341, now()),
(342, 'Name342', '中国', '重庆', 10342, now()),
(343, 'Name343', '中国', '重庆', 10343, now()),
(344, 'Name344', '中国', '重庆', 10344, now()),
(345, 'Name345', '中国', '重庆', 10345, now()),
(346, 'Name346', '中国', '重庆', 10346, now()),
(347, 'Name347', '中国', '重庆', 10347, now()),
(348, 'Name348', '中国', '重庆', 10348, now()),
(349, 'Name349', '中国', '重庆', 10349, now()),
(350, 'Name350', '中国', '重庆', 10350, now()),
(351, 'Name351', '中国', '重庆', 10351, now()),
(352, 'Name352', '中国', '重庆', 10352, now()),
(353, 'Name353', '中国', '重庆', 10353, now()),
(354, 'Name354', '中国', '重庆', 10354, now()),
(355, 'Name355', '中国', '重庆', 10355, now()),
(356, 'Name356', '中国', '重庆', 10356, now()),
(357, 'Name357', '中国', '重庆', 10357, now()),
(358, 'Name358', '中国', '重庆', 10358, now()),
(359, 'Name359', '中国', '重庆', 10359, now()),
(360, 'Name360', '中国', '重庆', 10360, now()),
(361, 'Name361', '中国', '重庆', 10361, now()),
(362, 'Name362', '中国', '重庆', 10362, now()),
(363, 'Name363', '中国', '重庆', 10363, now()),
(364, 'Name364', '中国', '重庆', 10364, now()),
(365, 'Name365', '中国', '重庆', 10365, now()),
(366, 'Name366', '中国', '重庆', 10366, now()),
(367, 'Name367', '中国', '重庆', 10367, now()),
(368, 'Name368', '中国', '重庆', 10368, now()),
(369, 'Name369', '中国', '重庆', 10369, now()),
(370, 'Name370', '中国', '重庆', 10370, now()),
(371, 'Name371', '中国', '重庆', 10371, now()),
(372, 'Name372', '中国', '重庆', 10372, now()),
(373, 'Name373', '中国', '重庆', 10373, now()),
(374, 'Name374', '中国', '重庆', 10374, now()),
(375, 'Name375', '中国', '重庆', 10375, now()),
(376, 'Name376', '中国', '重庆', 10376, now()),
(377, 'Name377', '中国', '重庆', 10377, now()),
(378, 'Name378', '中国', '重庆', 10378, now()),
(379, 'Name379', '中国', '重庆', 10379, now()),
(380, 'Name380', '中国', '重庆', 10380, now()),
(381, 'Name381', '中国', '重庆', 10381, now()),
(382, 'Name382', '中国', '重庆', 10382, now()),
(383, 'Name383', '中国', '重庆', 10383, now()),
(384, 'Name384', '中国', '重庆', 10384, now()),
(385, 'Name385', '中国', '重庆', 10385, now()),
(386, 'Name386', '中国', '重庆', 10386, now()),
(387, 'Name387', '中国', '重庆', 10387, now()),
(388, 'Name388', '中国', '重庆', 10388, now()),
(389, 'Name389', '中国', '重庆', 10389, now()),
(390, 'Name390', '中国', '重庆', 10390, now()),
(391, 'Name391', '中国', '重庆', 10391, now()),
(392, 'Name392', '中国', '重庆', 10392, now()),
(393, 'Name393', '中国', '重庆', 10393, now()),
(394, 'Name394', '中国', '重庆', 10394, now()),
(395, 'Name395', '中国', '重庆', 10395, now()),
(396, 'Name396', '中国', '重庆', 10396, now()),
(397, 'Name397', '中国', '重庆', 10397, now()),
(398, 'Name398', '中国', '重庆', 10398, now()),
(399, 'Name399', '中国', '重庆', 10399, now()),
(400, 'Name400', '中国', '重庆', 10400, now()),
(401, 'Name401', '中国', '重庆', 10401, now()),
(402, 'Name402', '中国', '重庆', 10402, now()),
(403, 'Name403', '中国', '重庆', 10403, now()),
(404, 'Name404', '中国', '重庆', 10404, now()),
(405, 'Name405', '中国', '重庆', 10405, now()),
(406, 'Name406', '中国', '重庆', 10406, now()),
(407, 'Name407', '中国', '重庆', 10407, now()),
(408, 'Name408', '中国', '重庆', 10408, now()),
(409, 'Name409', '中国', '重庆', 10409, now()),
(410, 'Name410', '中国', '重庆', 10410, now()),
(411, 'Name411', '中国', '重庆', 10411, now()),
(412, 'Name412', '中国', '重庆', 10412, now()),
(413, 'Name413', '中国', '重庆', 10413, now()),
(414, 'Name414', '中国', '重庆', 10414, now()),
(415, 'Name415', '中国', '重庆', 10415, now()),
(416, 'Name416', '中国', '重庆', 10416, now()),
(417, 'Name417', '中国', '重庆', 10417, now()),
(418, 'Name418', '中国', '重庆', 10418, now()),
(419, 'Name419', '中国', '重庆', 10419, now()),
(420, 'Name420', '中国', '重庆', 10420, now()),
(421, 'Name421', '中国', '重庆', 10421, now()),
(422, 'Name422', '中国', '重庆', 10422, now()),
(423, 'Name423', '中国', '重庆', 10423, now()),
(424, 'Name424', '中国', '重庆', 10424, now()),
(425, 'Name425', '中国', '重庆', 10425, now()),
(426, 'Name426', '中国', '重庆', 10426, now()),
(427, 'Name427', '中国', '重庆', 10427, now()),
(428, 'Name428', '中国', '重庆', 10428, now()),
(429, 'Name429', '中国', '重庆', 10429, now()),
(430, 'Name430', '中国', '重庆', 10430, now()),
(431, 'Name431', '中国', '重庆', 10431, now()),
(432, 'Name432', '中国', '重庆', 10432, now()),
(433, 'Name433', '中国', '重庆', 10433, now()),
(434, 'Name434', '中国', '重庆', 10434, now()),
(435, 'Name435', '中国', '重庆', 10435, now()),
(436, 'Name436', '中国', '重庆', 10436, now()),
(437, 'Name437', '中国', '重庆', 10437, now()),
(438, 'Name438', '中国', '重庆', 10438, now()),
(439, 'Name439', '中国', '重庆', 10439, now()),
(440, 'Name440', '中国', '重庆', 10440, now()),
(441, 'Name441', '中国', '重庆', 10441, now()),
(442, 'Name442', '中国', '重庆', 10442, now()),
(443, 'Name443', '中国', '重庆', 10443, now()),
(444, 'Name444', '中国', '重庆', 10444, now()),
(445, 'Name445', '中国', '重庆', 10445, now()),
(446, 'Name446', '中国', '重庆', 10446, now()),
(447, 'Name447', '中国', '重庆', 10447, now()),
(448, 'Name448', '中国', '重庆', 10448, now()),
(449, 'Name449', '中国', '重庆', 10449, now()),
(450, 'Name450', '中国', '重庆', 10450, now()),
(451, 'Name451', '中国', '重庆', 10451, now()),
(452, 'Name452', '中国', '重庆', 10452, now()),
(453, 'Name453', '中国', '重庆', 10453, now()),
(454, 'Name454', '中国', '重庆', 10454, now()),
(455, 'Name455', '中国', '重庆', 10455, now()),
(456, 'Name456', '中国', '重庆', 10456, now()),
(457, 'Name457', '中国', '重庆', 10457, now()),
(458, 'Name458', '中国', '重庆', 10458, now()),
(459, 'Name459', '中国', '重庆', 10459, now()),
(460, 'Name460', '中国', '重庆', 10460, now()),
(461, 'Name461', '中国', '重庆', 10461, now()),
(462, 'Name462', '中国', '重庆', 10462, now()),
(463, 'Name463', '中国', '重庆', 10463, now()),
(464, 'Name464', '中国', '重庆', 10464, now()),
(465, 'Name465', '中国', '重庆', 10465, now()),
(466, 'Name466', '中国', '重庆', 10466, now()),
(467, 'Name467', '中国', '重庆', 10467, now()),
(468, 'Name468', '中国', '重庆', 10468, now()),
(469, 'Name469', '中国', '重庆', 10469, now()),
(470, 'Name470', '中国', '重庆', 10470, now()),
(471, 'Name471', '中国', '重庆', 10471, now()),
(472, 'Name472', '中国', '重庆', 10472, now()),
(473, 'Name473', '中国', '重庆', 10473, now()),
(474, 'Name474', '中国', '重庆', 10474, now()),
(475, 'Name475', '中国', '重庆', 10475, now()),
(476, 'Name476', '中国', '重庆', 10476, now()),
(477, 'Name477', '中国', '重庆', 10477, now()),
(478, 'Name478', '中国', '重庆', 10478, now()),
(479, 'Name479', '中国', '重庆', 10479, now()),
(480, 'Name480', '中国', '重庆', 10480, now()),
(481, 'Name481', '中国', '重庆', 10481, now()),
(482, 'Name482', '中国', '重庆', 10482, now()),
(483, 'Name483', '中国', '重庆', 10483, now()),
(484, 'Name484', '中国', '重庆', 10484, now()),
(485, 'Name485', '中国', '重庆', 10485, now()),
(486, 'Name486', '中国', '重庆', 10486, now()),
(487, 'Name487', '中国', '重庆', 10487, now()),
(488, 'Name488', '中国', '重庆', 10488, now()),
(489, 'Name489', '中国', '重庆', 10489, now()),
(490, 'Name490', '中国', '重庆', 10490, now()),
(491, 'Name491', '中国', '重庆', 10491, now()),
(492, 'Name492', '中国', '重庆', 10492, now()),
(493, 'Name493', '中国', '重庆', 10493, now()),
(494, 'Name494', '中国', '重庆', 10494, now()),
(495, 'Name495', '中国', '重庆', 10495, now()),
(496, 'Name496', '中国', '重庆', 10496, now()),
(497, 'Name497', '中国', '重庆', 10497, now()),
(498, 'Name498', '中国', '重庆', 10498, now()),
(499, 'Name499', '中国', '重庆', 10499, now()),
(500, 'Name500', '中国', '重庆', 10500, now()),
(501, 'Name501', '中国', '重庆', 10501, now()),
(502, 'Name502', '中国', '重庆', 10502, now()),
(503, 'Name503', '中国', '重庆', 10503, now()),
(504, 'Name504', '中国', '重庆', 10504, now()),
(505, 'Name505', '中国', '重庆', 10505, now()),
(506, 'Name506', '中国', '重庆', 10506, now()),
(507, 'Name507', '中国', '重庆', 10507, now()),
(508, 'Name508', '中国', '重庆', 10508, now()),
(509, 'Name509', '中国', '重庆', 10509, now()),
(510, 'Name510', '中国', '重庆', 10510, now()),
(511, 'Name511', '中国', '重庆', 10511, now()),
(512, 'Name512', '中国', '重庆', 10512, now()),
(513, 'Name513', '中国', '重庆', 10513, now()),
(514, 'Name514', '中国', '重庆', 10514, now()),
(515, 'Name515', '中国', '重庆', 10515, now()),
(516, 'Name516', '中国', '重庆', 10516, now()),
(517, 'Name517', '中国', '重庆', 10517, now()),
(518, 'Name518', '中国', '重庆', 10518, now()),
(519, 'Name519', '中国', '重庆', 10519, now()),
(520, 'Name520', '中国', '重庆', 10520, now()),
(521, 'Name521', '中国', '重庆', 10521, now()),
(522, 'Name522', '中国', '重庆', 10522, now()),
(523, 'Name523', '中国', '重庆', 10523, now()),
(524, 'Name524', '中国', '重庆', 10524, now()),
(525, 'Name525', '中国', '重庆', 10525, now()),
(526, 'Name526', '中国', '重庆', 10526, now()),
(527, 'Name527', '中国', '重庆', 10527, now()),
(528, 'Name528', '中国', '重庆', 10528, now()),
(529, 'Name529', '中国', '重庆', 10529, now()),
(530, 'Name530', '中国', '重庆', 10530, now()),
(531, 'Name531', '中国', '重庆', 10531, now()),
(532, 'Name532', '中国', '重庆', 10532, now()),
(533, 'Name533', '中国', '重庆', 10533, now()),
(534, 'Name534', '中国', '重庆', 10534, now()),
(535, 'Name535', '中国', '重庆', 10535, now()),
(536, 'Name536', '中国', '重庆', 10536, now()),
(537, 'Name537', '中国', '重庆', 10537, now()),
(538, 'Name538', '中国', '重庆', 10538, now()),
(539, 'Name539', '中国', '重庆', 10539, now()),
(540, 'Name540', '中国', '重庆', 10540, now())
;
insert into circle_db.base_user
values (541, 'Name541', '中国', '重庆', 10001, now());
导入数据: groupBitmapState(id) as object_id_map, 从聚合函数groupBitmapState构造
AggregateFunction(groupBitmap, UInt64) 位图字段值
insert into circle_db.bitmap_circle
select tag as row_key,
'-1' as field_value_string,
tag as field_value_long,
'-1' as field_value_double,
groupBitmapState(id) as object_id_map,
now() as p_date,
'user_basic' as table_code,
'city' as field_code
from circle_db.base_user
group by tag
;
查询标签数据: bitmapToArray(groupBitmapMergeState(object_id_map)
select row_key,
table_code,
field_code,
field_value_long,
bitmapToArray(groupBitmapMergeState(object_id_map))
from circle_db.bitmap_circle
group by row_key, table_code, field_code, field_value_long;
查询表
select *
from circle_db.bitmap_circle;
select *
from circle_db.base_user;
常用位图函数
1.无符号整数构建位图对象
select bitmapBuild([1,2,3,4,5]) as res;
2.将位图对象转化为整数数组
select bitmapToArray(bitmapBuild([1,2,3,4,5])) as res;
/*
┌─res─────────┐
│ [1,2,3,4,5] │
└─────────────┘
*/
3.bitmapSubsetInRange 将位图指定范围转化为另外一个位图,相当于截取数据,左闭右开
select bitmapToArray(
bitmapSubsetInRange(
bitmapBuild(
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,100,200,500]
),
toUInt32(10),
toUInt32(15)
)
) as res;
/*
┌─res──────────────┐
│ [10,11,12,13,14] │
└──────────────────┘
*/
4.bitmapSubsetLimit 将位图指定范围转化为另外一个位图,(位图函数,起始点,限制条数)
select bitmapToArray(bitmapSubsetLimit(bitmapBuild(
[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,100,200,500]),
toUInt32(10), toUInt32(15))) as res;
/*
┌─res────────────────────────────────────────────┐
│ [10,11,12,13,14,15,16,17,18,19,20,21,22,23,24] │
└────────────────────────────────────────────────┘
*/
5.bitmapContains 查看位图中是否包含指定元素:存在则返回1,不存在返回0
select bitmapContains(bitmapBuild([1,2,3,4,5]), toUInt32(9)) as res;
6.bitmapHasAny 比较两个位图是否包含相同元素: 如果有相同的返回1,没有则返回0
select bitmapHasAny(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) as res;
7.bitmapHasAll 如果第一个位图包含第二个位图所有元素返回1,反之返回0
select bitmapHasAll(bitmapBuild([1,2,3]), bitmapBuild([3,4,5])) as res;
8.bitmapAnd 两个位图进行与操作,返回一个新位图对象 =》 取交集
select bitmapToArray(bitmapAnd(bitmapBuild([1,2,3,4,5,6]), bitmapBuild([3,4,5,6,7,8]))) as res;
/*
┌─res───────┐
│ [3,4,5,6] │
└───────────┘
*/
9.bitmapOr 两个位图进行或操作,返回一个新位图对象 =》 取并集
select bitmapToArray(bitmapOr(bitmapBuild([1,2,3,4,5,6]), bitmapBuild([3,4,5,6,7,8]))) as res;
/*
┌─res───────────────┐
│ [1,2,3,4,5,6,7,8] │
└───────────────────┘
*/
10.bitmapXor 两个位图进行异或操作,返回一个新位图对象 =》 去除两者重复值,其它值合并
select bitmapToArray(bitmapXor(bitmapBuild([1,2,3,4,5,6]), bitmapBuild([3,4,5,6,7,8]))) as res;
/*
┌─res───────┐
│ [1,2,7,8] │
└───────────┘
*/
11.bitmapAndnot 计算两个位图的差异,返回一个新的位图对象 => 第一个位图剔除第二个位图相同值后的数值结果
select bitmapToArray(bitmapAndnot(bitmapBuild([1,2,3,4,5,6]), bitmapBuild([3,4,5,6,7,8]))) as res;
/*
┌─res───┐
│ [1,2] │
└───────┘
*/
12.bitmapCardinality 返回UInt64类型的数值,表示位图对象元素的数量:下面数量为5
select bitmapCardinality(bitmapBuild([1,2,3,4,6])) as res;
13.bitmapMin 返回返回UInt64类型的数值,表示位图最小值:1
select bitmapMin(bitmapBuild([1,2,3,4,5,6,7,8])) as res;
14.bitmapMax 返回返回UInt64类型的数值,表示位图最大值:8
select bitmapMax(bitmapBuild([1,2,3,4,5,6,7,8])) as res;
15.bitmapAndCardinality 两个位图进行与操作,得到对应位图对象元素的数量:4
SELECT bitmapAndCardinality(bitmapBuild([1,2,3,4,5,6]), bitmapBuild([3,4,5,6,7,8])) AS res;
16.bitmapOrCardinality 两个位图进行或操作,得到对应位图对象元素的数量:8
SELECT bitmapOrCardinality(bitmapBuild([1,2,3,4,5,6]), bitmapBuild([3,4,5,6,7,8])) AS res;
17.bitmapXorCardinality 两个位图进行异或操作,得到对应位图对象元素的数量:4
SELECT bitmapXorCardinality(bitmapBuild([1,2,3,4,5,6,7]), bitmapBuild([3,4,5,6,7,8,9])) AS res;
18.bitmapAndnotCardinality 位图和非标准性, 计算两个位图的差异,返回结果位图的基数:2
SELECT bitmapAndnotCardinality(bitmapBuild([1,2,3,4,5,6,7]), bitmapBuild([3,4,5,6,7,8,9])) AS res;
19.聚合类函数的使用 groupBitmapAnd,groupBitmapOr,groupBitmapXor
-- 数据准备
CREATE TABLE circle_db.bitmap_column_expr_test
(
tag_id String,
z AggregateFunction(groupBitmap, UInt32)
)
ENGINE = MergeTree
ORDER BY tag_id;
INSERT INTO circle_db.bitmap_column_expr_test
VALUES ('tag1', bitmapBuild(cast([1,2,3,4,5,6,7,8,9,10] as Array(UInt32))));
INSERT INTO circle_db.bitmap_column_expr_test
VALUES ('tag2', bitmapBuild(cast([6,7,8,9,10,11,12,13,14,15] as Array(UInt32))));
INSERT INTO circle_db.bitmap_column_expr_test
VALUES ('tag3', bitmapBuild(cast([2,4,6,8,10,12] as Array(UInt32))));
INSERT INTO circle_db.bitmap_column_expr_test
VALUES ('tag4', bitmapBuild(cast([2,4,6,8,10,12,12,10] as Array(UInt32))));
-- 查询测试
SELECT groupBitmapAnd(z)
FROM circle_db.bitmap_column_expr_test
WHERE like(tag_id, 'tag%');
/* 原理是所有的bitmap对象取交,得到的数量,
┌─groupBitmapAnd(z)─┐
│ 3 │
└───────────────────┘
*/
SELECT bitmapToArray(groupBitmapAndState(z))
FROM circle_db.bitmap_column_expr_test
WHERE tag_id = 'tag4';
/* 对bitmap对象里面的数据进行去重操作,后转为array
┌─bitmapToArray(groupBitmapAndState(z))─┐
│ [2,4,6,8,10,12] │
└───────────────────────────────────────┘
*/
SELECT groupBitmapOr(z)
FROM circle_db.bitmap_column_expr_test
WHERE like(tag_id, 'tag%');
/* 所有匹配的bitmap对象取并集,去重的数量
┌─groupBitmapOr(z)─┐
│ 15 │
└──────────────────┘
*/
SELECT groupBitmapXor(z)
FROM circle_db.bitmap_column_expr_test
WHERE like(tag_id, 'tag%');
/* 去除两者重复值,其它值合并(每两个bitmap对象进行一次操作),得到最后的数量
┌─groupBitmapOr(z)─┐
│ 10 │
└──────────────────┘
*/
ClickHouse 快速开始
安装 ClickHouse
Mac OS
wget 'https://builds.clickhouse.com/master/macos/clickhouse'
chmod a+x ./clickhouse
./clickhouse
Ubuntu
sudo apt-get install apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv E0C56BD4
echo "deb https://repo.clickhouse.com/deb/stable/ main/" | sudo tee \\
/etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client
sudo service clickhouse-server start
clickhouse-client
参考:https://clickhouse.com/#quick-start
命令行参考
./clickhouse
Use one of the following commands:
clickhouse local [args]
clickhouse client [args]
clickhouse benchmark [args]
clickhouse server [args]
clickhouse extract-from-config [args]
clickhouse compressor [args]
clickhouse format [args]
clickhouse copier [args]
clickhouse obfuscator [args]
clickhouse git-import [args]
clickhouse keeper [args]
clickhouse keeper-converter [args]
clickhouse install [args]
clickhouse start [args]
clickhouse stop [args]
clickhouse status [args]
clickhouse restart [args]
clickhouse static-files-disk-uploader [args]
clickhouse hash-binary [args]
启动 ClickHouse Server
$./clickhouse server
Server 默认的端口号是: 8123
Application: Listening for http://127.0.0.1:8123
客户端连接 ClickHouse
bytedance$./clickhouse client
ClickHouse client version 21.12.1.8808 (official build).
Connecting to localhost:9000 as user default.
Connected to ClickHouse server version 21.12.1 revision 54450.
Quick tips for clickhouse-client Interactive mode:
clickhouse-client
clickhouse-client --host=... --port=... --user=... --password=...
Enable multiline queries:
clickhouse-client -m
clickhouse-client --multiline
Run queries in batch-mode:
clickhouse-client --query='SELECT 1'echo'SELECT 1'|clickhouse-clientclickhouse-client<<<'SELECT 1'
Insert data from a file in specified format:
clickhouse-client --query='INSERT INTO table VALUES'< data.txt
clickhouse-client --query='INSERT INTO table FORMAT TabSeparated'< data.tsv
创建数据库
ClickHouse支持的表引擎官:Ordinary/Dictionary/Memory/mysql/Lazy
创建数据库指定数据库引擎语法:
create database xxxx engine = 数据库引擎
示例:
1.创建一个默认引擎的 clickhouse 数据库:
create database mydb engine=Ordinary comment 'mydb';
默认引擎Ordinary, 如果不指定数据库引擎创建的就是 Ordinary 数据库.
2. 创建 clickhouse 数据库, 使用 Mysql 引擎:
create database mysqlDB engine=MySQL('xx:3306','database','username','password');
3. 创建 Lazy 引擎的数据库:
create database testlazy engine=Lazy(expiration_time_in_seconds);
上次访问之后 expiration_time_in_seconds 秒之前,表放内存.
该库引擎下只能创建 *Log表引擎
查询当前 server 实例所有的 databases:
SELECT * FROM system.databases;
Query id: 3783b56d-d088-47e4-981a-57864a7a8419
┌─name───────────────┬─engine───┬─data_path────┬─metadata_path─────────────────────────────────────────────────────────┬─uuid─────────────────────────────────┬─comment─┐
│ INFORMATION_SCHEMA │ Memory │ ./ │ │ 00000000-0000-0000-0000-000000000000 │ │
│ default │ Atomic │ ./store/ │ /Users/bytedance/soft/store/456/456e7573-40ea-42f8-856e-757340ea82f8/ │ 456e7573-40ea-42f8-856e-757340ea82f8 │ │
│ information_schema │ Memory │ ./ │ │ 00000000-0000-0000-0000-000000000000 │ │
│ mydb │ Ordinary │ ./data/mydb/ │ /Users/bytedance/soft/metadata/mydb/ │ 00000000-0000-0000-0000-000000000000 │ mydb │
│ system │ Atomic │ ./store/ │ /Users/bytedance/soft/store/1db/1dbe01d6-a33f-46ae-9dbe-01d6a33f56ae/ │ 1dbe01d6-a33f-46ae-9dbe-01d6a33f56ae │ │
└────────────────────┴──────────┴──────────────┴───────────────────────────────────────────────────────────────────────┴──────────────────────────────────────┴─────────┘
5 rows in set. Elapsed: 0.001 sec.
建表
create table test
(
dim_id String,
tag_code String,
tag_option_code String,
tag_option_value String,
object_ids Array(String),
p_date DateTime
)
engine =MergeTree
partition by p_date
order by (dim_id,tag_code,tag_option_code,p_date)
;
插入数据
INSERT INTO
mydb
.test
(dim_id
,tag_code
,tag_option_code
,tag_option_value
,object_ids
,p_date
) VALUES ('1', 't1', 'f1', 'a', null, '2021-11-23 17:19:29')
查询数据
select * from test;
以上是关于ClickHouse SQL 语法基础极简教程 + bitmap 位图数据类型的使用实例的主要内容,如果未能解决你的问题,请参考以下文章
ClickHouse SQL 极简教程使用EXPLAIN 分析 SQL 执行计划
ClickHouse SQL 极简教程ClickHouse SQL 之数据控制语言 DCL
ClickHouse SQL 极简教程ClickHouse SQL之数据操作语言 DML