はじめに ― 第3部について
皆さま、Power BIをお使いですか?
「Power BIの予実レポート上で予算を直接入力したい」、「Power BI上のマスターを直接編集してしまいたい」 と思ったことはありませんか?
【第1部】では、Excel上のデータからPower BIのデータモデル(ディメンションとキューブ)を作成し、オンライン入力も可能なPower BIレポートを作成しました。
【第2部】では、そのPower BIのデータモデルを使用して、Power BIレポート上に公開可能でオンライン入力も可能なExcelレポートを作成しました。
この第3部では、データを実績と予算に切り分け、Power BI と Excel を使ったリアルタイムな予実管理の実装例を紹介します。
この記事の大きな流れ
- 予算シナリオを追加したキューブを作成する
- 予実管理画面を作成し"予算"を作る
- Power BIで予実レポート(Matrix)を作成する
- Excelで予実レポートを作成する
環境・前提
- Power BI Desktop / Power BI Service
- Excel
- Acterys のトライアル環境(日本ラッドへ問合せ、もしくはacterys.com から申請)
- データ:Power BI Desktopのインストール先にある"Financial Sample.xlsx"(第1部で使用したもの)
- 第1部で作成した データモデルとPower BIレポート
- SQL Server Management Studio(確認用。なくても可)
1. 予算シナリオを追加したキューブを作成する
"はじめに"にも記しましたが、第1部と第2部ではActerysのオンライン入力機能説明用としてキューブQ_Salesに単純に上書きしていますが、実際の予実管理では、"実績"と"予算"に切り分けて管理する必要があります。この第3部では、シンプルで代表的な予実管理の手法として、"予算シナリオ"を加えた"売上予実"キューブを作成し、予実管理を行う方法を進めてみます。
1-1. Modeller で新しいディメンションとキューブを作成する
-
"Scenario"ディメンションを作成
Acterys Modellerにサインイン、"Create New Dimension"を押下し、"Scenario"ディメンション(名前をQ_Scenarioとしました)を作成します。
"Scenario"ディメンションには、そのシナリオの日本語表記欄と、実績値の書換えを防ぐための"Lock"フラグを設定しておきます。 -
"Actual(実績)枠"の作成
"Scenario"ディメンションが作成されると、"Scenario"ディメンションのアイテム一覧/編集画面が表示されます。
次のステップ(1-2. 実績データの取込み)で、"Financial Sample.xlsx"のデータをシナリオ:"Actual(実績)"として取り込みたいので、"Actual"を追加しておきます。"Lock"は、Actual 1:入力不可/Forecast 0:入力可としてMatrixでの制御に使用します。第3章での予実レポート作成の際に使用します。

