4

我需要在 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

4

1 回答 1

3

改为使用变量作为 SQL 源语句,并使用将 MDX 语句与查询参数相结合的表达式创建字符串变量。这可以通过将 MDX 括在双引号中来完成,如下所示。将\需要如下所示进行转义,但在解析时只有一个\结果会出现在结果中。要将数字参数正确连接到语句中,必须将其转换为使用(DT_STR,length,code page)函数完成的字符串。我猜参数的长度不会超过 2 位数,因为它是一个月,因此 2 用于DT_STR功能,您可以根据需要进行调整。以下可以用作字符串 SSIS 变量的表达式,然后可以将其用作执行 SQL 任务的 SQL 命令。在执行 SQL 任务上,将SQLSourceType属性更改为变量,然后选择具有此表达式的变量作为SourceVariable. 您还需要DelayValidation在执行 SQL 任务的属性窗口(按 F4)上设置为 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] + "] ) )"
于 2019-03-08T16:21:23.760 回答