1

精通 SQL,但对 MDX 不熟悉,我很难理解这一点:

我有一个包含每月帐户余额快照的事实表。我需要将余额汇总为半加法度量 - 显然,对于余额,直接总和不起作用。但是,我确实需要通过将所有帐户的余额相加来分别汇总每个月内的所有余额,因此“lastnonempty”概念也不适用于我。例如,如果事实如下所示:

Date        AccountNo     Balance
2009-01-31  1111          $100
2009-01-31  2222          $100
2009-01-31  4444          $100
2009-01-31  5555          $100

2009-02-28  1111          $100
2009-02-28  2222          $200
2009-02-28  3333          $500
2009-02-28  5555          $50

etc.

我有一个帐户维度,将帐户分组为主要类别/次要类别/帐户层次结构,我需要这样的输出来汇总所有帐户每个月的余额:

Month        Total
January 09   $400
February 09  $850

并按帐户类型细分:

Month        Total
January 09   $400
  Type 1      $200
    1111       $100
    2222       $100
  Type 2     $200
February 09  $850
  Type 1     $300
  Type 2     $550

但是,余额不应该跨月、季度或年相加,因为这没有意义,而且它们会被计算两次。任何更长的时间间隔都应显示周期结束:

Quarter    WRONG    Correct
Q1         $1250    $850   // should be the sum of balances for the *last* month in Q1
  Type 1   $500     $300
  Type 2   $759     $550

如果我使用股票“lastnonempty”聚合,我似乎只得到一个月的最后一个账户行,而不是上个月账户余额的总和。就好像当月的总数仅显示从该月存在的一个随机帐户中提取的余额,而不是总数。(我敢肯定它不是真的随机,可能是根据存储顺序或其他东西选择一个)

我确定我只是在做一些简单的错误...

4

1 回答 1

0

我想我解决了这个问题:我的具有余额的源数据非常稀疏——只有非零余额有一行,余额为零时账户没有行。这让一切变得棘手(想象一下库存,你有零件计数,这些计数通常为零,但是当它们为 0 时,事实表中就缺少该行)

我能够在数据源中创建一个视图,该视图将“添加回”所有其他行,余额为零,然后 ClosingPeriod() 函数开始按预期工作。

于 2009-12-01T17:59:14.683 回答