図:シナリオディメンションの作成 -
"Q_Sales_Plan"キューブを作成
"Q_Sales"キューブに"Q_Scenario"ディメンションを加えた"Q_Sales_Plan"キューブを作成します。
第1部ではウィザードを使用してExcelからのデータ取込みとあわせて"Q_Sales"キューブを作成しましたが、今回は空のキューブを直接作成してみます。
1-2. 実績データの取込み
実際の実績データ取込み処理について、Acterysではいくつかの方法でその取込み処理を実装することができます。
・Modellerのウィザードを利用したデータ取込み
・Excel-Addinを使用したデータ取込み
・Power Queryを使用したデータ取込み
・T-SQLを使用した取込み、Fabricのデータフローを使った取込み
・お手元のETLツール(SQL-Server, Azure-SQL対応)を使用した取込み など
今回は、Excelシートからのデータ取込み機能である**"Bulk Upload"**を使って、"Q_Sales_Plan"キューブに値を取込んでみます。
-
データの準備
Excelを立上げExcel-Addinにサインイン、"Q_Sales_Plan"キューブを指定し"Bulk Upload"をクリックします。(図:①)
"Bulk Upload"をクリックすると、"Q_Sales_Plan"キューブに対応したアップロード用のシートが作成されます。(図:②)
そのシートにアップロードするデータを貼り付けます。(図:③)
※ディメンションは文字列であることに注意。今回、Date列は'YYYY-MM-DD'の文字列となります。(書式は変更可能です)
※第1部で国名:'United States of America'を'USA'としたので、アップロードするシートも'USA'とします。(合致しない場合、エラーとなります) -
実績データのアップロード
シートの準備が終わったら、"Bulk Upload"をクリックします。(図:④)
アップロード先とアップロード元のシート(テーブルやレンジ)の確認画面が表示され、次に既に同じキーのデータがあった場合、加算するか置換するかの確認画面が表示されます。(今回"Q_Sales_Plan"キューブは空なので、どちらを選択してもOK.)
確認画面に従ってクリックすると、取込み処理が行われます。
-
データの確認
SSMSを使用して、テーブル"OLAP.CUBE_Q_Sales_Plan_WB"や、ビュー"OLAP.VW_CUBE_Q_Sales_Plan_NAMES"を参照するとアップロードされたデータを確認できます。
2. 予算シナリオ管理画面を作成する
ここまでの手順で、シナリオ(Q_Scenario)を持ったキューブ(Q_Sales_Plan)を作成し、"実績(Actual)"のデータを投入しました。
実業務では、予算(第1回目)、予算(第2回目)、期首予算(確定版)などいくつかの予算シナリオを作ったり、昨年実績を予算のベースとしてコピーしたり、第1回目第2回目の予算をコピーの値をベースとして予算策定していくことがあると思います。
Power BI上では、"Table Edit"を使って予算シナリオ(Q_Scenario)テーブルの編集を行うことが出来ます。
"Copy"を使うことでコピー元とコピー先を指定しての値のコピーを行うことができます。
Excel上では、”Edit Dimension”を使って予算シナリオ(Q_Scenario)テーブルの編集を行うことが出来ます。
"Copy values"を使ってコピー元とコピー先を指定しての値のコピーを行うことができます。
この章では、Power BIレポートを使った予算シナリオ管理と、Excel-Addinを使った予算シナリオ管理の2つを作ってみます。
2-1. Power BIレポートで予算シナリオ管理画面を作る
予算シナリオ管理画面の完成予定図は次の通りです。では早速作ってみましょう。
-
準備
-
”Table Edit”を配置し、設定する
-
”Copy”を配置する
-
AppSourceで"Copy"ビジュアルを検索し、Power BIに追加します。

図:Copyビジュアルの追加
この機能を使うことで、前年実績を翌年予算へコピーしたり、Forecast1 を Forecast2 の初期値として複製したりできます。 -
レポートに"Copy"を配置し、認証やテナントを設定します。
-
対象テーブル(キューブ)に"Q_Sales_Plan"を指定し、コピー元・先のレンジ(”Renge Field”)に"Q_Date Year"と"Q_Scenario Name"を指定します。
この設定でQ_Sales_Planキューブ内のFrom-Toを指定して値のコピーが可能となります。

図:Copy を配置、設定
-
-
確認用のフィルターとマトリックスを配置する
-
Power BI Serviceに発行し実行してみる
-
確認してみる
- マトリックスでコピー元・コピー先の値を見てみます。
このようにActerysでは、予実管理に必要な「予算シナリオの作成」と「ベースとする予算値のコピー」を簡単に実装することが可能です。
2-2. Excel-Addinで予算シナリオ管理シートを作る
ActerysはExcel-Addinでも「予算シナリオの作成」と「値のコピー」を簡単に行うことができます。
-
”Edit Dimension”による予算シナリオの追加
-
”Copy values”で新しいシナリオに値をコピー
Excel-Addinにある”Copy values”で、Q_Sales_Planキューブの年やシナリオのFrom-Toを指定して値をコピーすることができます。
-
コピー結果を確認してみる
Power BI上の予算シナリオ管理画面で、シナリオの追加とコピー結果を確認できます。

