SQL任务中带有参数的MDX。SSIS

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 时不能。


2
尝试创建一个表达式,而不是使用“?”。 - mxix
1个回答

3
可以将变量用作SQL源语句,并创建一个字符串变量,其中包含将MDX语句与查询参数组合的表达式。可以通过将MDX用双引号括起来来完成此操作。需要转义\,但仅在解析时结果中才会有单个\。要正确地将数字参数连接到语句中,必须将其强制转换为字符串,这可以使用(DT_STR,length,code page)函数来实现。我猜参数的长度不会超过2个数字,因为它是一个月份,因此在DT_STR函数的长度参数中使用2,您可以根据需要进行调整。以下内容可用作字符串SSIS变量的表达式,然后可用作Execute SQL任务的SQL命令。在Execute SQL任务上,将SQLSourceType属性更改为Variable,并选择具有此表达式的变量作为SourceVariable。您还需要在Execute SQL任务的Properties窗口(按F4键)中将DelayValidation设置为true。如果将SSIS变量用作MDX参数而不是像下面的SSIS参数,则将@[$Package :: ParameterName]更改为变量名称,例如 @[User :: VariableName] 。如果它是项目参数,则可以用 Project 替换 Package ,并保留$,即@[$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] + "] ) )"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接