次の方法で共有


エラー (クエリ オプティマイザーで生成されたサブキューブが多すぎます) と SSAS 多次元インスタンスで MDX クエリが失敗する

この記事は、Microsoft SQL Server Analysis Services (SSAS) 多次元インスタンスで多次元式 (MDX) クエリを実行するときに発生する問題を解決するのに役立ちます。

適用対象: SQL Server 2012 Analysis Services、SQL Server 2014 Analysis Services、SQL Server 2016 Analysis Services、SQL Server 2017 Analysis Services Windows、SQL Server 2019 Analysis Services Windows
元の KB 番号: 4533057

現象

Microsoft SQL Server Analysis Services (SSAS) 多次元インスタンスで多次元式 (MDX) クエリを実行すると、MDX クエリは失敗し、次のエラー メッセージが返されます。

クエリ プランで生成されたサブキューブの数が多すぎるクエリ オプティマイザー

このエラーは、次の条件に該当する場合に発生します。

  • 1 つの階層レベルまたは属性で定義されている計算されるメンバーが多すぎます。
  • 多くのフィールドまたは属性メンバーが各軸に配置されます。 または、Microsoft Excel のピボットテーブルの行または列に多くのフィールドがまとめられます。
  • 選択した階層のすべてのメンバーが軸に含まれます。
  • Excel ピボットテーブルでは、総計と小計がオンになります。

原因

SSAS 数式エンジン (FE) は、ストレージ エンジン (SE) クエリ サブキューブまたは Sonar サブキューブに関連するすべての MDX セットを生成する必要があります。 生成できるクエリあたりの SE クエリ サブキューブの数には制限があります。 これは仕様です。 現在、クエリ プランでは、FE がクエリに対して生成するクエリ サブキューブが多すぎるとエラーが発生します。

解決方法

このエラーを回避するには、次のベスト プラクティスのガイドラインに従ってください。

  • Excel ピボットテーブルで、総計と小計の両方をオフにします。
  • Excel UI のピボットテーブルの Rows または Columns 軸から階層を削除します。
  • ディメンション階層で定義される計算メンバーが多くなりすぎないようにします (たとえば、500 を超えるメンバー)。 代わりに、ディメンション階層に通常のメンバーを含め、MDX スコープの割り当て式 (計算セルとも呼ばれます) を使用して、それらの計算されるメンバーの式を置き換えます。