0

注文した商品の数で注文をカウントするメジャーを実装する最良の方法を探しています。

このように、ProductsOrdered のファクト テーブルがあります。

CREATE TABLE ProductsOrdered (
    IdOrder UNIQUEIDENTIFIER,
    IdProduct UNIQUEIDENTIFIER,
    OrderDate DATE,
    Quantity INT,
    Price DECIMAL(18,2)
)

注文ごとに、注文された製品の種類ごとにテーブルに行があります。

1 つの製品を注文した数、2 を注文した数などをカウントするメジャーが必要です。

この SQL クエリのように。

SELECT OrderedProductNumber, COUNT(IdOrder) AS NumberOfOrders
FROM (
    SELECT IdOrder, COUNT(IdProduct) AS OrderedProductNumber
    FROM ProductsOrdered
    GROUP BY IdOrder
) t
GROUP BY OrderedProductNumber

最も適切な MDX 式はどれですか?

ありがとう。

4

2 に答える 2

1

あなたが抱えている問題は、次元によってのみカウントを生成できることです。この場合、ディメンションは注文された製品 (1、2、3 など) です。オプションは、可能な範囲の物理ディメンションを作成するか (退屈)、ディメンションが実行する「ダミー」メンバーを作成することです。計算と同じこと (退屈でパフォーマンスの問題の可能性が高い)。注文した製品のディメンションを作成し、SQL クエリを使用してファクト テーブルを作成し、ディメンションとメジャー グループをキューブに追加します。長期的には実装が簡単になり、カウントを物理的にインスタンス化することで、クエリのパフォーマンスが大幅に向上します。

于 2012-06-08T13:37:00.933 に答える
0

製品に基づいてディメンションを定義してから、ProductOrdered という名前のファクト テーブルに基づいてメジャー グループを定義し、IOrder 列に基づいて個別のカウント メジャーを定義できます (例: [IOrderdistinctcount]) 。

その後、使用できます

select 
{IOrderdstinccount} on 0,
[dim Product].[product].[Product].members on 1
from [Cube]
于 2012-07-05T17:19:49.857 に答える