MDX对filter函数对维度进行过滤的使用说明

查看维度的信息,需要使用维度name.currentmember.name/value

进行过滤的时候,需要考虑filter作用域的问题,第一个参数一定要包含cube的一个切块,也就是至少包含两个level,这样filter才会正确生效。
对数值型维度进行过滤使用.value函数,返回numeric,
对date型数据进行过滤使用.currentmember.name函数。返回string
对字符型数据进行过滤使用InStr()函数,返回包含的字符的index.

WITH
SET [~ROWS_sale_saleId] AS
    {[sale].[saleId].[saleId].Members}
SET [~ROWS_sale_proId] AS
    {[sale].[proId].[proId].Members}
SET [~ROWS_sale_cusId] AS
    {[sale].[cusId].[cusId].Members}
SET [~ROWS_sale_type] AS
    {[sale].[type].[type].Members}
SET [~ROWS_sale_saleDate] AS
    {[sale].[saleDate].[saleDate].Members}
SET [~ROWS_sale_saleDistrictName] AS
    {[sale].[saleDistrictName].[saleDistrictName].Members}
SELECT
NON EMPTY {[Measures].[sumofsaleId]} ON COLUMNS,
NON EMPTY Filter(NonEmptyCrossJoin([~ROWS_sale_saleId], NonEmptyCrossJoin([~ROWS_sale_proId], NonEmptyCrossJoin([~ROWS_sale_cusId], NonEmptyCrossJoin([~ROWS_sale_type], NonEmptyCrossJoin([~ROWS_sale_saleDate], [~ROWS_sale_saleDistrictName]))))), ((((([sale].[saleDate].currentmember.name > "2017-05-01") AND ([sale].[saleDate].currentmember.name < "2018-04-01")) AND ([sale].[saleId].value > 5)) AND ([sale].[saleId].value < 11)) AND (InStr([sale].[saleDistrictName].currentmember.name, "suzhou") > 0))) ON ROWS
FROM [sale]

转载于:https://my.oschina.net/zhouwang93/blog/1836183

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值