SQL Server Analysis Services を使用した管理会計要件への対応
Microsoft Japan Data Platform Tech Sales Team
池本仁
SQL Server には RDBMS のサービスだけでなく、レポート配信のサービス( Reporting Services )やデータ連携用のサービス( Integration Services )等、様々なサービスが提供されています。
サービスの一つである SQL Server Analysis Services ( SSAS ) には強力な分析用の機能が実装されており、通常の RDBMS では実現が難しい要件に対応することができます。
本稿ではその一つの例として、SSAS を利用した管理会計要件への対応例についてご紹介します。
■管理会計における損益分析要件
管理会計では、企業内の会計情報を経営者・管理者の意思決定や組織の業績評価に利用します。一言で管理会計と言ってもその範囲は非常に広く、企業の業種や規模・戦略によって求められることが大きく変わるため、管理会計システムが対応すべき要件は多種多様です。その多種多様な要件の中でも多くの企業が重視しているのが、損益計算書形式のレポートです。
典型的な損益計算書のフォーマットでは、売上高、売上原価、売上総利益、販管費、営業利益・・・のように、勘定科目を構造化した階層により会計データの実績や予算の表示を行います。この階層を仮に「損益階層」と呼びます。 また、典型的なレポートの例を下記に記載します。
損益階層には、下記のような特徴があります。
[ 利益ノード等、他のノードの金額値の計算によって求められるノード ]
売上高、売上原価といった階層のデータは、勘定科目をグループ化してデータを単純集計することで算出可能です。
一方、売上総利益、営業利益といった階層ノード(利益ノード)については、集計元となる勘定科目がありません。
売上総利益 = 売上高 - 売上原価 というように、他の階層ノードの結果から計算して算出する必要があります。
[ 深さの異なる階層がある ]
例えば売上総利益については2階層目より先の階層はなく、展開することができません。
売上高は2階層目まで展開可能、販管費の人件費 > 給与手当・雑給 は3階層目まで展開可能 といったように、階層によって深さが異なるケースがあります。
上記に加え、管理会計では下記の要件があります。
[ 多数の分析軸による自由分析要件 ]
財務会計(制度会計)の損益計算書では 会社、セグメント別等の定型的なレポートが表示されればよいのに対し、管理会計では意思決定のためにより詳細な観点(組織や製品群等)で分析できる必要があります。
財務会計用の損益計算書はいくつかのパターンに対応した定型レポートを個別に作成すれば対応できるのに対し、管理会計で必要とされる様々な分析軸ごとのレポートを都度作成していては、開発工数も期間も膨大になってしまい現実的に対応できません。
このため、レポートで個別対応するのではなく、データベース側で損益階層の構造を定義し、どのような軸の組み合わせを指定しても正しく結果が表示されるようにすることが有効です。
■ SQL Server Analysis Services( SSAS )の対応
上記の損益階層の要件、および損益階層を使用したレポートは多くの企業において必要とされるものですが、従来の RDBMS の機能だけで実現しようとすると複雑な対応が必要となることがありました。しかし、SSAS を使用することで、シンプルに実現することができます。
[ 利益ノードへの対応 ]
勘定科目階層の特定のノードに表示する金額を、カスタムメンバー式という計算式で定義することができます。
カスタムメンバー式の定義
https://technet.microsoft.com/ja-jp/library/ms174474(v=sql.120).aspx
また、より複雑な計算が必要になる場合はキューブにスクリプトを定義することで、単純な四則演算で定義できないような要件にも対応できます。例えば、棚卸資産回転率や ROE 、ROA といった経営指標を階層に組み込んで表示したい場合がこれに当たります。
[計算] (キューブ デザイナー) ( Analysis Services - 多次元データ )
https://msdn.microsoft.com/ja-jp/library/ms181224(v=sql.120).aspx
SCOPE ステートメント ( MDX )
https://msdn.microsoft.com/ja-jp/library/ms145989(v=sql.120).aspx
[ 深さの異なる階層への対応方法 ]
親子ディメンションの定義または、階層ノードのプロパティ「HideMemberIf」を設定して不規則階層と呼ばれる階層を定義することで、深さの異なる階層を設定できます。
親子ディメンション
https://msdn.microsoft.com/ja-jp/library/ms174846(v=sql.120).aspx
不規則階層
https://msdn.microsoft.com/ja-jp/library/ms365406(v=sql.120).aspx
このように定義した階層を分析軸として設定したキューブを作成することで、会計伝票や予算データ等の会計データを単純に勘定科目別に集計するのではなく、損益計算書形式で様々な分析軸で表示、分析することができます。例えば ユーザが Excel で SSAS にアクセスして、組織別や時系列、製品群別といった集計軸を自由に切り替えて分析を行うことができます。
なお、本稿で記載した対応方法は、SSAS の多次元モードでの対応方法です。多次元モードの特徴は、本稿に記載したような単純集計とは異なる 「業務で必要となる集計方式」 に対応した機能を豊富に持っていることにあります。
今回ご紹介したような管理会計の要件は、安価な単純集計型のBIツールでは実現が難しいものが多く、従来であれば高価なBI製品が必要となることもあった要件です。
SQL Server には様々なサービスが標準機能として含まれており、追加のライセンス費用を必要とせず多彩な要件に対応できることもご採用いただくにあたってのメリットといえます。
今後、是非 SQL Server が提供する豊富なサービスについてもご利用を検討いただければと存じます。