我正在寻找实施措施的最佳方式,根据订购的产品数量来计算订单。
有一个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表达最好?
感谢。
答案 0 :(得分:1)
您遇到的问题是您只能按尺寸生成计数。在这种情况下,您的尺寸是订购的产品(1,2,3等)您的选择是创建具有可能性范围(繁琐)的物理尺寸,或创建尺寸的“虚拟”成员与计算相同的事情(繁琐且可能是性能问题)。我倾向于为订购的产品创建维度,然后使用SQL查询创建事实表,并将维度和度量值组添加到多维数据集。从长远来看,实现起来会更容易,通过物理实例化计数,您将获得更好的查询性能。
答案 1 :(得分:0)
您可以根据产品定义尺寸
然后根据您命名为ProductOrdered的事实表来测量组,
然后,您可以根据IOrder列定义不同的计数度量(例如[IOrderdistinctcount]
)
之后你可以使用
select
{IOrderdstinccount} on 0,
[dim Product].[product].[Product].members on 1
from [Cube]