RefreshBySQL(SqlText: String);
RefreshBySQL(SqlText: string);
SqlText. Текст MDX-запроса.
Метод RefreshBySQL обновляет содержимое каталога ADOMD путем выполнения указанного MDX-запроса.
Если в запросе указан еще не существующий куб ADOMD, то он будет создан.
Имеется ряд ограничений, накладываемых на текст указываемого MDX-запроса:
Ключевое слово NON EMPTY нельзя использовать в предложении оси, вместо него следует использовать функцию NonEmpty. Функция недоступна при работе с базой данных на базе SAP NetWeaver BW;
Условие HAVING нельзя использовать в предложении оси, вместо него следует использовать функцию Filter;
По умолчанию в подзапросах выборки запрещены вычисляемые элементы. Это ограничение можно изменить путем присвоения значения «1» параметру SubQueries в свойстве IAdoMdCatalog.ProviderString.
Для обновления содержимого каталога ADOMD в соответствии с его содержимым на сервере используйте метод IAdoMdCatalogInstance.Refresh.
Для выполнения примера предполагается наличие в репозитории каталога ADOMD с идентификатором «ADOMDTest». В данном каталоге имеются необходимые для создания куба измерения ADOMD. Добавьте ссылки на системные сборки «AdoMd», «Metabase».
Sub UserProc;
Var
MB: IMetabase;
Catalog: IAdoMdCatalogInstance;
MDX: String;
Begin
MB := MetabaseClass.Active;
Catalog := MB.ItemById("ADOMDTest").Open(Null) As IAdoMdCatalogInstance;
//MDX-запрос
MDX := "select [Commodities].[Commodity].members on rows, [Time].[Year].members on columns from [PricesForecast] where [Measures].[Value]";
//Создание нового куба на MDX-запросе
Catalog.RefreshBySQL(MDX);
End Sub UserProc;
При выполнении примера в каталоге ADOMD на базе указанного MDX-запроса будет создан новый куб ADOMD.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.AdoMd;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
Catalog: IAdoMdCatalogInstance;
MDX: String;
Begin
MB := Params.Metabase;
Catalog := MB.ItemById["ADOMDTest"].Open(Null) As IAdoMdCatalogInstance;
//MDX-запрос
MDX := "select [Commodities].[Commodity].members on rows, [Time].[Year].members on columns from [PricesForecast] where [Measures].[Value]";
//Создание нового куба на MDX-запросе
Catalog.RefreshBySQL(MDX);
End Sub;
См. также: