|
27.04.2015, 10:27 | #1 |
MCTS
|
Вставить данные из OLAP в таблицу Аксапты
Добрый день!
Можно ли из кода взять данные из куба OLAP на SQL Server и поместить некоторые данные из него (например, код клиента и сумма продажи за текущий месяц) в таблицу Аксапты? Если можно, то как это сделать? )
__________________
I could tell you, but then I would have to bill you. |
|
27.04.2015, 10:47 | #2 |
Участник
|
Через прямой SQL https://support.microsoft.com/ru-ru/kb/218592
|
|
|
За это сообщение автора поблагодарили: twilight (5). |
01.05.2015, 11:16 | #3 |
Участник
|
Добрый день!
Можно и используя .NET, как ещё один вариант для версий, поддерживающих подключение сборок: X++: Microsoft.AnalysisServices.AdomdClient.AdomdConnection con; Microsoft.AnalysisServices.AdomdClient.AdomdCommand command; Microsoft.AnalysisServices.AdomdClient.AxisCollection axisCollection; Microsoft.AnalysisServices.AdomdClient.Axis axis0; Microsoft.AnalysisServices.AdomdClient.Axis axis1; Microsoft.AnalysisServices.AdomdClient.Set set; Microsoft.AnalysisServices.AdomdClient.TupleCollection tuplesOnRows; Microsoft.AnalysisServices.AdomdClient.TupleCollection tuplesOnColumns; Microsoft.AnalysisServices.AdomdClient.Tuple tupleRow; Microsoft.AnalysisServices.AdomdClient.Tuple tupleCol; Microsoft.AnalysisServices.AdomdClient.MemberCollection memberCollection; Microsoft.AnalysisServices.AdomdClient.Member member; Microsoft.AnalysisServices.AdomdClient.CellSet cellSet; Microsoft.AnalysisServices.AdomdClient.Cell cell; System.Collections.IEnumerator tuplesOnRowsEnumerator; TMPOLAPData OlapData; str value; str mdx; mdx = @"select {[Measures].[Продажи]} on columns, non empty [Клиенты].[Клиенты].members on rows from [Cube] where условие текущего месяца" ; try { con = new Microsoft.AnalysisServices.AdomdClient.AdomdConnection(); // Set your own connection string con.set_ConnectionString("provider=msolap;Data Source=(local);initial catalog=<YourCubeBase>;"); con.Open(); command = con.CreateCommand(); command.set_CommandText(mdx); cellSet = command.ExecuteCellSet(); axisCollection = cellSet.get_Axes(); axis0 = axisCollection.get_Item(0); set = axis0.get_Set(); tuplesOnColumns = set.get_Tuples(); axis1 = axisCollection.get_Item(1); set = axis1.get_Set(); tuplesOnRows = set.get_Tuples(); // output rows tuplesOnRowsEnumerator = tuplesOnRows.GetEnumerator(); while (tuplesOnRowsEnumerator.MoveNext()) { OlapData.clear(); OlapData.initValue(); // fill dimension tupleRow = tuplesOnRowsEnumerator.get_Current(); memberCollection = tupleRow.get_Members(); member = memberCollection.get_Item(0); OlapData.nameOfelement = member.get_Caption(); // fill measure tupleCol = tuplesOnColumns.get_Item(0); cell = cellSet.get_Item(tupleCol.get_TupleOrdinal(), tupleRow.get_TupleOrdinal()); value = cell.get_FormattedValue(); OlapData.Value = value; OlapData.insert(); } if (!CLRInterop::isNull(con)) { con.Close(); } } catch { error(AIFUtil::getClrErrorMessage()); } |
|
|
За это сообщение автора поблагодарили: twilight (5). |