#sql-server #sql-server-data-tools #ssas-tabular #xmla
#sql-сервер #sql-server-data-tools #ssas-табличный #xmla
Вопрос:
Как создать хранимую процедуру в SQL Server, которая создает динамические разделы и процесс?
Ниже приведен код, который каждый раз создает раздел и выполняет обработку одновременно на понравившемся сервере.
Используя приведенный ниже код, я хотел бы создать динамические множественные разделы и процесс, динамически передавая имя раздела и идентификатор финансового периода в процедуру.
Пожалуйста, предложите.
declare @xmla varchar(max) = '
{
"createOrReplace": {
"object": {
"database": "FlashArchive",
"table": "FORECAST_FLASH",
"partition": "FORECAST_FLASH_368"
},
"partition": {
"name": "FORECAST_FLASH_368",
"source": {
"query": "select * from FORECAST_FLASH_ARCHIVE_V where fiscal_period_id=368",
"dataSource": "itv.world"
}
}
}
}
';
EXEC (@xmla) AT SSAS;
declare @xmlap varchar(max) = '
{
"refresh": {
"type": "automatic",
"objects": [
{
"database": "FlashArchive",
"table": "FORECAST_FLASH",
"partition": "FORECAST_FLASH_368"
}
]
}
}
';
exec (@xmlap) at SSAS;
Комментарии:
1. Итак, в основном вы хотите создать хранимую процедуру, которая занимает финансовый период, который является числом, например, 368, и создает раздел и обновляет этот раздел. Казалось бы, все, что вам нужно сделать, это объединить это число в правильную часть строки. Знаете ли вы, как объединять строки в T-SQL?
2. @Nick. McDermaid Я хочу динамически передавать имя раздела и финансовый период в хранимую процедуру.
3. Если финансовый период
368
, то название разделаFORECAST_FLASH_368
правильное? таким образом, вам нужно передать только финансовый период. Ваша первая задача — выяснить, как создать хранимую prcoedure, которая принимаетVARCHAR
параметр4. @Nick. McDermaid Я создал хранимую процедуру, которая принимает параметр VARCHAR. Я не могу найти, как исправить приведенный выше код в процедуре и выполнить на связанном сервере.
5. Можете ли вы отредактировать свой вопрос и опубликовать всю хранимую процедуру. Если ваше имя параметра
@FiscalPeriod
, то все, что вам нужно сделать, это объединить его с вашими существующими строками. Если у вас возникли проблемы, пожалуйста, объясните подробно.