我需要在ssis中动态创建一些本地多维数据集,我不知道如何在此查询中使用参数
CREATE GLOBAL CUBE test
STORAGE 'C:test.cub'
FROM Cube_test(
Measure [Cube_test].[Val],
dimension [Cube_test].[Date_1] (
level [Date_1],
member [Date_1].[Month].&[2],
member [Date_1].[Month].&[?] )
)
我可以在没有参数的情况下运行sql任务,但是当我尝试使用参数运行sql任务时,出现错误"参数不正确"。使用 sql 查询,我可以使用它们,但不能使用 mdx
改用变量作为 SQL 源语句,并使用将 MDX 语句与查询参数组合在一起的表达式创建一个字符串变量。 这可以通过将 MDX 括在双引号中来完成,如下所示。需要按如下所示进行转义,但在解析时,结果中只有一个
。 若要将数值参数正确连接到语句中,必须将其转换为使用
(DT_STR,length,code page)
函数完成的字符串。 我猜参数的长度不会超过 2 位,因为它是一个月,因此 2 用于DT_STR
函数的长度参数,您可以根据需要进行调整。 以下内容可用作字符串 SSIS 变量的表达式,然后可将其用作执行 SQL 任务的 SQL 命令。在"执行 SQL 任务"上,将"SQLSourceType
"属性更改为"变量",然后选择具有此表达式的变量作为SourceVariable
。 还需要在"执行 SQL 任务"的"属性"窗口(按 F4)上将DelayValidation
设置为 true。 如果将 SSIS 变量用作 MDX 参数而不是以下示例中的 SSIS 参数,请将@[$Package::ParameterName]
更改为变量名称,例如@[User::VariableName]
。 如果是项目参数,则可以将参数名称中的Package
替换为Project
,并保留$
,即@[$Project::ParameterName]
.
"CREATE GLOBAL CUBE test
STORAGE 'C:\test.cub'
FROM Cube_test(
Measure [Cube_test].[Val],
dimension [Cube_test].[Date_1] (
level [Date_1],
member [Date_1].[Month].&[2],
member [Date_1].[Month].&[" + (DT_STR, 2, 1252) @[$Package::ParameterName] + "] ) )"