我使用SSAS Cube和Datazen(仪表板创建者)。我有一个数据视图(对于valueCode'AZE')有3个参数:
AgeClassCode :'AGE01','AGE02','AGE03',...
StatutCode :'A','B','C','D',...
NiveauCode :'X','Y','W',...
使用此查询,当我使用多个值或每个值只有一个值时,它可以正常工作。 但我希望当参数的值为null时,查询返回参数的所有值。我已经测试了ISEMPTY(@param),ISEMPTY(STRTOSET(@param)),...但是这会返回错误:
预计会有mdx表达式。指定了一个空表达式。
此查询适用于一个或多个值:
SELECT
NON EMPTY
{
[Measures].[Value], [Measures].[PreviousValueYear], [Measures].[PreviousValueReportMonth]
} ON COLUMNS,
NON EMPTY
{
NONEMPTY
(
[EntiteFederal].[ServiceCode].[ServiceCode].ALLMEMBERS *
[EntiteFederal].[EntiteCode].[EntiteCode].ALLMEMBERS *
[ReportMonth].[ReportMonth].[ReportMonth].ALLMEMBERS *
[T].[Year].[Year].ALLMEMBERS
)
} DIMENSION PROPERTIES MEMBER_CAPTION, MEMBER_UNIQUE_NAME ON ROWS
FROM
(
SELECT ( { [ValueType].[ValueCode].&[AZE] } ) ON COLUMNS
FROM (
SELECT ( STRTOSET('{{ @AgeClassCode }}') ) ON COLUMNS
FROM (
SELECT ( STRTOSET('{{ @NiveauCode }}') ) ON COLUMNS
FROM
(
SELECT ( (STRTOSET('{{ @StatutCode }}') ) ON COLUMNS
FROM [MyCube]
)
)
)
)
WHERE
(
IIF( STRTOSET('{{ @StatutCode }}').Count = 1, STRTOSET('{{ @StatutCode }}'), [Statut].[StatutCode].currentmember ),
IIF( STRTOSET('{{ @NiveauCode }}').Count = 1, STRTOSET('{{ @NiveauCode }}'), [Niveau].[NiveauCode].currentmember ),
IIF( STRTOSET('{{ @AgeClassCode }}').Count = 1, STRTOSET('{{ @AgeClassCode }}'), [AgeClass].[AgeClassCode].currentmember ),
[ValueType].[ValueCode].&[AZE]
)
我需要改变什么?
编辑:
测试strtoset()
,好的解决方案是
isError()
答案 0 :(得分:1)
使用strToSet
或strToMember
时,您需要提供代表有效mdx
的字符串,例如这些就可以了:
strToSet("[AgeClassCode].[AgeClassCode].members")
strToMember("[AgeClassCode].[AgeClassCode].[AGE01]")
这是无效的,因为NULL
不是字符串,或代表mdx的东西:
strToSet(NULL)
因此,如果在您的客户端中,您希望NULL表示所有成员,那么您需要将NULL转换为字符串“[AgeClassCode]。[AgeClassCode] .members”,然后才能点击strToSet
。