図:Power BIでコピー結果を確認
このようにActerysではExcel-Addinでも予実管理に必要な「予算シナリオの作成」と「ベースとする予算値のコピー」を簡単に実装することが可能です。
3. 予実レポートを作成する
第1章、第2章で、予実を"シナリオ"で管理できるキューブを作成し、シナリオ間のデータのコピーを実装しました。
この章では、"実績はロックして入力不可"にする点にフォーカスして実績vs.予算のレポートをPower BIとExcelで作ってみます。
3-1. Power BIレポートでの予実レポート作成
ここでは単純な同年同月予実対比のレポートをPower BIで作ってみます。
-
データの準備
- 予算シナリオ管理(Table Edit)で実績のLockに1を入力し、適宜に予算シナリオを作成しLockを0にします。
(以降で作成する画面でLock=1はロック、Lock=0は入力可として扱います) - Copyを使用し、"予算”シナリオに実績を予算の初期値としてコピーしておきます。
- 予算シナリオ管理(Table Edit)で実績のLockに1を入力し、適宜に予算シナリオを作成しLockを0にします。
-
DAX関数を作る
-
直接Q_Scenario'[Lock] を使っても良いのですが、一覧上の値の有無やフィルター条件に影響されずシナリオ毎にQ_Scenario'[Lock]を表示させるため、次のようなDAXメジャーを作成しておきます。
その他、Marix上で前年実績、前年差、前年比などを使いたい場合、それらのDAXメジャーを作成します。// 他のディメンションは無視してQ_Scenario'[Lock]の値を取得する Lock = CALCULATE(SUM('OLAP Q_Scenario'[Lock]), REMOVEFILTERS('OLAP Q_Country'[Name]), REMOVEFILTERS('OLAP Q_Date'[Name]), REMOVEFILTERS('OLAP Q_Product'[Name]), REMOVEFILTERS('OLAP Q_Segment'[Name]) )
-
-
新しいページにフィルターと”Matrix”を配置
-
"Matrix"を設定
-
"Matrix"のRow/Col/Value、AP_Keyを設定します。
- Row:Q_Country-Name, Q_Segment-Name, Q_Product-Name
- Col:Q_Date-Year_Month, Q_Scenario-Name_JP
- Value:Q_Sales_Plan-Amount, Lock
- AP_Key:ServiceAccount-Key
- RowとColは"データのない項目を表示する”"設定にします。
- RowとColに設定した項目は、"(空白ではない)"設定にします。
- Valueの項目は、"書式:整数"、" ,区切り"に設定しておきます。
-
テナントと認証、更新対象テーブルを設定します。
-
入力ロックの設定
このままだとAmountは実績欄予算欄とも入力できてしまうので、"Amount"は"Lock"を使ってロックを設定します。

図:ロックを設定する -
その他Matrixビジュアルの設定
その他、行列の伸縮の初期表示やラベルなどを設定し、"発行"します。(もちろんそのままDesktopで使っても可です)

図:その他Matrixビジュアルの設定後
-
-
使ってみる
Lock:1 が設定されている"実績"欄は入力不可、予算#01、#02欄は入力可能となっています。
予算シナリオ管理画面を開いて予算#01のLockに1を立てると、"予算#01"欄を入力不可にすることができます。

図:予算シナリオ管理を用いて入力をロック
今回はシナリオにLock:0/1を設定することで、シナリオ毎にLockを設定するようにしましたが、年月x国xシナリオといったキューブにLock:0/1を持たせるなどすれば、マトリックス上の任意の交点の値の入力をロックすることが可能です。
また、キューブやテーブルの持たせ方次第で、見通し入力で実績月はロック/先日付は入力可としたり、承認(入力/提出/承認/却下)をテーブル化すれば、簡易なワークフローを実装することも可能です。
今回、MatrixにはAmountとLockの2項目を配置しましたが、”Marrix”には、他のキューブや他のテーブルの値、DAXメジャーも配置することが可能です。
注意:MatrixのValueで扱えるのは数値のみです。”Matrix”の一覧表内では文字や画像は扱えません。"Table Edit"は文字や画像を扱えます。
3-2. Excelの予実レポートでの入力ロック
-
ウィザードで列に予実を並べた一覧表を作る第2部でExcel-Addinのウィザードの使い方とAEOワークシート関数に触れました。ここでも同様にウィザードを使用して一覧表を作成します。この状態では"Q_Sales_Plan"キューブの実績にも予算にもオンライン入力可能になっています。
次のステップで"実績"をロックします。

