mdx 聚合函数

聚合函数Aggregation(set_express, numeric_express), Aggregation(http://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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/296586.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

被小学数学题套路到哭!这些“逆天”题目,谁做谁知道…

全世界只有3.14 % 的人关注了爆炸吧知识看着孩子的作业题,有多少爸爸妈妈感叹着,幸亏自己毕业早,要不然小学都不能毕业!这不,最近一道简单的小学数学题,又刷爆了家长们的朋友圈。一起往下看。算一算图中的这…

ASP.NET性能优化之构建自定义文件缓存

ASP.NET的输出缓存(即静态HTML)在.NET4.0前一直是基于内存的。这意味着如果我们的站点含有大量的缓存,则很容易消耗掉本机内存。现在,借助于.NET4.0中的OutputCacheProvider,我们可以有多种选择创建自己的缓存。如&…

《Redis核心技术与实战》学习总结(1)

【Redis】| 总结/Edison Zhou0写在开头作为Key/Value键值数据库,Redis的应用非常广泛。在之前多年的工作生涯中,我也只是关注了零散的技术点,没有对Redis建立起一套整体观,但只有建立了系统整体观,才能更好地定位问题和…

饿了么翻车,美团被质疑,马云也赔了40亿,这项技术为什么让人害怕?

全世界只有3.14 % 的人关注了爆炸吧知识人类还没用力AI可能就倒下了8日,一篇《外卖骑手,困在系统里》的文章刷爆了朋友圈。看过的人多半都不好受,除了作为社畜感叹生活不易外,就是感叹外卖系统的AI算法对人类的裹挟是那么的残酷。…

如何强制 .NET 程序以 管理员模式 运行 ?

咨询区 Gold:我有一个 winform 程序部署客户的PC机上,请问我如何通过编码的形式强制让程序以管理员模式运行?回答区 Gaspa79:如果你用的是 Visual Studio 2019,可以通过工具去配置,右键 项目 -> 新建项 …

bitmap 转byte[]后读取_闲谈redis的bitmap

bitmap的原理bitmap就是通过最小的单位bit(8bit 1b 0.001kb)来进行0或者1的设置,表示某个元素对应的值或者状态。一个bit的值,或者是0,或者是1;也就是说一个bit能存储的最多信息是2。优点基于最小的单位bit进行存储,…

序1--年轻正当时(特权)

序1 年轻正当时 这本所谓的书,恐怕不一定能够带还没入门的U杀进FPGA开发的大门,当然也肯定不能达到进阶的目的。但是,姑且应了Bingo老弟所谓的对“图像的直觉”,确实图文并茂的从某一个山寨面把FPGA开发赤裸裸的展现给了大家。 被…

Windows 11 dapr 环境安装

安装其实很简单按照dapr官网操作步骤其实没什么大问题的,不过在没有好的网络访问github的情况下真是有点揪心啦!推荐使用 工具 fastgithub 访问githubFast:Github让Github畅通无阻windows 11 下的安装方式1.安装dapr cli 直接到Releases dapr/cli GitH…

日本原装进口雪平锅,煎炸炒煮全搞定,日本人用了 1000 年

▲ 点击查看小爆我虽然热爱烹饪,但不得不说「下厨房」,也是个坑。光是锅,我就要买好几个。为了蒸包子馒头买蒸锅,为了炒菜买炒锅,偶尔想精致喝热牛奶又买了小奶锅,为了煲汤、做点卤味解解馋,买炖…

Android开发学习笔记:浅谈Content Provider

一.Content Provider的概念介绍 Content Providers是所有应用程序之间数据存储和检索的桥梁,它使得各个应用程序之间实现数据共享。是应用程序间共享数据的唯一途径。Content Provider 主要的功能就是存储并检索数据以及向其他应用程序提供访问数据的接口。其中包括…

VS2010插件之NuGet

Visual Studio(简写VS)是.net程序员开发必不可少的开发工具,随着VS的版本不断的升级和使用用户的扩大,现在针对VS开发了许多的开源免费的插件,大大的方便了程序员的开发,提高了开发效率。今天,我…

C# WPF Caliburn.Micro框架下利用Mef加载其它项目界面

01—前言MEF是微软自家的托管可扩展框架,在这里我把它用成了ioc容器。在Caliburn.Micro框架下,view和viewmodel被注入到CompositionContainer容器中,然后通过名称可以实现view和viewmodel的匹配。利用这一特点,在多人合作项目开发…

女朋友竟然提出这种奇怪的要求......

1 为什么女朋友会提这么奇怪的要求?▼2 我的数学能力▼3 一看就是老龙人了阁下是古墓派传人吧▼4 如果可爱能晋级的话你已经赢了▼5 要做个与众不同的垃圾▼6 女孩子喜欢帅哥是不分年龄的▼‍‍7 单身狗又做错了什么呢?▼扫描这个二维码你将会有机…

Java编码规范,在您进行编码之前应该阅读的规范

为什么80%的码农都做不了架构师?>>> 本文转载于:http://www.web3d.com.cn/new/teach/java3d/2006/11/13/363276161.html Java编码规范 说明 1.1 为什么要有编码规范 编码规范对于程序员而言尤为重要,有以下几个原因: …

.NET Core 如何调试 CPU 爆高?

在这篇文章中我们将会分析一个 CPU 爆高的案例,测试demo链接 :https://docs.microsoft.com/en-us/samples/dotnet/samples/diagnostic-scenarios/ 。你将会学到:如何使用 dotnet-counters 确定真实的 cpu 使用率。使用 dotnet-trace 追踪代码…

[OIBH] 糖果盒(Candy Box)——又一个最大子矩形

http://codewaysky.sinaapp.com/problem.php?id1056 这题和奶牛浴场略有区别,奶牛浴场只需要求出最大子矩形,而这题要求的是最大权重子矩形,不一定要最大的面积,但要最大的权重和 思路是先求出每个最大子矩形,然后求出…

日本第一赘婿!他入赘近20年拿下诺贝尔奖,成名后不忘教光棍讨老婆......

全世界只有3.14 % 的人关注了爆炸吧知识谁能凭感性要诺贝尔奖私有1949年12月10号,日本民众发出了暌违多年的欢呼声,因为诺贝尔奖史无前例地颁给了一位日本物理学家——汤川秀树。报道汤川秀树获奖新闻的报纸获奖后,在自传《旅人:一…

修改mongodb最大查询数_WebFlux系列(十二)MongoDB应用,新增、修改、查询、删除

#Java#Spring#SpringBoot#Mongo#reactor#webflux#数据库#新增#修改#查询#删除#Spring Boot WebFlux Mongo数据库新增、删除、查询、修改视频讲解 : https://www.bilibili.com/video/av84240038/Employee.javapackage com.example.spring.webfluxmongo;import lombok.AllArgsCon…

为什么每个理发店门口都有彩色的柱子?你不知道吧

全世界只有3.14 % 的人关注了爆炸吧知识为什么街上的理发店门口都有一根旋转着的彩色灯柱?好学的小编忍不住去寻找真相...理发店门口彩色的柱子这根彩柱与医疗有关彩柱通常是3种颜色,白红蓝。一般认为:白色绷带,红色绷带上的血(动…

是否显示展开_Creo7.0教程之绝对精度对钣金件展开的作用详解

在讲Creo7.0绝对精度对钣金展开的帮助之前,我们有必要先来说明一下Creo的精度定义。刚使用Creo7.0版本的新建模型,很多网友就问,怎么模板文件中有两个同样单位的选择,“abs”和“rel”有什么区别?新建文件选项其实这就…