我有一个基于MDX查询的报告:
SELECT {[Measures].[IssueOpened] } ON COLUMNS,
{( STRTOSET("[Assigned To].[Id].[Some],[Assigned To].[Id].[Another]") *
[Priorities].[Id].[Id].ALLMEMBERS ) } ON ROWS
FROM (SELECT (STRTOSET(@createdOn) ) ON COLUMNS
FROM [Reports])
我想更改静态字符串“[Assigned To]。[Id]。[Some]:[Assigned To]。[Id]。[Another]” to parameter:
SELECT {[Measures].[IssueOpened] } ON COLUMNS,
{( STRTOSET(@assignedTo) *
[Priorities].[Id].[Id].ALLMEMBERS ) } ON ROWS
FROM (SELECT (STRTOSET(@createdOn) ) ON COLUMNS
FROM [Reports])
我创建了参数,但此参数的可用值是关系数据集(不是MDX维度)。 允许多个值设置为是。
如何将参数值转换为属性列表:“[Assigned To]。[Id]。[Some],[Assigned To]。[Id]。[Another]”?
答案 0 :(得分:1)
一种方法是为分析服务创建CLR存储过程,它将为您完成,因此它将为您构建SET。你可以在谷歌上找到一些例子。 (即http://andrewdenhertog.com/analysis-services/clr-stored-procedures-in-sql-server-analysis-services-ssas/)
答案 1 :(得分:0)
如果这些来自关系数据源,我只是以MDX期望参数值属性的格式对它们进行编码,例如:
参数标签:有些
参数值:[已分配给]。[Id]。[Some]
有些时候,这很容易在TSQL中创建。有时,如果需要支持动态层次结构,则需要对表达式进行一些小的修改。角色扮演维度就是一个例子。基本概念虽然相似。