You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在TM1规则中实现Excel COUNTIF等价功能?统计含'EVET'的单元格

在TM1规则中实现类似Excel COUNTIF的统计功能

核心实现思路

通过TM1的INSTR函数检测单元格内容是否包含目标字符串EVET,结合SUM函数遍历数据源的行/列维度进行计数,同时关联月份维度确保统计结果匹配目标区域的对应月份。

基础规则代码(维度直接匹配场景)

假设:

  • 数据源立方体:Source_Cube,维度包含Month、Data_Row、Data_Col
  • 目标立方体:Target_Cube,维度包含Month、Metric(其中Metric维度有EVET_Count统计项)
# 目标立方体中EVET统计项的计算规则
['EVET_Count'] = 
SUM(
  {Data_Row.Data_Row, Data_Col.Data_Col},
  IF(
    INSTR(DB('Source_Cube', !Month, Data_Row, Data_Col), 'EVET') > 0,
    1,
    0
  )
);

维度映射场景(月份维度名称/编码不同)

如果数据源与目标的月份维度不直接匹配,可通过属性映射关联:

['EVET_Count'] = 
SUM(
  {Data_Row.Data_Row, Data_Col.Data_Col, Source_Month.Source_Month},
  IF(
    AND(
      ATTRS('Target_Month', !Target_Month, 'Source_Month_Mapping') = Source_Month,
      INSTR(DB('Source_Cube', Source_Month, Data_Row, Data_Col), 'EVET') > 0
    ),
    1,
    0
  )
);

性能优化:添加Feeders

若数据源为稀疏维度,需配置Feeder避免计算延迟:

FEEDERS;
# 从数据源单元格触发目标统计项的预计算
DB('Source_Cube', Source_Month, Data_Row, Data_Col) => DB('Target_Cube', ATTRS('Source_Month', Source_Month, 'Target_Month_Mapping'), 'EVET_Count');

关键函数说明

  • INSTR(string, substring):返回子串在字符串中的起始位置,返回值>0表示子串存在
  • SUM(set, expression):遍历指定维度集,对符合条件的表达式结果求和
  • ATTRS(dimension, element, attribute):通过属性值关联不同维度的元素

内容的提问来源于stack exchange,提问作者Vatan Ozcelik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 18:42:12