SSAS按订购产品数量计算订单的最佳方式

时间:2012-06-08 10:22:34

标签: ssas mdx

我正在寻找实施措施的最佳方式,根据订购的产品数量来计算订单。

有一个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表达最好?

感谢。

2 个答案:

答案 0 :(得分:1)

您遇到的问题是您只能按尺寸生成计数。在这种情况下,您的尺寸是订购的产品(1,2,3等)您的选择是创建具有可能性范围(繁琐)的物理尺寸,或创建尺寸的“虚拟”成员与计算相同的事情(繁琐且可能是性能问题)。我倾向于为订购的产品创建维度,然后使用SQL查询创建事实表,并将维度和度量值组添加到多维数据集。从长远来看,实现起来会更容易,通过物理实例化计数,您将获得更好的查询性能。

答案 1 :(得分:0)

您可以根据产品定义尺寸 然后根据您命名为ProductOrdered的事实表来测量组,  然后,您可以根据IOrder列定义不同的计数度量(例如[IOrderdistinctcount]

之后你可以使用

select 
{IOrderdstinccount} on 0,
[dim Product].[product].[Product].members on 1
from [Cube]