【发布时间】:2021-12-24 10:25:20
【问题描述】:
我创建了带有 clickhouse-server 的 docker 容器,里面有挂载的目录。
docker run -d --name clickserver -p 8213:8123 -v C:\Users\mankov.k\Desktop\Test_task\epay:/data chserver
chserver 是通过 Dockerfile 创建的 docker 镜像
FROM clickhouse/clickhouse-server:21.11.6.7
WORKDIR /data
docker build -t chtest8 .
现在我有一个名为 data.csv 的 csv 文件,我正在尝试将其插入 CollapsingMergeTree 表中。
调用创建的表
CREATE TABLE cmt_1(id UInt64,
dt_u DateTime,
IdUser UInt32,
Summa Decimal(11, 2),
agent UInt16,
idCurrency UInt16,
subagent UInt32,
dt_pay DateTime,
mainUserId UInt32,
id_country UInt16,
refUser UInt16,
refTransact UInt32,
globalProject UInt16,
currencyUser UInt16,
AffilateId UInt32,
isFirstdep UInt8,
epay_status UInt32,
Sign Int8)Engine=CollapsingMergeTree(Sign)
ORDER BY (epay_status, agent, subagent)
PARTITION BY toYYYYMM(dt_pay);
data.csv 里面有 1.32 亿行,每行的 Sign 字段等于 1(我的意思是 Sign 字段中没有任何 -1)
我正在尝试使用 bash 命令插入数据
cat data.csv | clickhouse-client --query="INSERT INTO cmt_1 FORMAT CSV"
除了我的 CollapsingMergeTree 像 ReplacingMergeTree 一样工作外,所有插入都很好。我的意思是它从 ORDER BY 字段(epay_status、agent、subagent)中删除具有相等值的行。但是 CollapsingMergeTree 应该删除具有相同 ORDER BY 字段和不同符号值(-1 和 1)的行。但我在 Sign 字段中没有任何 -1。
因此,我的 1.3 亿行合并为 65k 行。
例子
在 csv 我有
922514853,"2019-04-05 15:28:37",56091623,10,58,12,1171,"2020-11-20 13:50:58",56091623,148,1,0,1,12,0,0,3,1
1217950451,"2019-08-26 11:26:40",5237207,15,490,20,2579,"2020-11-26 15:16:21",5237207,1,1,0,1,1,0,0,5,1
1217958553,"2019-08-26 11:26:40",5237207,2,490,20,2579,"2020-11-26 15:16:21",5237207,1,1,0,1,1,0,0,7,1
1217975479,"2019-08-26 11:26:40",5237207,2,490,20,2579,"2020-11-26 15:16:21",5237207,1,1,0,1,1,0,0,2,1
1217975675,"2019-08-26 11:26:40",5237207,2,490,12,2579,"2020-11-26 16:07:07",5237207,1,1,0,1,1,0,0,7,1
但是在我的桌子上我有
┌─────────id─┬────────────────dt_u─┬────IdUser─┬─Summa─┬─agent─┬─idCurrency─┬─subagent─┬──────────────dt_pay─┬─mainUserId─┬─id_country─┬─refUser─┬─refTransact─┬─globalProject─┬─currencyUser─┬─AffilateId─┬─isFirstdep─┬─epay_status─┬─Sign─┐
│ 1217950451 │ 2019-08-26 11:26:40 │ 5237207 │ 15 │ 490 │ 20 │ 2579 │ 2020-11-26 15:16:21 │ 5237207 │ 1 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 │ 5 │ 1 │
│ 1217975479 │ 2019-08-26 11:26:40 │ 5237207 │ 2 │ 490 │ 20 │ 2579 │ 2020-11-26 15:16:21 │ 5237207 │ 1 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 │ 2 │ 1 │
│ 1217975675 │ 2019-08-26 11:26:40 │ 5237207 │ 2 │ 490 │ 12 │ 2579 │ 2020-11-26 16:07:07 │ 5237207 │ 1 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 │ 7 │ 1 │
│ 1222374915 │ 2019-08-26 11:26:40 │ 5237207 │ 50 │ 490 │ 12 │ 2597 │ 2020-11-26 16:07:07 │ 5237207 │ 1 │ 1 │ 0 │ 1 │ 1 │ 0 │ 0 │ 4 │ 1 │
│ 1629063475 │ 2020-01-09 18:12:46 │ 160644195 │ 25 │ 111 │ 3 │ 2045 │ 2020-11-04 11:57:50 │ 160644195 │ 2 │ 25 │ 0 │ 1 │ 3 │ 0 │ 0 │ 1 │ 1 │
您可以看到带有id 1217958553 和1217975675 的行折叠到第二行。
伙计们,我在做什么?
【问题讨论】:
-
您能否提供
data.csv的示例,其中 2 行折叠成 1 行? -
@AndreiKoch 添加到问题描述中
-
你确定吗?您刚刚发布了表格的 sn-p。此外,您在 csv 和表格中都有 5 行。我建议您通过创建具有相同结构的单独表并准确插入 5 个指定行来缩小问题范围
-
@AndreiKoch 我在 csv 和 table 中都按 id 对行进行了排序,因此我可以检查至少前 5 行之间是否有任何不同。
-
clickhouse.com/docs/en/engines/table-engines/mergetree-family/… 最后一个“状态”行,如果“状态”行多于“取消”行。
标签: docker clickhouse