MDX は主にクエリ言語を目的としていると思います。そのため、このSELECT
ステートメントは最も進化したステートメントです。、、またはなどの他のDMLステートメントもありますが、 を除いて、それらはすべてデータを読み取るだけであり、あまり使用されません。UPDATE CUBE
DRILLTHROUGH
CALL
UPDATE
次に、いくつかのDDLコマンドがありますが、これらは既存のキューブまたは現在のクエリ セッションのわずかな適応に限定されており、MDX を使用して新しいキューブまたはディメンションを作成することはできません。キューブの作成やディメンションの変更などを行う SSAS の「実際の DDL コマンド」は、MDX ステートメントではなく、XMLA コマンドです。
GRANT
orのようなDCLステートメントREVOKE
は、MDX では使用できません。
また、SQL で見られる 4 番目のステートメントのカテゴリである、ステートメント (式ではなく) やループ構造などの手続き型ステートメント、およびサーバー側カーソルについても、MDX はサポートを提供しません。これらのステートメントは、Oracle、SQL Server、DB2、mySQL などの異なる DBMS 間であまり標準化されていない SQL の一部ですが、基本的な DML と DDL は多かれ少なかれ標準化されており、すべての主要なリレーショナル データベースもある程度標準化されています。 ANSI SQL をサポートします。リレーショナル データベースの場合でも、これは主にストアド プロシージャ、トリガー (プロシージャの特殊なケースとして)、およびバッチで使用される後のアドオンであることがよくあります。MySQL は、バージョン 5 でのみ導入されたこれらのステートメントをサポートすることなく、長年にわたって広く使用されていました。if
if
ストアド プロシージャの場合、Analysis Services は COM (非推奨) と .net に依存しており、本格的なプロシージャ機能を備えており、そのオブジェクト モデルを .net または COM で使用できるようにしています。とにかく、ストアド プロシージャのサポートは、1 つのオブジェクトを返す関数 (大量のデータを含む MDX セットと同じくらい複雑な場合があります)、または結果セットを返すプロシージャに限定されます。後者は、他の MDX ステートメントと対話することはできませんが、CALL procname(parameters)
. また、バッチの場合、MDX は、バッチを呼び出してすべての条件分岐とループを実行するホスティング環境に依存するだけです。
実際、MDX は SQL よりもはるかに制限された用途を持っているため、ある程度、目的によっては非常に優れた「ドメイン固有言語」にすぎませんが、意図されていない領域に多くの弱点があります。