#sql-server #ssis #mdx #ssis-2012 #mdx-query
#sql-сервер #ssis #многомерные выражения #ssis-2012 #многомерное выражение-запрос
Вопрос:
Мне нужно динамически создать несколько локальных кубов в 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].amp;[2],
member [Date_1].[Month].amp;[?] )
)
Я могу запустить задачу sql без параметров, но когда я пытаюсь запустить задачу sql с параметрами, выдается ошибка «неверный параметр». С sql-запросом я могу их использовать, но не с многомерными выражениями
Комментарии:
1. попробуйте создать его как выражение вместо использования ‘?’
Ответ №1:
Вместо этого используйте переменную в качестве инструкции источника SQL и создайте строковую переменную с выражением, которое объединяет многомерное выражение с параметром для запроса. Это можно сделать, заключив многомерное выражение в двойные кавычки следующим образом.
Необходимо будет экранировать, как показано ниже, но при анализе в результате будет только один
код. Чтобы правильно объединить числовой параметр в инструкцию, он должен быть преобразован в строку, что выполняется с помощью (DT_STR,length,code page)
функции. Я предполагаю, что длина параметра будет не более 2 цифр, поскольку это месяц, таким образом, 2 используется для параметра длины DT_STR
функции, и вы можете настроить это по мере необходимости. Следующее может быть использовано в качестве выражения строковой переменной SSIS, которая затем может быть использована в качестве команды SQL для выполнения задачи SQL. При выполнении задачи SQL измените SQLSourceType
свойство на переменную и выберите переменную с этим выражением в качестве SourceVariable
. Вы также захотите установить DelayValidation
значение true в окне свойств (нажмите F4) задачи Execute SQL. Если в качестве параметра многомерных выражений используется переменная SSIS вместо параметра 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].amp;[2],
member [Date_1].[Month].amp;[" (DT_STR, 2, 1252) @[$Package::ParameterName] "] ) )"