【问题标题】:SQL task MDX with parameters. SSIS带参数的 SQL 任务 MDX。 SSIS
【发布时间】:2019-03-08 09:03:01
【问题描述】:

我需要在 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-server ssis mdx ssis-2012 mdx-query


【解决方案1】:

改为使用变量作为 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] + "] ) )"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-10
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    • 1970-01-01
    相关资源
    最近更新 更多