図:ウィザードで予実一覧表を作る -
ロック:"シートの保護"で入力しないセルをロックする
ひとつの方法は、Excelの"セルの保護・ロック&ワークシートの保護"を使う方法です。
Excelの"ワークシートの保護"機能を使うことで、ロックしない設定のセルのみに入力が可能、ロックしたセルへの入力を受け付けない設定となります。

図:ワークシートの保護でロックを設定 -
AEO.Cellワークシート関数の"DisableWriteback"を使う
入力をさせないもう一つの方法は、AEOワークシート関数の"DisableWriteback(書き込み抑止)をTrue”として、シート上入力してもデータベースに書き込ませないようにする方法です。

図:AEOワークシート関数のDisableWritebackの設定

図:入力時のDisableWritebackによる動作 -
Excelではこれらを組合せてDAXレス/Excel関数で自在なレポート
AEOワークシート関数でのデータベース参照、Excelワークシート関数での自在な計算と書式設定で自在に入力可能なレポートを作成することが可能です。
Acterys SmartXLビジュアルによって作成したExcelレポートをPower BIレポートとして公開/利用可能です。

図:DAXレス/Excel関数で自在なレポート
第3部でのご紹介ポイント|まとめ
メリット
① 実績と予算を同じデータモデルで一元管理できる
シナリオディメンションを使うことで、実績と複数の予算シナリオを1つのキューブで容易に管理することが可能です。
Excel のシートを予算シナリオ別に分けて管理する手間がなくなります。
② ロックで確定した実績や予算を保護しながら予実管理できる
Lock 設定により、実績や確定した予算を誤って上書きするリスクを排除しつつ、予算をオンラインでリアルタイムに入力・更新することが可能です。
③ 差異・差異率をリアルタイムで確認しながら 予算を調整できる
Power BI のレポート上で入力と確認をオンライン・リアルタイムに行えるため、「Excel を更新→PBI を更新→確認」という往復が不要になる。
④ Power BI と Excel の両方で同じデータモデルを使用して予算をオンライン入力・参照できる
Power BI レポートでの Matrix 入力も、Excel Addin/Smart XL からの入力も、同じデータモデルに書き込まれるため、どちらのインターフェースを使っても常に最新の状態を共有することが可能です。
注意点
① 実績データの更新フローは別途設計が必要
実運用では、実績データは基幹システムや会計システムからのデータ連携となります。
Acterys PBI Sync や ETL ツールとの組み合わせが必要になる場合があります。
② シナリオやバージョン管理、ワークフローは事前の検討/設計が必要
予算策定の流れ(予算シナリオ)のほかに、予算・見通しのバージョン管理や業績シミュレーションなどを行う場合、それらを管理するディメンションと入力ロックのタイミングを粒度(ワークフロー)を事前に検討・設計しておく必要があります。
まとめ
3部にわたってActerysをご紹介してきました。
「見るだけだった Power BI」が「入力できる Power BI」に変わり、さらに「Excel も Power BI も同じデータで動く予実管理」へと発展する様子を、3部を通じてイメージしていただけたとすれば幸いです。
Acterysは単なるWrite-Backツールではなく、Power BIとExcelを中心とした計画・予測・シミュレーション基盤として活用できます。
日本でのお問い合わせ
日本国内での Acterys の導入のご相談は、日本ラッド株式会社 までお気軽にどうぞ。
🔗 日本ラッド株式会社|Acterys URL:https://www.nippon-rad.co.jp/bi/products/acterys/
✉ メール:Acterys@nippon-rad.co.jp






















