powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / [MS AS 2K] ADO MD Cellset - медленная выборка
5 сообщений из 5, страница 1 из 1
[MS AS 2K] ADO MD Cellset - медленная выборка
    #32593219
Gvynt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сталкивался ли кто-нибудь с тем, что выборка результатов из Cellset'а происходит немеряно долго? Например, следующий код на C#:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
	private void treeWalk(ADOMD.ICellset cellset, int level, int coordLength)
	{
		object[] coords = new object[coordLength];
		reqRun(cellset,  0 , coords);
	}

	private void reqRun(ADOMD.ICellset cellset, int level, object [] coords)
	{		
		for(int i= 0 ;i<cellset.Axes[level].Positions.Count;i++)
		{				
			coords[level] = i; 				
			if(level == cellset.Axes.Count -  1 )  
			{
				ADOMD.Cell cell = cellset.get_Item(ref coords);
				// обработка поскипана
			}
			else 
			{
				reqRun(cellset, level+ 1 , coords);
			}
		}
	}
выполняется порядка пол-минуты (на P4 2.6 GHz, 256 MB) обходя за это время каких-то 40 тыс. ячеек, большинство из которых к тому же нуловые.
При этом сам cellset формируется значительно быстрее (по крайней мере, быстрее, чем за секунду).
Понятно, что используя NonEmptyCrossjoin можно значительно уменьшить результирующий cellset, но всё-таки

какие есть идеи по повышению производительности?
...
Рейтинг: 0 / 0
[MS AS 2K] ADO MD Cellset - медленная выборка
    #32594119
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вы MDX-запрос покажите - собака скорее всего там зарыта.
...
Рейтинг: 0 / 0
[MS AS 2K] ADO MD Cellset - медленная выборка
    #32594128
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cell.Value рассчитывается в PivotTableServices тогда, когда к нему обратились. То есть если у вас там хитрый calculated member, то "CellSet" вы получите быстро, но в нем будут только Axes, а значения Cells будуи расчитыватся по мере обращкния к ним.
...
Рейтинг: 0 / 0
[MS AS 2K] ADO MD Cellset - медленная выборка
    #32595078
Gvynt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfireВы MDX-запрос покажите - собака скорее всего там зарыта.
Дело в том, что запросы генерятся с клиента и м/б в принципе любыми. Сейчас попробую создать такую ситуацию на фудмарте.

backfireCell.Value рассчитывается в PivotTableServices тогда, когда к нему обратились. То есть если у вас там хитрый calculated member, то "CellSet" вы получите быстро, но в нем будут только Axes, а значения Cells будуи расчитыватся по мере обращкния к ним.
Досадно, я не знал, что оно считается в ленивом режиме:( Но всё равно довольно медленно:(
...
Рейтинг: 0 / 0
[MS AS 2K] ADO MD Cellset - медленная выборка
    #32595193
Gvynt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, запрос к фудмарту
Код: plaintext
1.
2.
3.
4.
select {[Measures].[Unit Sales]} on axis( 0 ), 
NON EMPTY {[Customers].Members} 
on axis( 1 ) 
from Sales
Обрабатывался 2 секунды, обойдя 5664 ячейки.

Запрос
Код: plaintext
1.
2.
3.
4.
5.
 
select {[Measures].[Unit Sales]} on axis( 0 ), 
NON EMPTY {[Customers].Members} on axis( 1 ), 
NON EMPTY {[Education Level].Members} on axis ( 2 ) 
from Sales
обрабатывался 45 секунд обойдя 33984 ячейки.

Тут все измерения и меры физические, а не вычисляемые. Время растёт нелинейно относительно количества ячеек. Количество ячеек увеличилось в 6 раз, а затрачиваемое время в 22,5!

Единственная пока мысль - не давать делать большие запросы.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / [MS AS 2K] ADO MD Cellset - медленная выборка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]