反馈已提交

网络繁忙

您正在浏览的是 FineBI7.X 帮助文档,点击跳转至: FineBI6.X帮助文档

半累加指标

  • 文档创建者:April陶
  • 历史版本:2
  • 最近更新:April陶 于 2025-12-09
  • 1. 概述

    1.1 版本

    FineBI 版本功能变动
    7.0.6-

    1.2 功能简介

    半累加指标是解决「部分维度不需要聚合,仅取特定值(最大 / 最小),其他维度正常汇总」的可视化配置功能。

    不用写复杂函数,通过指标可视化配置就能实现快照类数据的统计,替代原来需要手动编写 def 函数的高难度操作。

    1.3 应用场景

    示例场景可视化配置
    账户余额统计按账户取「最后一次流水时间」的余额,再按「网点/支行」汇总
    • 不可累加维度 = 时

    • 窗口分组 = 账户

    • 取值 = 最大值

    库存数量统计按库房、品类取「最后一次记录时间」的库存,再按地区汇总
    • 不可累加维度 = 时

    • 窗口分组 = 库房 + 品类

    • 取值 = 最大值

    考试成绩统计考生同一科目多次考试,取「最高/最低分」作为最终成绩
    • 不可累加维度 = 考试次数

    • 窗口分组 = 考生 + 科目

    • 取值 = 最大值 / 最小值


    1.4 注意事项

    1. 指标的 「汇总方式」 不能是「聚合」 或 「明细值」

    2. 主指标 + 过滤条件有且仅有一个基准表(不能跨多个表)

    2. 操作步骤

    示例场景:计算账户余额(账户分组下取最大时间的余额)

    原始数据:

    地区
    账户
    时间流水余额
    AZH1002025-10-11 18:00100
    AZH1002025-10-11 19:00200
    AZH1012025-10-11 18:00300


    2.1 前置条件

    上传数据到「数据目录」并添加到「模型管理」后,制作指标。

    计算方式选择「字段」,依据「流水金额」进行「求和」,如下图所示:

    • 过滤:无

    • 衍生方式:无

    注意事项:

    1. 指标的 「汇总方式」 不能是「聚合」 或 「明细值」

    2. 计算方式的「对应指标 」+ 「过滤条件」有且仅有一个基准表(不能跨多个表)

    2.2 配置指标

    在指标可视化定义界面,开启「半累加指标」后,进行配置。该指标在不可累加维度下不聚合,仅选取窗口分组中最大/最小的不可累加维度值参与计算。例如计算账户余额,「不可累加维度=时间;窗口分组=[账户];取值=最大值」。配置如下图所示:

    计算逻辑说明:

    指标配置转化为公式 = sum_agg(def_add(sum_agg(流水余额),[账户],[时间= def(max_agg(时间),add_dim()) ]))

    公式计算优先级:先执行过滤条件 → 再按「窗口分组」+「不可累加维度」取最大 / 最小值对应的指标值 → 最后按其他维度正常聚合

    示例:无过滤条件,跳过 → 按账户分组取最大流水时间的余额 → 按 「分析使用的维度」 汇总余额合计

    配置项说明:

    配置项
    选择范围限制说明
    不可累加维度

    「对应字段」所在基准表的全部原始表字

    (不区分字段类型)

    • 最多 1 个字段

    • 必填

    无需聚合的维度(如账户余额场景的 「时间」),仅选取窗口分组内指定规则的该维度值
    窗口分组

    资源 / 维度列表中能够分析「对应字段」的字

    (需判断字段分析方向)

    • 非必填

    分组维度(如账户余额场景的 「账户」),基于该维度筛选不可累加维度的极值记录
    取值可选 「最大值」或「最小值」
    • 必填

    不可累加维度的筛选规则(如账户余额场景选 「最大值」,即取窗口分组内最大时间的记录)


    2.3 效果预览

    完成指标配置后,查询数据结果。地区 A 所有账户余额为「500」。

    账户「ZH100」余额为「200」。

    添加所有字段预览数据明细,效果如下图所示:

    3. 计算逻辑说明

    3.1 基础计算逻辑

    半累加函数计算逻辑转化为公式如下:

    汇总方式(def_add(汇总方式(指标) , [窗口分组] ,[不可累加维度=def(最大/最小值聚合函数(不可累加维度),add_dim())]))

    公式说明:

    1. 外层汇总方式:按用户预期的最终聚合方式(如 “平均”“求和”),对窗口分组计算后的结果再次聚合(例:求支行下各账户平均余额,先算每个账户余额,再按支行求平均);

    2. 内层汇总方式:若窗口分组内不可累加维度最大/最小值对应多条记录(数据异常场景),复用配置的汇总方式处理(如余额场景选 “求和” 则累加多条最大/最小值记录,优先规避数据异常导致的计算逻辑复杂化);

    3. def_add/def 函数:实现窗口分组内不可累加维度的最大/最小值筛选,max_agg对应 “取值 = 最大值”,min_agg对应 “取值 = 最小值”;

    4. add_dim:规避 def_add 函数第一个参数必须为数值的限制,曲线兼容字段类型。

    3.2 交叉场景计算逻辑

    半累加指标可叠加 「指标过滤、时间衍生」 配置,核心规则为:不可累加逻辑是对主指标聚合的修饰,过滤在聚合前执行。

    1)过滤 + 半累加

    不可累加=sum_agg(def_add(sum_agg(if(条件, 指标, null)), [窗口分组],[不可累加维度=def(最大/最小值聚合函数(不可累加维度),add_dim()]))

    注:因公式包含 def 函数,暂不支持过滤下推优化(功能暂未正式对外)。

    2)时间衍生 + 半累加

    年同期场景公式如下:

    sum_agg( def_add(sum_agg(def_add(汇总方式_指标, [窗口分组 ],[不可累加维度=def(最大/最小值聚合函数(不可累加维度),add_dim()])),[ ],[current(sub_dim(日期)),日期年=earlier(yeardelta(日期年,-1)))

    • current(sub_dim(日期):锁定当前分析的时间粒度(年)和具体值(比如用户分析 2024 年的数据,该函数就返回 “2025”);

    • yeardelta(日期年,-1) → 年份减 1(2025 → 2024,对应 “去年同期”)

    注:半累加本身使用了 2 层 def ;时间衍生本身使用 1 层 def ;聚合过滤本身使用一层 def 。如果叠加可能会导致 def 超限,建议如有此场景适当放开一层 DEF 层数限制。

    4. 常见问题

    Q:不可累加维度为何最多选 1 个?

    A:多个不可累加维度会导致 「最大/最小值」判定歧义(如同时选时间、金额,无法明确先取哪个维度的极值)。

    Q:窗口分组非必填,不填会怎样?

    A:不填窗口分组时,会基于全量数据筛选不可累加维度的极值记录,再按汇总方式聚合。

    Q:不可累加维度最大/最小值对应多条记录(数据异常),如何处理?

    A:复用配置的 「汇总方式」处理(如求和、平均),优先保证逻辑简洁,数据异常需提前诊断修正。

    Q:什么是主指标?

    A:添加指标选的「对应字段」为主指标。下面的过滤条件添加的若干指标为次指标。

    Q:什么是基准表?

    A:指标分析时维度用的哪张表,哪个就是基准表。跨表计算的指标,依据维度所在多表之间的关联关系,生成一张虚拟的基准表。




    附件列表


    主题: 指标中心
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持