0

我正在寻找实现按订购产品数量计算订单的最佳方法。

ProductsOrdered有一个事实表,像这样

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

对于每个订单,表中都有所订购的每种产品的行。

我想要一个衡量一个产品订购了多少个,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 回答