mdx 聚合函数

聚合函数Aggregation(set_express, numeric_express), Aggregationhttp://msdn.microsoft.com/zh-cn/library/ms145524.aspx)执行求和函数, 如果和某些其他求和函数配合的话, 会有变化. 看一个例子

SELECT
{
    ([Measures].[Reseller Sales Amount]),
    ([Measures].[Reseller Transaction Count]),
    ([Measures].[Reseller Order Count])
} ON COLUMNS,
TopCount(
    {[Product].[Subcategory].[Subcategory].Members},
    5,
    ([Measures].[Reseller Sales Amount])
) + 
{([Product].[Subcategory].[All Products])}
ON ROWS
FROM [Step-by-Step]

很简单. 按销售量排序排名前五的销售小类别的三个值的表现. 第一个是金额, 是sum, 第二个是交易数量, 是count(*), 第三个是distinctCount(*), 订单数量.

image想增加一行. 汇总一下这前五的信息. 于是, 我们写一个计算列.如下

因为是添加一行, 那么肯定是用类似于上面的元组+元组. 所以计算列是属于[Product].[Subcategory].元组的. 定义如下

with 
member [Product].[Subcategory].[top5] as
    sum(
        topcount([Product].[Subcategory].[Subcategory].Members,
            5,
            [Measures].[Reseller Sales Amount]
            )
        ,[Measures].[Reseller Sales Amount]
        )    

得到

image哦, 错了. 这只是得到是Sales Amount一个死的Sum值. 在这里我们忽视了一个东西, CurrentMember, 类似于游标指针似的一个玩意. 它不仅是用在Measures被Dim打乱上(列上被行的打乱), 还可以用在Dim在不同的Measures上的表现, (行被列限定. ).  在这里, colomn上的measures有三个成员. 因此可以用

image

这样得到的结果是image可是最后一个值的5026明显不是distinctCount, 而是一个简单是sum运算. 这违背了我们的初衷. 这个时候, 就不能使用简单是sum聚合了. 需要保持原来聚合的Aggregation函数. 最终结果如下

image

加一个有趣的东西imageimage

 

 

AVG函数.

image这样一个简单的东西. 每年的销售额的订单数. 现在我们需要当年的月平均销售额.

下面我们再来复习一下作用域的概念.

with 
member Measures.MonthValue as
    avg(
        [Measures].[Reseller Sales Amount]
        )

现在是这样. 没有限定任何作用域. 那么这个度量值将会被行维度给打散. 结果如图.

image这是查询出来了每一年的销售额. 好无聊的操作. 呵呵.

假设给avg第一个参数赋值, set_express 设置为

with 
member Measures.MonthValue as
    avg(
        [Date].[Calendar].[Month].members
        ,
        [Measures].[Reseller Sales Amount]
        )
相当于得到一个死的值. 已经计算完的.  这个值是所有的月份的销售额 之和/月数.

image, 其实我们需要这个值和每个年份做关联, 被打散. 这个时候, 就需要existing关键字出马了.

existing强制在当前的区域内做运算. 理解为, 度量值强制在当前的区域内被切割.

得到image

这个时候, 突然想到. 其实我们在指定月份的时候, 不也是可以指定他的区域吗?

比如这样写.

 
  
 
  
 
  
 
  
 
  
 
 
这样限定了. 月份的成员是属于在行的当前的区域范围内. 结果果然是正确得到了和使用existing一样的.

 

 

WITH
MEMBER [Measures].[Products] AS
Count(
EXISTING {[Product].[Product].[Product].Members}
)
MEMBER [Measures].[Products List] AS
Generate(
EXISTING {[Product].[Product].[Product].Members},
[Product].[Product].CurrentMember.Name,
" .. "
)
SELECT
{
([Measures].[Products]),
([Measures].[Products List])
} ON COLUMNS,
{[Product].[Subcategory].Members} ON ROWS
FROM [Step-by-Step]
;

一个很神奇的东西

image

转载于:https://www.cnblogs.com/jianjialin/archive/2012/09/19/2694108.html

内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值