[英]SSAS MDX query, Filter rows by sales people
我正在学习如何使用MDX(SQL Server 2012)查询来查询多维数据集。 我面临着挑战。 我们有一个销售人员层次结构,一个存储过程返回一个表,其中所有销售人员都在经理下工作。 我有一个经典的销售多维数据集,其中FactSales PK是发票编号和发票行以及我们所有销售人员的维度。
如何过滤销售人员在表中的发票?
像这样,但翻译成MDX:
从SalesPerson所在的销售中选择*(从#salespeople选择SalesPerson)
我认为这可行的唯一方法是动态编写查询并在过滤器中添加每个销售人员,但我认为这并不是最佳选择,我们可以有200或400个人要从中返回销售收入。
谢谢!
如果包含销售人员的维度包含层次结构(谁为谁工作),则无需使用存储过程即可解决挑战。 假设您的经理被命名为“ John Doe”,而您的销售人员层次结构被命名为[Sales Person].[Sales Person]
。 然后使用
[Sales Person].[Sales Person].[John Doe].Children
在查询中,如果您想查看直接为John工作的人员的销售量,您已经完成了。 如果希望看到John本人以及每个人直接或间接为他工作,可以使用Descendants
函数,如下所示:
Descendants([Sales Person].[Sales Person].[John Doe], 0, SELF_AND_AFTER)
此功能有许多变体, 在此处记录 。
在Microsoft示例Adventure Works多维数据集中,相似的层次结构称为[Employee].[Employees]
,您可以运行以下查询:
SELECT {
[Measures].[Reseller Sales Amount]
}
*
[Date].[Calendar].[Calendar Year].Members
ON COLUMNS,
Descendants([Employee].[Employees].[Jean E. Trenary], 0, SELF_AND_AFTER)
ON ROWS
FROM [Adventure Works]
查看直接或间接为“ Jean E. Trenary”工作的员工的销售情况。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.