我是MDX的新手,我想从Client-dimension过滤所有新客户端,显示他们的交易数量。我使用下面的代码。语法上还可以不返回我正在搜索的1931个客户端,但它返回一个空集。
select
{[Measures].[Transaction Count]} on columns
, filter([Client].[Client ID],[Client].[Date Birth] >= '2016-01-01') on rows
from [Transactions];
您的第二个查询如下:
SELECT
NON EMPTY { [Measures].[Transaction Count] } ON COLUMNS
, NON EMPTY { ([Client].[Client ID].[Client ID].ALLMEMBERS ) }
DIMENSION PROPERTIES
MEMBER_CAPTION
, MEMBER_UNIQUE_NAME ON ROWS
FROM (
SELECT
( Filter(
[Client].[Date Birth].[Date Birth].ALLMEMBERS
, Instr( [Client].[Date Birth].currentmember.Properties( 'Member_Caption' ), '2016' ) = 1 ) ) ON COLUMNS
FROM [DW3_Summary]
)
CELL PROPERTIES VALUE
答案 0 :(得分:0)
这是问题[Client].[Date Birth] >= '2016-01-01'
,因为您在运算符>=
的左侧有一个成员类型,而在右侧有一个日期类型。
我认为您可以创建一个度量,它是Date Birth层次结构的值,然后尝试对其进行过滤:
WITH MEMBER [Measures].[DateBirthValue] AS
[Client].[Date Birth].CURRENTMEMBER.MEMBERVALUE
SELECT
[Measures].[Transaction Count] ON 0
, FILTER(
[Client].[Client ID].MEMBERS
,[Measures].[DateBirthValue] >= '2016-01-01'
) ON 1
FROM [Transactions];
不幸的是我没有访问AdvWrks多维数据集来测试上面的内容,所以手指交叉!
SELECT
NON EMPTY [Measures].[Transaction Count] ON 0
, NON EMPTY [Client].[Client ID].[Client ID].ALLMEMBERS
ON ROWS
FROM
(
SELECT
[Client].[Date Birth].[Date Birth].&[2016-01-01]
:
NULL
ON 0
FROM [DW3_Summary]
);