本篇文章记录 SBS 中 MDX 查询原型,可以根据这些查询原型来解决实际项目中的问题。

1. 查询在 2004年1月2日 - 2004年3月1日之间购买过 Bikes 产品的用户。

SELECT ([Product].[Category].[Bikes],[Measures].[Internet Sales Amount]) ON COLUMNS,
NON EMPTY [Customer].[Customer].[Customer].MEMBERS ON ROWS
FROM [Step-by-Step]
WHERE ([Date].[Calendar].[Date].&[]:[Date].[Calendar].[Date].&[])

2. 查询在 2004年1月2日 - 2004年3月1日之间购买过 Bikes 或 Clothing 产品的用户。

SELECT {
([Product].[Category].[Bikes],[Measures].[Internet Sales Amount]),
([Product].[Category].[Clothing],[Measures].[Internet Sales Amount])
}ON COLUMNS,
NON EMPTY [Customer].[Customer].[Customer].MEMBERS ON ROWS
FROM (
SELECT ([Date].[Calendar].[Date].&[]:[Date].[Calendar].[Date].&[]) ON COLUMNS
FROM [Step-by-Step]
)

3. 计算2004年3月1日 - 3月4日之前60天购买了 Bikes 或者 Clothing 产品的用户数量。

WITH
MEMBER [Measures].[CustomerCounts] AS
-- 计算用户总数
COUNT(
NONEMPTY (
-- 取购买过 Bikes 的用户 (当前时间-60天 至 当前时间)
{[Customer].[Customer].[Customer].MEMBERS},
{([Product].[Category].[Bikes],[Measures].[Internet Sales Amount])}
*LASTPERIODS(60,[Date].[Calendar].CurrentMember)
)
+ -- UNION 去掉重复的用户集合
NONEMPTY (
-- 取购买过 Clothing 的用户 (当前时间-60天 至 当前时间)
{[Customer].[Customer].[Customer].MEMBERS},
{([Product].[Category].[Clothing],[Measures].[Internet Sales Amount])}
*LASTPERIODS(60,[Date].[Calendar].CurrentMember)
)
)
-- 前60天的时间名称
MEMBER [Measures].[Pre60DateName] AS
LASTPERIODS(60,[Date].[Calendar].CurrentMember).Item(0).Name
SELECT {
[Measures].[CustomerCounts],
[Measures].[Pre60DateName]
} ON COLUMNS,
[Date].[Calendar].[Date].MEMBERS ON ROWS
FROM
(
-- 测试时间范围
SELECT ([Date].[Calendar].[Date].&[]:[Date].[Calendar].[Date].&[]) ON COLUMNS
FROM [Step-by-Step]
)

4.计算每个月第一天到前60天购买了 Bikes 或者 Clothing 产品的用户数量

WITH
MEMBER [Measures].[CustomerCounts] AS
-- 计算用户总数
COUNT(
NONEMPTY (
-- 取购买过 Bikes 的用户 (当前时间-60天 至 当前时间)
{[Customer].[Customer].[Customer].MEMBERS},
{([Product].[Category].[Bikes],[Measures].[Internet Sales Amount])}
*LASTPERIODS(60,[Date].[Calendar].CurrentMember.FIRSTCHILD)
)
+ -- UNION 去掉重复的用户集合
NONEMPTY (
-- 取购买过 Clothing 的用户 (当前时间-60天 至 当前时间)
{[Customer].[Customer].[Customer].MEMBERS},
{([Product].[Category].[Clothing],[Measures].[Internet Sales Amount])}
*LASTPERIODS(60,[Date].[Calendar].CurrentMember.FIRSTCHILD)
)
)
-- 前60天的时间名称
MEMBER [Measures].[Pre60DateName] AS
LASTPERIODS(60,[Date].[Calendar].CurrentMember.FIRSTCHILD).Item(0).Name
SELECT {
[Measures].[CustomerCounts],
[Measures].[Pre60DateName]
} ON COLUMNS,
[Date].[Calendar].[Month].MEMBERS ON ROWS
FROM
(
-- 测试时间范围
SELECT ([Date].[Calendar].[Date].&[]:[Date].[Calendar].[Date].&[]) ON COLUMNS
FROM [Step-by-Step]
)

更多 BI 文章请参看 BI 系列随笔列表 (SSIS, SSRS, SSAS, MDX, SQL Server)

如果觉得这篇文章看了对您有帮助,请帮助推荐,以方便他人在 BIWORK 博客推荐栏中快速看到这些文章。


