2011-01-07 16 views
1

私はSSAS CubesとMDXを学習しようとしています。これまでのところ、私はキューブブラウザを通して見たときに正しいデータ/計算を返すキューブを作成することができました。OLAP MDXクエリの理解に役立つ

クエリビルダを使用してレポートサービスでクエリを作成してキューブを照会しましたが、これは生成されたMDXを見て実際の結果に影響を与えないものを引き出しました。私は構文上に読んだ

SELECT NON EMPTY { [Measures].[AverageConnectedSeconds] } ON COLUMNS,  
NON EMPTY { ([Operator].[ACCESS DEF].[ACCESS DEF].ALLMEMBERS * [Calls].[Notification Time Bands].[Notification Time Bands].ALLMEMBERS) } ON ROWS  
FROM (SELECT (-{ [Calls].[Notification Time Bands].&[0] }) ON COLUMNS  
FROM (SELECT ({ [Calls].[Incoming YN].[N] }) ON COLUMNS  
FROM (SELECT (-{ [Calls].[Entity Type].&[6] }) ON COLUMNS 
FROM (SELECT (-{ [Calls].[Reason Text].&[Background Call] }) ON COLUMNS  
FROM (SELECT ({ STRTOMEMBER(@OperatorId) }) ON COLUMNS 
FROM [PNC5data]))))) 

と私は私はクエリがネストされた選択をしている理由を理解THINK:クエリは次のようになります。 ネストされたSELECT FROMがSQLのWHERE句として機能していることを理解していますか?

もしそうなら、WHERE句はMDXで何のために使われていますか?また、いつ/私がそれを使うのですか?

誰かがこのクエリで実際に起こっていることの内訳を教えていただけたら、本当にありがとう!または、私をリソースに導くことができれば、MDXの理解をさらに深めることができます。私は素晴らしいでしょう!

おかげで、句が簡単です

ジェームズ

答えて

5

理解。あなたは多くの情報源で、人々が誤解を招く名前について不平を言うのを見るでしょう。使用するより良い名前はスライサーです。 where句を使用すると、キューブ全体ではなくキューブのスライスを照会することができます(キューブ全体ではなくスライスをクエリすると、パフォーマンスが向上します)。 FROM句

は別のMDXクエリすなわちサブクエリを照会するキューブ又はを照会するを用いています。サブクエリは一般的に遅くなりますが、より強力です。例えば階層をスライサーとして使用する場合、軸で使用することはできませんが、サブクエリを使用すると、階層を使用できます。サブクエリは階層構造を変更できます。

上記のステートメントでは、ネストされたサブクエリが表示されます。いくつかのMDX構文がわかっている場合は、各サブクエリを分割して解釈したり、一部をスライサーに移動したりすることも簡単です。

私はOLAP全体の対象に対して比較的新しいものです。私が使っている2つの情報源は:icCube MDX reference(私はマイクロソフトのファンではなく、icCubeは良い使いやすい選択肢でした)とFast Track to MDXです。特にMicrosoftのBIツールを使用している場合は、MDXの重要な機能と用語(セット、タプル、関数など)の説明が容易であるため、Fast to MDXを特に好んでいます。 this postもご覧ください。

+0

SQLのWHEREはMDXのWHEREと同じではないと言うのは間違いなく非常に重要です。 –

0

私は以前に自分のMDXの紹介にリンクを掲示しました。それは好評でしたが、この投稿には他にも多くの優れたリソースがあります。 the-best-mdx-references-on-the-net

関連する問題