none
伝票明細内で利用している商品の数のカウント方法(Analysis Services 2005)

    質問

  • SQL Server 2005 Analysis Servicesを利用していての質問です。

    伝票明細、商品というテーブルがあるのですが、伝票番号ごとにいくつ商品があるかの集計値をとりたいのですが、うまく組むことができません。
    イメージとしては以下のような出力をしたいです。

    伝票番号    商品種類件数
     ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄       
    1000001       3
    1000002       5

    1つの明細には1つの商品コードが存在しますが、1つの伝票番号単位でみたときに
    10明細あったとしても、明細によっては商品コードが同じケースがあります。
    そのため、明細件数と商品種類件数が一致しないため集計値をとりたいのです。

    ■テーブル
    明細テーブル 主キー(伝票番号、行番号)   属性キー 商品コード、金額、数量
    商品テーブル 主キー(商品コード) 属性キー 商品名

    SQLクエリであらわすと以下のようになります。

    SELECT 伝票番号, COUNT(商品コード)
      FROM 明細テーブル
     GROUP BY 伝票番号


    メジャーとして取得したいのは商品種類の件数になりますので、以下のように
    設定しました。

    メジャー:商品テーブル件数
    ディメンション:伝票明細のキー属性、商品コード、金額、数量


    この状態で配置してキューブブラウザでプレビューすると、
    各伝票番号と金額・数量は正しく集計値が表示されるのですが、
    商品種類の件数については意図している伝票番号ごとの件数ではなく、
    商品マスタ全件の件数が表示されてしまいます。全件で2000件ほどあるのですが、
    どの伝票番号にも2000と表示されてしまいます。
    ただ、キューブブラウザの伝票番号の横のフィールドに商品コードを追加すると
    その横の件数は1になるのですが、その下の小計値は商品マスタ全件となってしまいます。

    このような場合はディメンションやメジャーの設定をどのようにすればよいのでしょうか?

    2012年2月27日 4:57

回答

  • メジャーは、数値項目だけでなく、文字列項目もしていすることができます。

    新しいメジャーを使いするとき使用法を「個別のカウント」にすると、
    項目のリストに「商品コード」が出てくると思います。

    「個別のカウント」(「CountDistinct」)を使えば希望の数値が取得できます。


    ---------------------------------
    Infospire Kayano

    • 回答としてマーク CrimsonPork 2012年2月28日 4:51
    2012年2月27日 13:51

すべての返信

  • メジャーは、数値項目だけでなく、文字列項目もしていすることができます。

    新しいメジャーを使いするとき使用法を「個別のカウント」にすると、
    項目のリストに「商品コード」が出てくると思います。

    「個別のカウント」(「CountDistinct」)を使えば希望の数値が取得できます。


    ---------------------------------
    Infospire Kayano

    • 回答としてマーク CrimsonPork 2012年2月28日 4:51
    2012年2月27日 13:51
  • できました! ありがとうございます。

    学習をはじめたばかりなので、参考までにお伺いしたいのですが、今回個別のカウントでメジャーが作成されたときに、
    メジャーグループがもともとあったグループとは異なるものができました。
    これまでメジャーグループとデータソースビュー上の論理テーブルは1:1の関係になると思い込んでいたため、
    なぜ分かれてしまったのだろうというのが感想です。

    これは特に意識しなくてよいただの見た目上のグループ分けなのでしょうか?
    それとも、メジャーグループが分かれることは、知っておいたほうがよい概念があるのでしょうか?

    2012年2月28日 5:05