如何将当前年份的标志设置为OLAP多维数据集中的计算列?

问题描述 投票:0回答:1

我想在MDX中:

-- T-SQL

SELECT
IIF(cal.CalendarYear = YEAR(GETDATE()), 1, 0) AS ComputedColumn
FROM dim.Application app
JOIN dim.Calendar cal ON cal.DateID = app.ApplicationDateID

我尝试过MDX:

SELECT IIF(ISEMPTY({[Dimension].[Application].[ApplicationDateID]}), 0, 1) ON 1
FROM [DWH OLAP]
WHERE StrToMember("[Calendar].[CalendarYear].&[("+Format(now(),'yyyy')+")]";

这会引发解析器错误。

查询(3,76)解析器:';'的语法是不正确的。 (SELECT IIF(ISEMPTY({[Dimension]。[Application]。[ApplicationDateID]}),0,1)ON 1 FROM [DWH OLAP] WHERE StrToMember(“[Calendar]。[CalendarYear]。&[(”+ Format) (现在的(), 'YYYY')+ “)]”;

我想将该列用作Power BI报告的过滤器标志。帮助MDX将不胜感激。

sql sql-server ssas mdx olap
1个回答
0
投票

您始终需要使用0维启动MDX脚本 - 否则它不是有效的MDX。这应该是有效的:

SELECT 
  IIF(ISEMPTY({[Dimension].[Application].[ApplicationDateID]}), 0, 1) ON 0 //<<<< 0
FROM [DWH OLAP]
WHERE 
   StrToMember("[Calendar].[CalendarYear].&[("+Format(now(),'yyyy')+")]"; //<<experiment with or without the semi-colon it is good practise to include but not mandatory
© www.soinside.com 2019 - 2024. All rights reserved.