MDX查询:如何获取层级父成员对应子成员的Internet Sales Amount最大值
MDX查询实现方案
核心实现逻辑
你需要的效果可以通过MDX的MAX函数搭配DESCENDANTS函数实现,核心思路是先获取当前分类成员下所有子层级的成员集合,再遍历集合取销售指标的最大值。
适配需求的查询代码(输出结果和预期完全匹配)
WITH -- 定义计算成员:取当前产品分类下所有子分类的最大互联网销售额 MEMBER [Measures].[Max Subcategory Internet Sales] AS MAX( DESCENDANTS([Product].[Product Categories].CurrentMember, [Product].[Product Categories].[Subcategory]), [Measures].[Internet Sales Amount] ) SELECT { [Measures].[Max Subcategory Internet Sales] } ON 0, -- 列轴放计算度量值 { [Product].[Product Categories].[Category].Members -- 行轴放所有产品分类 } ON 1 FROM [Adventure Works]
查询结果说明
运行上述查询后,会直接输出你需要的结果:
- Accessories: $245,529.32
- Bikes: $14,520,584.04
- Clothing: $172,950.68
拓展用法(可选)
如果你需要查询每个产品子分类(Subcategory)下所有产品的最大销售额,只需修改计算成员中DESCENDANTS指定的层级即可,参考代码如下:
WITH MEMBER [Measures].[Max Product Internet Sales] AS MAX( DESCENDANTS([Product].[Product Categories].CurrentMember, [Product].[Product Categories].[Product]), [Measures].[Internet Sales Amount] ) SELECT {[Measures].[Max Product Internet Sales]} ON 0, {[Product].[Product Categories].[Subcategory].Members} ON 1 FROM [Adventure Works]
函数说明
DESCENDANTS:返回指定成员下对应层级的所有后代成员,可灵活调整定位到你需要的子层级MAX:遍历输入的成员集合,返回指定度量值的最大值
内容的提问来源于stack exchange,提问作者Toàn Đoàn
相关产品推荐
相关产品推荐

