聚合模型的导入更新
在使用 Doris 聚合模型(Aggregate Key Model)时,用户通常会遇到以下场景:
- 需要持续向聚合表中写入新数据,并希望新值能与历史值按聚合规则合并;
- 需要只更新部分列,而保留其他列的历史聚合结果。
本文介绍 Doris 聚合模型在上述场景下的两种更新方式:整行更新与部分列更新。
更新方式概览
| 更新方式 | 适用场景 | 支持的导入方式 | 行为说明 |
|---|---|---|---|
| 整行更新 | 写入完整行,按列聚合函数合并新旧值 | Stream Load、Broker Load、Routine Load、Insert Into 等 | 新值与旧值按聚合函数产出新的聚合值 |
| 部分列更新 | 只更新部分列,其他列保留原聚合结果 | 详见 列更新 | 仅对指定列参与聚合合并 |
整行更新
通过 Doris 支持的 Stream Load、Broker Load、Routine Load、Insert Into 等导入方式向聚合模型(Agg 模型)写入数据时,引擎会将新值与旧的聚合值按列上的聚合函数计算,产出新的聚合值。
聚合值的产出时机包括:
- 导入时产出:在数据写入过程中实时合并;
- 异步 Compaction 时产出:在后台合并过程中完成聚合。
无论聚合值在哪个阶段生成,用户在执行查询时得到的返回值是一致的。
部分列更新
聚合模型(Aggregate Key Model)支持只更新表中的部分列,其他列保留已有聚合结果。关于建表方式、数据写入示例以及使用注意事项,请参考 列更新 文档。