次の方法で共有


数式の再計算

PowerPivot for Excel ブックのデータを操作しているときに、ソース データを更新したり、計算列に作成した数式を再計算したり、ピボットテーブルに表示されるデータを更新したりすることが必要になる場合があります。

このトピックでは、データの更新と再計算の違いについて説明し、再計算が発生するしくみの概要を説明し、再計算を制御するオプションについて説明します。

データの更新と再計算について

PowerPivot では、データの更新と再計算の両方を使用します。

データ更新とは、外部のデータ ソースから最新データを取得することです。外部のデータ ソース内の変化を PowerPivot が自動的に検出することはありませんが、PowerPivot ブックからデータを手動で更新することも、SharePoint でブックが共有されていれば、自動的に更新することもできます。詳細については、「PowerPivot でデータを更新する各種の方法」を参照してください。

再計算とは、数式を含んでいるブックですべての列、テーブル、グラフ、およびピボットテーブルを更新することです。数式の再計算には時間を要するため、それぞれの計算に関連する依存関係を十分に把握することが重要です。

このトピックでは、再計算のしくみについて説明します。再計算によるパフォーマンスへの影響の詳細については、下記の「再計算のトラブルシューティング」セクションを参照してください。

重要な注意事項重要

ブック内の数式の再計算が済むまでは、ブックの保存やパブリッシュを行わないでください。

手動再計算と自動再計算

PowerPivot の既定では、処理に必要な時間を最適化する際に、必要に応じて自動的に再計算が実行されます。再計算には時間がかかりますが、再計算の間に列の依存関係がチェックされて、列が変更されている場合やデータが無効な場合、処理に使用される数式でエラーが発生した場合は通知されるため、重要なタスクです。ただし、特に複雑な数式や非常に大規模なデータセットを操作していて、更新のタイミングを制御する場合は、先に検証を行い、計算だけを手動で更新することができます。

手動モードと自動モードはどちらにもメリットがありますが、自動再計算モードを使用することを強くお勧めします。このモードでは、PowerPivot のメタデータの同期が維持され、データの削除、名前やデータ型の変更、または依存関係の欠落による問題を回避できます。 

自動再計算の使用

自動再計算モードの使用時に、数式の結果に影響を及ぼす変更がブック内のデータに対して行われると、数式が含まれている列全体の再計算が発生します。次のような変更がある場合は、数式を再計算する必要があります。

  • 外部データ ソースの値が更新された。

  • 数式の定義が変更された。

  • 数式内で参照されているテーブルまたは列の名前が変更された。

  • テーブル間のリレーションシップが追加、変更、または削除された。

  • 新しいメジャーまたは計算列が追加された。

  • PowerPivot ブック内の他の数式に対する変更が行われたため、その計算に依存している列または計算を更新する必要がある。

  • 行が挿入または削除された。

  • クエリの実行を必要とするフィルターを適用してデータセットを更新した。フィルターが、数式内で適用されているか、ピボットテーブルまたはピボットグラフの一部として適用されている可能性がある。

手動再計算の使用

準備が完了するまで数式の結果の計算コストが発生しないように、手動再計算を使用できます。手動モードは、次の状況で特に効果的です。

  • テンプレートを使用して数式を設計しており、数式を検証する前に数式で使用される列とテーブルの名前を変更したい。

  • ブック内の一部のデータが変更されたことがわかっているが、変更されていない別の列を操作しているので、再計算を延期したい。

  • 複数の依存関係を持つブックを操作しており、必要な変更がすべて完了するまで再計算を延期したい。

ブックが手動計算モードに設定されていると、PowerPivot for Excel は、数式の検証もチェックも一切実行しません。その場合、次のような状況が生じます。

  • ブックに新たに追加した数式には、エラーの存在を示すフラグが設定されます。

  • 新しい計算列に結果が表示されません。

計算モードを変更する方法や数式の手動計算をトリガーする方法については、「手動による数式の再計算」を参照してください。

手動による数式の再計算

ここでは、PowerPivot ブックの設定を一時的に変更し、数式の結果が自動的に更新されないようにする方法を説明します。できるだけ [自動] オプションを使用することをお勧めしますが、数式のデザイン時には、数式を手動で再計算するとブックのパフォーマンスへの影響が軽減されます。

この設定を変更した後は、数式に基づくすべての計算の更新を手動でトリガーする必要があります。

重要な注意事項重要

ブックをパブリッシュする前に、必ず計算モードを自動に戻してください。これは、数式の作成時の問題を防止するのに役立ちます。

