Вместо этого используйте переменную в качестве оператора источника SQL и создайте строковую переменную с выражением, которое объединяет инструкцию MDX с параметром для запроса.Это можно сделать, заключив MDX в двойные кавычки следующим образом.\
нужно будет экранировать, как сделано ниже, но только один \
будет в результате, когда он будет проанализирован.Чтобы правильно объединить числовой параметр в оператор, он должен быть приведен к строке, которая выполняется с помощью функции (DT_STR,length,code page)
.Я предполагаю, что длина параметра будет не более 2 цифр, так как это месяц, таким образом, 2 используется для параметра длины функции DT_STR
, и вы можете настроить его при необходимости.Следующее можно использовать в качестве выражения строковой переменной SSIS, которую затем можно использовать в качестве команды SQL для задачи «Выполнение SQL».В задаче «Выполнение SQL» измените свойство SQLSourceType
на «Переменная» и выберите переменную с этим выражением в качестве SourceVariable
.Вам также нужно установить значение DelayValidation
в значение «Истина» в окне «Свойства» (нажмите клавишу F4) задачи «Выполнение SQL».Если переменная 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] + "] ) )"