跳到主要内容

聚合模型的导入更新

在使用 Doris 聚合模型(Aggregate Key Model)时,用户通常会遇到以下场景:

  • 需要持续向聚合表中写入新数据,并希望新值能与历史值按聚合规则合并;
  • 需要只更新部分列,而保留其他列的历史聚合结果。

本文介绍 Doris 聚合模型在上述场景下的两种更新方式:整行更新部分列更新

更新方式概览

更新方式适用场景支持的导入方式行为说明
整行更新写入完整行,按列聚合函数合并新旧值Stream Load、Broker Load、Routine Load、Insert Into 等新值与旧值按聚合函数产出新的聚合值
部分列更新只更新部分列,其他列保留原聚合结果详见 列更新仅对指定列参与聚合合并

整行更新

通过 Doris 支持的 Stream Load、Broker Load、Routine Load、Insert Into 等导入方式向聚合模型(Agg 模型)写入数据时,引擎会将新值与旧的聚合值按列上的聚合函数计算,产出新的聚合值。

聚合值的产出时机包括:

  1. 导入时产出:在数据写入过程中实时合并;
  2. 异步 Compaction 时产出:在后台合并过程中完成聚合。

无论聚合值在哪个阶段生成,用户在执行查询时得到的返回值是一致的。

部分列更新

聚合模型(Aggregate Key Model)支持只更新表中的部分列,其他列保留已有聚合结果。关于建表方式、数据写入示例以及使用注意事项,请参考 列更新 文档。