Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Calculated cell, member или rollup formula? OLAP 
V
    Опции темы
Shiny
  Дата 21.9.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


разбойница
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 18.9.2006
Где: Киев

Репутация: нет
Всего: 6



Подскажите кто знает, или может натолкните, пожалуйста, на подходящую литературу.

Есть ОЛАП куб. В нём - 4-5 calculated member'ов.
В последнем, который отображает именно то, что требуется, нужно сделать так, что когда по одному(конкретному) из измерений значение isleaf, чтобы отображалось то, что считает формула, а при любой аггрегации на более высокий уровень значение считалось не по общей формуле для calculated member'а, а раскрывалось до списка isleaf'ов и брало их среднее значение.

Перепробовала массу вариантов, среди них: соответствующее написание самого calculated member'а, написание  calculated cell'а, изменение измерения в Custom rollup formula.
В результате я ни разу не увидела того, чтоо мне надо, и вот по какой причине - ВРЕМЯ.
В правильности написания всех трёх вариантов я уверена на 99%, когда я убираю это последнее условие куб работает почти молниеносно, но как только ставлю одну из этих надстроек - всё... пиши пропало...
Что делать?
Куда копать?

MS SQl Server 2000, MS Analysis Server, БД на десятки миллионов записей.
PM MAIL   Вверх
Vit
Дата 22.9.2006, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Calculated field и проиндексировать его?


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Shiny
Дата 25.9.2006, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


разбойница
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 18.9.2006
Где: Киев

Репутация: нет
Всего: 6



Цитата

Calculated field и проиндексировать его? 


Calculated field - что это? Я такое даже в хелпе не нашла...
Может имеется ввиду Calculated cell?
А как его проиндексировать?
PM MAIL   Вверх
Vit
Дата 25.9.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Нет, я имел ввиду, что любой анализ данных работает быстрее на индексированных полях. Если у вас какое-то значение вычисляемое на основании значений таблицы (например в таблице есть цена и количество, а вы включаете в обработку  значение цена*количество), то для этого вычисляемого значения может иметь смысл сделать вычисляемое поле в таблице и по нему создать индекс (благо MS SQL Server поддерживает индексирование вычисляемых полей). И в анализе использовать не вычисляемое значение, а вычисляемое поле... Это не всегда работает, но если по логике такая технология подходит то имеет смысл попробовать.


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Shiny
Дата 27.9.2006, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


разбойница
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 18.9.2006
Где: Киев

Репутация: нет
Всего: 6



Да нет, если бы я могла результат вычисления посчитать в MS SQL было бы гораздо проще
А у меня рассчитывается дистрибьюция, это - результат вычислений 4-х calculated member' ов...  А в каждом из них - и кроссджойны, и лукапы в другие кубы и т.д. и т.п.... smile 
PM MAIL   Вверх
Vit
Дата 27.9.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Ну тогда сложно... думай в сторону упрощения самого анализа... Например для анализа создавать специальные таблицы в которых данные во-первых максимально денормализировать, во-вторых отобрать только используемые в анализе поля, в третьих сделать все промежуточные вычисления по максимуму, и в червёртых добавить индексов на "всё что движется"...

Если есть ссылки на какие-то другие вычисляемые объекты, то можно сначала сделать их записать результаты во временные таблицы...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Shiny
Дата 27.9.2006, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


разбойница
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 18.9.2006
Где: Киев

Репутация: нет
Всего: 6



Да, я уже об этом думала, но временные таблицы будут таких размеров - ого-го...
Боюсь как бы от моих экспериментов не накрылось всё что можно...
И так база мягко говоря немаленькая, а с ними так вообще...
Но надо пробовать, потому что процесс застрял...  smile 
PM MAIL   Вверх
Vit
Дата 27.9.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Ну во-первых для анализа вовсе не нужны все поля, как правило не нужны "тяжёлые" мемо, блобы, и диннные строки с адресами, кроме того обычно не нужны данные по всем строкам, нужны данные за определённые временные интервалы, только активные клиенты и т.п... Так что даже на самых навороченных базах данных временные таблицы для репортов как правило не превосходят по размерам 5-10% от реальных таблиц, как правило база данных должна иметь соответствующие резервы для роста... 


А логика в общем-то такова - какие бы кубы и репорты вы не строили, в конечном итоге они сводятся к вполне банальным Select.... А теперь представим себе обычный запрос:

Код

Select * From t1
inner join t2 on t1.f=t2.f
inner join t3 on t3.g=t2.g
Where t1.s=1 and t2.b=3


В данном случае участвует выборка по 6 полям! А значит будут использоваться только какие-то индексы так как вряд ли будет в таблице существовать составной индекс на все эти поля... А значит число вариантов для плана выполнения такого запроса будет значительным... Если запрос усложнить раза в 3, то количество вариантов его выполнения окажется за пределами возможностей перебора SQL Server'a - т.е. анализ скорости работы каждого варианта выполнения запроса при использовании каждого доступного индекса окажется столь долгим, что SQL Server просто не будет над этим думать, возьмёт средне-потолочный наиболее красивый индекс, отберёт данные а потом будет тупо сканировать все остальные объекты на оставшиеся условия... Если же предварительно отобрать данные и занести в отдельные временные таблицы можно существенно сократить время, так как это позволит гораздо более толково выполнять запросы.  У меня таким способом удавалось сократить время выполнения некоторых запросов на 1-2 порядка.



--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Mephisto
Дата 30.9.2006, 04:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Волкъ
***


Профиль
Группа: Завсегдатай
Сообщений: 1818
Регистрация: 27.8.2003
Где: Питер

Репутация: нет
Всего: 34



Цитата(Vit @  27.9.2006,  21:19 Найти цитируемый пост)
Так что даже на самых навороченных базах данных временные таблицы для репортов как правило не превосходят по размерам 5-10% от реальных таблиц

Насколько я знаю задача у человека и стоит постоянно проводить расчеты над полным перечнем данных! И расчетные ячейки могут ссылаться на данные из всего обьема. smile
PM   Вверх
Shiny
Дата 4.10.2006, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


разбойница
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 18.9.2006
Где: Киев

Репутация: нет
Всего: 6



ВСЁ...
Победила  smile 
Расскажу как - вдруг кому понадобится
В SQL Server'е делать какие-либо аггрегации оказалось невозможным, "в лоб" тормозило невероятно, поэтому я сделала ещё один дополнительный куб и часть условий и вычислений "нацепила" на него, распределив таким образом нагрузку на 2 куба.
+ нашла у себя один минус.
В одном измерении у меня было связано 5 таблиц, одна пара была связана полем типа варчар. Это смерть...
ВСЁ
Теперь только Интеджер!

Mephisto,  спасибо за PointUID  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1115 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.