5

総勘定元帳コードブロックの上に icCube でモデルを構築しました。これには次のディメンションがあります (限定的ではありません)。

  • 時間
  • 実在物
  • コストセンター
  • アカウント
  • 会社間パーティー
  • 計画
  • アクティビティ
  • 金額(これは値です)

このモデルをツール Planning にロードすると、x 軸に 3 つ以上のディメンションが最下位レベルに折りたたまれている場合、パフォーマンスの問題が発生します。

icCube がこれをより適切に処理できるかどうかを確認しようとしましたが、3 次元のステートメントには 1700 秒以上かかりました。

select [Dec] on 0
, non empty { Descendants([Account].[Account].[Total],,leaves) }
     * { Descendants([Activity].[Activity].[Total],,leaves) }
     * { Descendants([CostCenter].[CostCenter].[Total],,leaves) } on 1
from finance

行に複数の次元がある理由は、ユーザーがコードブロックのできるだけ多くの詳細、できれば完全なコードブロックを見たいからです。

私は、他のツールがこの種のことを非常に簡単に処理できるという事実に挑戦しました。これは、基礎となる OLAP データベースがなく、階層を使用してデータ セルに対して直接クエリを実行するためです。Excel でデータの抽出をクエリする場合も、同じパフォーマンスが得られます (データの行数はそれほど多くありません)。

データに関する情報:

  • ディメンションはかなり巨大です: 400 のアカウント、6000 以上のアクティビティ、50 のエンティティ、500 のコストセンター
  • ディメンション アクティビティとプロジェクトは非常にフラットです (ほとんど構造がありません)
  • 金額は 50.000 しかないため、データは非常にまばらです

これを解決するための提案やヒントはありますか?

4

1 に答える 1

4

これは、MDX の古典的な問題であり、MDX のアンチパターンを作成し、それをナンバー 1 にする価値があります。

計算している crossjoin は 400x60000x500 = 12000000000 (12X10^9) タプルを生成し、それぞれを評価するよう求めています。これにより、毎秒多くの評価が行われます。

ドリルスルーを行う「奇妙な」方法のように見えます。ドリルスルーを行いますが、MDX でこれを解決してみましょう:

解決策は、空でないことをできるだけ早く実行して、生成されるタプルの数を減らそうとしています。そう :

 noempty( noempty(A) x noempty(B) ) x noempty(C)
   or 
 noempty(A) x noempty( noempty(B)  x noempty(C) )

nonempty を少し減らして最初のバージョンを使用する:

select 
[Dec] on 0, 
nonempty( 
  nonempty( 
      Descendants([Account].[Account].[Total],,leaves)
    * nonempty( Descendants([Activity].[Activity].[Total],,leaves) , [DEC] )
  , [DEC] )
  * { Descendants([CostCenter].[CostCenter].[Total],,leaves) } 
, [DEC] )
on 1
from [finance]

icCubeでは、構文を簡素化するためにこの操作を実行する関数を作成します。

 Function megaCrossjoin1(A,B,C,M) as nonempty( nonempty(A,M) * nonempty(B,M), M) * nonempty(C,M)

そしてそれを使う

megaCrossjoin1( 
   Descendants([Account].[Account].[Total],,leaves) ,
   Descendants([Activity].[Activity].[Total],,leaves) ,
   Descendants([CostCenter].[CostCenter].[Total],,leaves) ,
   [Dec]) 

それが役に立てば幸い

于 2014-08-29T13:13:36.037 に答える