我有一个事实表,其中有2列'timeInEventA
','timeInEventB
'。这些列存储实际故障单和下一个故障单之间的秒数差。
例如:如果我在2020/01/04 05:00:00处有一个'eventA
',而下一张票是2020/01/04 05:01:10,则第一张票中的'timeInEventA'列将的值为“ 70
”。
票证可能既没有eventA也没有eventB,因此事实表行中的两个值将为0。
此差异在ETL中计算并存储在事实表中。
问题:客户端将按天筛选时间段。因此,他将选择“在2020/01/03和2020/01/05之间给我timeInEventA和timeInEventB之和”。但是,由于下一个事件不在过滤器范围内,因此决定排除过滤器的最后一个故障单。那么我该怎么做才能排除总和的最后一行寄存器?
我的事实表有这两个度量列,日期维的替代键(例如:20200103),具有分钟粒度的时间的替代键(例如,发生事件05:03:22会产生0503替代键),以及客户维度的代理键。
PS:过去,我在另一种情况下遇到此问题,建议我有一个和度量指向该度量列,一个lastvalue度量指向同一列,并且派生计算减去了lastvalue(MDX: Exclude a member that share same dimension property of a measure )。
但是对于这种情况,这种方法无法解决。如果我的过滤器是20200102到20200108,则此方法将排除计算中的所有20200108值。
最好的问候,路易斯
您需要使用上一个非空值来定义另一个度量(这是在SSAS项目中的“多维数据集结构”选项卡->“定义新度量”中完成的)。然后从您的度量中减去它的价值。