質問者
SQL Server 2005 Analysis Service使用時の DistinctCountについての疑問です

質問
-
sokayamaと申します。
最近、仕事で初めてSQLServerを使い始めましたが、不明点が多くなかなか思うようにいかない状況です。
MicrosoftTechNet等を調べてはみたのですが、解決することができなかったので、質問をさせていただきました。
現在は、ある帳票を作成する際に使用している「DistinctCount」で悩んでおります。メジャーに変数を追加し、用意されている「個別のカウント」の設定を用いて、
該当カラムに存在するレコードの種類数を得たいと考えております。NULLのレコードをカウントしない結果を得たいのですが、
現在の設定では、NULLのレコードをカウントしてしまっております。NULLのレコードをカウントしてしまっていると判断したのは、
該当カラムの全てのレコードをNULLと設定した際に得られた結果が「1」となったためです。
この課題を解決する手法、設定、もしくはその他の手法で何かよいアイデアがありましたら、
皆様より御教授いただけたら幸いです。
現状は以下のとおりです。
1:環境
SQL Server 2005 Analysis Service2:設定
a:メジャーに変数「回数」を作成し、「個別のカウント」に設定。該当カラム内の種類数をカウント。
b:プロパティの設定は以下のようになっております。(一部です)
AgregateFunction:DistinctCount
NullProcessing:Automatic
InvalidXmlCharacters:Preserve
Triming:Right
すべての返信
-
-
これはMDX式を用いて、計算を行うとよいという意味でしょうか?
いえ、データソースビューの段階で、ファクトテーブルの計上したいデータをSQLクエリ
を用いて条件付けするということです。
VS2005のソリューションエクスプローラが仮に以下のように表示されていると思います。
XXXX_PROJECT
+ データソース
| |- MyDataSource
+ データソースビュー
| |- MyDataSourceView (←ここを選択)
+ キューブ
| |- MyCube
| (略)
MyDataSourceViewをダブルクリックすればファクトテーブル⇔ディメンションテーブルの
関連が表示されると思います。
sokayamaさんのファクトがどのようになっているか分かりませんが、ファクトテーブルを
名前つきクエリに変更して、WHERE XXX IS NOT NULL、で計上されるであろうNULL
レコードを取り除く、ということです。
MDX式の設定する方法を簡単にでも教えていただけませんでしょうか。
MDXで参照可能な最小単位はセル(ディメンションが交差するポイント)ですから、
この問題をMDXで解決はできないと思われます。
前回も書きましたが、計上された値に対して疑いがあるのであれば、ドリルスルーで
確認を行ってみてください。
1. プロジェクトエクスプローラからキューブ(仮に、MyCube)を選択
2. [アクション]タブを選択
3. "アクションオーガナイザ"上で、ポップアップメニューから[新しいアクション]を選択
4. <<名前>>を適当(仮に、"My Drill Througt")に入力
5. メジャーグループのメンバ、及び関連するディメンションを追加。
6. 構成を保存して、キューブを処理
7. [ブラウザ]タブを選択して、ピボットにディメンション、メジャーを配置
8. 値が疑わしいセルを選択して、ポップアップメニューから[My Drill Througt]を選択
9. データサンプルビューア上でどのレコードが計上されたのか確認