手動再計算の構成

再計算とは、変更されたデータを使用している数式の結果を更新することです。数式が変更されたとき、計算結果に影響するデータが変更されたとき、またはデータが更新されたときは、再計算が必要です。データ更新の詳細については、「PowerPivot でデータを更新する各種の方法」を参照してください。

注意

Windows Vista および Windows 7 では、PowerPivot ウィンドウの機能をリボンから実行できます。このトピックではその手順について説明しています。Windows XP では、同じ機能を一連のメニューから実行できます。Windows XP を使用している場合、メニュー コマンドとリボン コマンドの対応については、「Windows XP の PowerPivot UI」を参照してください。

ブックを手動再計算するように構成するには

  1. PowerPivot ウィンドウで [デザイン] タブをクリックし、[計算] グループにある [計算オプション] をクリックします。

  2. [手動計算モード] をクリックします。

  3. すべてのテーブルを再計算するには、もう一度 [計算オプション] をクリックし、[今すぐ計算] をクリックします。

    ブック内の数式にエラーがないかどうかがチェックされ、エラーがあった場合は結果がテーブルに反映されます。データの量と計算の件数によっては、しばらくの間、ブックが無応答状態になる場合があります。

再計算のトラブルシューティング

ここでは、どのような場合にブックの再計算を行うかを計画する際の考慮事項に関する技術的なヒントを紹介します。ブック内のデータの再計算および更新に関する一般的な情報については、次のトピックを参照してください。

数式の再計算

PowerPivot でデータを更新する各種の方法

依存関係

ある列が他の列に依存しており、他の列の内容に何らかの変更が行われた場合、関連付けられているすべての列の再計算が必要になる可能性があります。PowerPivot ブックに変更が行われた場合は、PowerPivot for Excel によって既存の PowerPivot データの分析が行われ、再計算が必要かどうかが決定されます。さらに、できるだけ効率のよい方法で更新が行われます。

たとえば、Sales というテーブルがあり、このテーブルは Product テーブルと ProductCategory テーブルに関連付けられているとします。また、これら 2 つのテーブルに、Sales テーブル内の数式が依存しているとします。Product テーブルまたは ProductCategory テーブルに何らかの変更が加えられると、Sales テーブル内の計算列はすべて再計算されます。このことは、カテゴリ別または製品別に売上をロールアップする数式を想定すると道理にかなっています。したがって、結果が正しくなるようにするには、データに基づく数式を再計算する必要があります。

PowerPivot は常に、テーブルの完全な再計算を行います。変更された値がないかどうかを確認するよりも、完全な再計算を行う方が効率的であるためです。再計算を発生させる変更には、列の削除、列の数値データ型の変更、新しい列の追加などの大きな変更があります。ただし、列の名前の変更のような一見小さな変更によっても再計算が発生する場合があります。これは、列の名前が数式で識別子として使用されるためです。

場合によっては、PowerPivot for Excel によって再計算から除外される列が決定されることもあります。たとえば、Products テーブルから [Product Color] などの値を検索する数式があり、変更対象の列が Sales テーブルの [Quantity] である場合、Sales テーブルと Products テーブルが関連付けられている場合でも、数式を再計算する必要はありません。ただし、Sales[Quantity] に依存する数式がある場合は、再計算が必要です。

依存列の再計算シーケンス

再計算の前には、依存関係が計算されます。互いに依存している複数の列がある場合、PowerPivot は依存関係の順序を追跡します。これにより、正しい順序および最高の速度で列が処理されます。

トランザクション

データを再計算または更新する操作は、トランザクションとして行われます。したがって、更新操作の一部が失敗した場合、残りの操作はロールバックされます。これは、データの一部が処理済みの状態にならないようにするためです。リレーショナル データベースの場合のようにトランザクションを管理したり、チェックポイントを作成したりすることはできません。

揮発性関数の再計算

NOW、RAND、TODAY など、固定値を持たない関数も中には存在します。このような関数が計算列に使用されている場合に、クエリまたはフィルター処理が実行されても、パフォーマンス上の問題を回避するために、通常これらの関数は再評価されません。このような関数の結果は、列全体が再計算されたときにのみ再計算されます。こうした状況としては、外部データ ソースを更新する場合や、手動でデータを編集する場合などがあります。このとき、これらの関数を含んでいる数式が再評価されます。ただし、NOW、RAND、TODAY などの揮発性関数は、メジャーの定義内で使用されていれば常に再計算されます。