Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / [MS AS 2K] ADO MD Cellset - медленная выборка / 5 сообщений из 5, страница 1 из 1
07.07.2004, 13:05
    #32593219
Gvynt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MS AS 2K] ADO MD Cellset - медленная выборка
Сталкивался ли кто-нибудь с тем, что выборка результатов из 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
07.07.2004, 18:24
    #32594119
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MS AS 2K] ADO MD Cellset - медленная выборка
Вы MDX-запрос покажите - собака скорее всего там зарыта.
...
Рейтинг: 0 / 0
07.07.2004, 18:27
    #32594128
Владимир Штепа
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MS AS 2K] ADO MD Cellset - медленная выборка
Cell.Value рассчитывается в PivotTableServices тогда, когда к нему обратились. То есть если у вас там хитрый calculated member, то "CellSet" вы получите быстро, но в нем будут только Axes, а значения Cells будуи расчитыватся по мере обращкния к ним.
...
Рейтинг: 0 / 0
08.07.2004, 12:06
    #32595078
Gvynt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MS AS 2K] ADO MD Cellset - медленная выборка
backfireВы MDX-запрос покажите - собака скорее всего там зарыта.
Дело в том, что запросы генерятся с клиента и м/б в принципе любыми. Сейчас попробую создать такую ситуацию на фудмарте.

backfireCell.Value рассчитывается в PivotTableServices тогда, когда к нему обратились. То есть если у вас там хитрый calculated member, то "CellSet" вы получите быстро, но в нем будут только Axes, а значения Cells будуи расчитыватся по мере обращкния к ним.
Досадно, я не знал, что оно считается в ленивом режиме:( Но всё равно довольно медленно:(
...
Рейтинг: 0 / 0
08.07.2004, 12:39
    #32595193
Gvynt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MS AS 2K] ADO MD Cellset - медленная выборка
Итак, запрос к фудмарту
Код: 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
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / [MS AS 2K] ADO MD Cellset - медленная выборка / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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