Foxtable(狐表)用户栏目专家坐堂 → 表达式问题


  共有2959人关注过本帖树形打印复制链接

主题:表达式问题

帅哥哟,离线,有人找我吗?
kmk123456
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:3 积分:80 威望:0 精华:0 注册:2018/10/26 9:42:00
表达式问题  发帖心情 Post By:2018/10/26 9:49:00 [只看该作者]

用这个表达式时,有这个表达式的表能正常加载,加载时间大概2分钟左右:
IIF((IsNull([库存_七月数量],0) + IsNull([入库_八月_数量],0)) = 0 or (IsNull([库存_七月数量],0) + IsNull([入库_八月_数量],0)) is null, Null ,(IsNull([库存_七月金额],0) + IsNull([入库_八月_金额],0)) /(IsNull([库存_七月数量],0) + IsNull([入库_八月_数量],0) ))
如将它改成:
IIF((IsNull([库存_七月数量],0) + IsNull([入库_八月_数量],0)) = 0 or (IsNull([库存_七月数量],0) + IsNull([入库_八月_数量],0)) is null, [移动平均成本_七月] ,(IsNull([库存_七月金额],0) + IsNull([入库_八月_金额],0)) /(IsNull([库存_七月数量],0) + IsNull([入库_八月_数量],0) ))
那么,加载这个表的时间就会延长至少10倍。
是什么原因呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/26 10:04:00 [只看该作者]

[移动平均成本_七月]应该也是表达式列吧,说不定[移动平均成本_七月]里面又引用了其它表达式列,这样会形成了一个表达式计算树,当前节点计算依赖子节点(引用的其它表达式列)计算完毕,而子节点可能又依赖孙节点计算完毕,每个节点根据表达式的复杂性(可能需要计算当前行,可能需要计算整个表数据)需要一定时间。

所以当这个表达式树节点层次越深(表之间的引用越多),计算的数据越多(表数据越多),就可能导致表达式计算时间会呈指数级别递增,而不是倍数递增

 回到顶部
帅哥哟,离线,有人找我吗?
kmk123456
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:3 积分:80 威望:0 精华:0 注册:2018/10/26 9:42:00
  发帖心情 Post By:2018/10/26 10:08:00 [只看该作者]

但同样的计算量,在execl中几乎是瞬间完成的啊

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/26 10:17:00 [只看该作者]

狐表和execl的处理逻辑完全不一样,没有可比性

要想使用好狐表先忘记execl,如果照搬execl的思维,越往后可能会越痛苦。不要过于依赖表达式。

另外表格的设计,业务数据的存储不要和统计表混为一体,业务数据和统计数据要分开,统计分析是基于业务数据的深加工,而且这种加工本身就是耗时的

 回到顶部
帅哥哟,离线,有人找我吗?
kmk123456
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:3 积分:80 威望:0 精华:0 注册:2018/10/26 9:42:00
  发帖心情 Post By:2018/10/26 15:17:00 [只看该作者]

你不认为狐表在统计分析处理方面有要改进的地方吗

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110544 积分:562604 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/10/26 15:38:00 [只看该作者]

狐表的表达式很弱,远远不能和execl比。狐表的统计分析功能基本和列表达式没有什么关系,何况狐表的表达式主要也不是用来做统计分析的

不编程的情况下,狐表也提供了一些通用的、基础的统计分析功能。似乎您都没有用到:http://www.foxtable.com/webhelp/scr/00143.htm
如果通过编程,可以实现更加复杂的统计分析功能,具体可以看【开发指南】-》【统计与查询】

 回到顶部