Excel-dax-troubleshooting-dax-formula-recalculation

提供:Dev Guides
移動先:案内検索

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

ブックのデータモデルで変更が発生するたびに、Power Pivotは既存のデータの分析を実行して、再計算が必要かどうかを判断し、可能な限り最も効率的な方法で更新を実行します。

Power Pivotは、DAX数式の再計算中に以下を処理します-

  • 依存関係
  • 従属列の再計算のシーケンス
  • トランザクション
  • 揮発性関数の再計算

依存関係

列が別の列に依存し、その他の列の内容が何らかの方法で変更されると、関連するすべての列の再計算が必要になる場合があります。

Power Pivotは、テーブルの完全な再計算を常に実行します。完全な再計算は、変更された値をチェックするよりも効率的だからです。 再計算をトリガーする変更には、列の削除、列の数値データ型の変更、または新しい列の追加が含まれます。 これらの変更は大きな変更と見なされます。 ただし、列の名前を変更するなど、一見些細な変更でも再計算がトリガーされる場合があります。 これは、列の名前がDAX式の識別子として使用されるためです。

場合によっては、Power Pivotは列を再計算から除外できると判断する場合があります。

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

依存関係は、再計算の前に計算されます。 相互に依存する列が複数ある場合、Power Pivotは依存関係のシーケンスに従います。 これにより、列が正しい順序で最大速度で処理されることが保証されます。

トランザクション

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

揮発性関数の再計算

NOW、RAND、またはTODAYなどのDAX関数には固定値がなく、volatile関数と呼ばれます。 このようなDAX関数が計算列で使用される場合、クエリまたはフィルタリングの実行により、通常、パフォーマンスの問題を回避するためにそれらが再評価されることはありません。

これらのDAX関数の結果は、列全体が再計算されたときにのみ再計算されます。 これらの状況には、外部データソースからの更新、またはこれらの関数を含むDAX数式の再評価を引き起こすデータの手動編集が含まれます。

ただし、そのような関数は、計算フィールドの定義で使用される場合、常に再計算されます。