MDX 查询原型的更多相关文章

  1. SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表

    SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表 2013-10-09 23:09 by BI Wor ...

  2. 微软BI 之SSRS 系列 - 使用带参数的 MDX 查询实现一个分组聚合功能的报表

    基于数据仓库上的 SSRS 报表展示,一般可以直接通过 SQL 查询,存储过程,视图或者表等多种方式将数据加载并呈现在报表中.但是如果是基于 Cube 多维数据集的数据查询,就不能再使用 SQL 的语 ...

  3. 微软BI 之SSRS 系列 - 如何在 MDX 查询中获取有效的 MEMBER 成员属性作为参数传递

    这篇小文章的来源是 天善问答,比如在报表中要根据点击某一个成员名称然后作为参数传递给自身报表或者下一张报表,这个在普通的 SQL 查询中没有任何问题.但是在 MDX 中查询是有区别的,比如在 MDX ...

  4. 微软BI 之SSRS 系列 - 基于时间段参数的 MDX 查询以及时间日历 Date Picker 的时间类型参数化

    今天在天善问答里看到一个问题,如果我没有理解错的话,它应该是指比如在一个报表中选取一个时间段,然后求出这个时间段的某个 Measure 的 SUM 和.并且同时求出这两个时间点对应的上一年的时间点之间 ...

  5. 微软BI 之SSRS 系列 - 在 Cube 中通过 MDX 查询实现基于父子递归关系的汇总报表

    之前我写了一篇在 SSRS 开发中处理这种父子关系的汇总与聚合的文章 (SSRS 系列 - 使用分组 Group 属性实现基于父子递归关系的汇总报表),示例中的查询是基于 SQL Server 关系型 ...

  6. MDX查询语句

    另:15个经典的MDX查询语句 另:http://www.cnblogs.com/biwork/p/3437959.html 1.排名+排序+量值过滤: WITH member [Measures]. ...

  7. MDX查询SSAS结果--通过adomd.net展示到客户端

    SSAS多维模型建好之后,除了在excel客户端直接链接ssas源拖拽pivot分析使用外,还可以讲要展示的结果集通过MDX语句查询出来,嵌入到程序中,通过运行程序跑出完整的报表.如图所示:

  8. SQL Analysis Services MDX 查询超时 解决办法

    当页面有很多MDX语句查询的时候,会发生超时的情况. 解决办法: SQL Analysis Services所在的服务器(OLAP的文件夹下) 找到: msmdpump.ini 将: <Conf ...

  9. MDX Cookbook 03 - MDX 查询中负数,零和空值 NULL 的格式化处理

    FORMAT_STRING 属性在处理计算成员(通常是度量值成员)的时候会经常使用到,比如指定标准 Standard, 货币 Currency 或者 Percent 百分比格式.除此之外,还可以自定义 ...

随机推荐

  1. linux常用软件安装,常用命令

    jdk [root@localhost]# tar -zxvf jdk-8u144-linux-x64.tar.gz [root@localhost]# vi /etc/profile 在profil ...

  2. Asp.Net Core WebAPI入门整理(三)跨域处理

    一.Core  WebAPI中的跨域处理  1.在使用WebAPI项目的时候基本上都会用到跨域处理 2.Core WebAPI的项目中自带了跨域Cors的处理,不需要单独添加程序包 3.使用方法简单 ...

  3. requirejs模块路径配置问题

    三种情况:一.设置data-main,没配置baseUrl,以data-main的文件为基准:二.设置data-main,配置baseUrl,baseUrl以值以引用require.js的HTML为基 ...

  4. AndroidStudio将html5打包成apk

    我想将html5的动画效果打包成手机app,以方便传播.而在android开发的组件中就直接由webview可以访问网页,另外在android工程中,assets文件夹下的内容是不会在被编译的,因此可 ...

  5. TopCoder FlowerGarden【拓扑排序】

    https://community.topcoder.com/stat?c=problem_statement&pm=1918&rd=5006拓扑排序,每次选择最大的就好了 #incl ...

  6. BZOJP1899ZJOI2004

    老早的一道水题 题意: 上午的训练结束了,THU ACM小组集体去吃午餐,他们一行N人来到了著名的十食堂.这里有两个打饭的窗口,每个窗口同一时刻只能给一个人打饭.由于每个人的口味(以及胃口)不同,所以 ...

  7. P1292 倒酒

    P1292 倒酒这个题有很多模型,这个是一个变形.我令一个解为x两个整数Pa和Pb,分别表示从体积为a ml的酒杯中倒出酒的次数和将酒倒入体积为b ml的酒杯中的次数(酒杯一开始为空).b最后是0,所 ...

  8. window版chrome 57.0.2970.0 (64-bit)滚动条的BUG

    有一个元素div,它有一个子元素ul,给div添加一个:hover样式{color: red},挡鼠标hover div时,字体变红. 当鼠标hover div时,ul字体变红,鼠标hover ul的 ...

  9. Python + Selenium + AutoIt 模拟键盘实现另存为、上传、下载操作详解

    前言 在web页面中,可以使用selenium的定位方式来识别元素,从而来实现页面中的自动化,但对于页面中弹出的文件选择框,selenium就实现不了了,所以就需引用AutoIt工具来实现. Auto ...

  10. LSTM(长短期记忆网络)及其tensorflow代码应用

     本文主要包括: 一.什么是LSTM 二.LSTM的曲线拟合 三.LSTM的分类问题 四.为什么LSTM有助于消除梯度消失 一.什么是LSTM Long Short Term 网络即为LSTM,是一种 ...