Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
Доброе время суток! Я работаю с MS AS 2000(SP3a) Спроектировал парочку кубов по отгрузкам и приходу товара. Пока все просто (куб, несколько измерений, клиент который генерирует MDX запросы) Какие-то запросы отрабатывают быстро(неск. сек.), какие-то не очень( от 5 до 60 мин ;( ) Думаю над оптимизацией существующей структуры. Но видимо у меня есть проблемы с познанием теории. Может кто нибудь поделится опытом как правильно на практике выставлять число Fact table size. Я у себя выставил 99999999. Уважаемый GoodLeo поднимал этот вопрос, получается что нужно делать для себя какое-то расписание, чтобы вручную делать Design Storage, а нельзя ли этот пересчет количества фактов оптимизировать, например с помощью DSO ?(Я процессинг через него делаю). И еще, не прочувствовал, какой выигрыш дает(даст ли) использование нескольких партиций в кубе(я использую одну).Какова "физика" партиций ? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2005, 13:29 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
menshДоброе время суток! Я работаю с MS AS 2000(SP3a) Спроектировал парочку кубов по отгрузкам и приходу товара. Пока все просто (куб, несколько измерений, клиент который генерирует MDX запросы) Какие-то запросы отрабатывают быстро(неск. сек.), какие-то не очень( от 5 до 60 мин ;( ) Думаю над оптимизацией существующей структуры. Но видимо у меня есть проблемы с познанием теории. Может кто нибудь поделится опытом как правильно на практике выставлять число Fact table size. Я у себя выставил 99999999. Уважаемый GoodLeo поднимал этот вопрос, получается что нужно делать для себя какое-то расписание, чтобы вручную делать Design Storage, а нельзя ли этот пересчет количества фактов оптимизировать, например с помощью DSO ?(Я процессинг через него делаю). И еще, не прочувствовал, какой выигрыш дает(даст ли) использование нескольких партиций в кубе(я использую одну).Какова "физика" партиций ? Спасибо. Если не секрет, что за клиент? 1.Для начала интересно было бы узнать, какие заросы тормозят. 2.Ставить искуственно завышенный размер таблицы фактов - не вижу особого смысла. Как правило такая сумасшедшая просадка по производительности происходит из-за нетривиальных вычислений, а не дорасчета аггрегатов. 3. Аналогично процессингу, можно написать код на c использованием DSO, который пересчитывает размеры всех уровней и таблиц фактов, а затем делает design storage. Изпользуя введенные вами ограничения. 4. Партиция это единица физического storage и процессинга. Использование нескольких разделов в скорости обработки запросов даст прирост только в некоторых, достаточно обособленных случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2005, 13:50 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
Большое спасибо за ответ backfire ! По поводу клиента секрета нет, написал на Delphi с использованием ADO компонент пользователем задаются параметры, внутри генерируются запросы MDX, получаю результат. Решение посредственное, т.к. заточено под конкретные кубы, но руководство устраивает :) Пример тормозящего запроса например вот такой: (посылаю как есть, не судите строго :) ) with set [AAA_PARTNERS] as '{[Партнер].Children}' set [AAA_PRODUCTS] as '{[Товар].Children}' Set [AAA_VENDORS] as '{[Вендоры].&[4004813]}' member [Вендоры].[BBB_VENDORS] as 'Aggregate({[AAA_VENDORS]})' Set [AAA_SALES_M] as '{[Sales Managers].&[8000628]}' member [Sales Managers].[BBB_SALES_M] as 'Aggregate({[AAA_SALES_M]})' member [Measures].[Партнёр-Название] as '[Партнер].CurrentMember.Properties("Партнёр-Название")' Set [AAA_TIMES] as '{[Время].[2005].[Квартал 4].[Декабрь].[49].[1]:[Время].[2005].[Квартал 4].[Декабрь].[53].[27]}' member [Время].[BBB_TIMES] as 'Aggregate({[AAA_TIMES]})' set [AAA_MEASURES] as '{[Measures].[Партнёр-Название],[Measures].[Количество]}' Select [AAA_MEASURES] on AXIS(0), non empty filter(NonEmptyCrossJoin([AAA_PARTNERS],[AAA_PRODUCTS]),([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(0))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(1))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(2))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(3))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(4))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(5))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(6))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(7))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(8))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(9))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(10))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(11))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(12))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(13))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(14))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(15))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(16))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(17))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(18))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(19))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(20))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(21))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(22))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(23))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(24))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(25))>0 or ([Measures],[AAA_VENDORS].Item(0),[AAA_SALES_M].Item(0),[AAA_TIMES].Item(26))>0) on AXIS(1) from "SALES" where ([Вендоры].[BBB_VENDORS],[Sales Managers].[BBB_SALES_M],[Время].[BBB_TIMES]) По поводу пересчета уровней и таблицы фактов, написать код на С я к сожалению не могу, т.к. Си не знаю(ограничен временем, контора на Delphi пишет :) ). Нельзя ли сделать с использованием DTS пакетжей в MS SQL ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2005, 15:03 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
ну блин! Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2005, 20:52 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
1. А чего вы решили, что на C? Можно обойтись и VBScript, ведь DSO это COM-Компонента. На msdn полно примеров таких скриптов (с DSO). 2. Запрос у вас, очень мягко говоря, никудышний. Вы принуждаете сервер заниматься "мазохизмом в извращенной форме" Вы бы изложили кратко структуру куба и того что вы хотите получить этим запрсом, мы бы вам и подказали, "что подкрутить и где подмазать". А пока что ваш запрос выполняется на 99% на стороне клиента и аггрегаты остаются не удел. з.ы. следующий раз публикуя текст запроса придерживайтесь пожалуйста элементарных правил форматирования (даже если ваша программа этого не делает), чтобы это выглядело например так. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.12.2005, 21:27 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
Спасибо уважаемые Dmitry Biryukov,BackFire Запрос действительно "никудышный". Идея такая: "SALES" - куб с отгрузками. Этим запросом человек хотел получить Какое количество товара вендора [Вендоры].&[4004813], каким покупателям([Партнер].Children) он([Sales Managers].&[8000628]) отгрузил за период с {[Время].[2005].[Квартал 4].[Декабрь].[49].[1]:[Время].[2005].[Квартал 4].[Декабрь].[53].[27]} Специфика: Есть измерение партнеры(в базе MS SQL в карточке партнера хранится полное и сокращенное имя(код)), так сложилось что руководство хочет видеть в отдельных случаях код партнера, а в других его наименование, поэтому я создал 2 Member Properties (партнер-код и партнер название, н-р: "Петров $" и "ЧП Петров ...") Здесь человек хотел получить(перечислю по колонкам) Партнер-Название, Товар, Вендора и Сейла(т.е. свою фамилию). Буду рад любому совету. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 09:36 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
у вас как связыны сэйлы с партнерами и как связаны вендоры с товаром? товар имеет одного вендора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 10:44 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
а почему бы не переписать запрос так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 10:53 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
Dmitry Biryukovа почему бы не переписать запрос так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Дмтрий, не вводите человека в заблуждение, употребляя sets под where, не спросив, имеет ли он AS2005. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 11:03 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
а где там сеты? тогда так: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 11:20 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
2Dmitry Biryukov Человек хочет видеть в итоговой табличке, колонку с вендором, и с сейлом, даже если он один. 2BackFire Сейлы связаны с партнерами, т.е. у каждого партнера 1 сейл, а у каждого товара свой вендор. Я же сделал view(таблицу фактов) в которой уже есть ссылки и на сейла и на партнера и на товар и на вендора. К фактам привязаны измерения: Факты.PARTNER_ID --> Партнеры.PARTNER_ID Факты.PRODUCT_ID --> ТОВАРЫ.PRODUCT_ID Меры: Факты.Количество Факты.Продажи .... Я использую MS AS 2000. Но как я писал у меня level в Партнерах представлен именем КОД +' / '+ИМЯ_ПАРТНЕРА, а пользователи хотят чисто код, то чисто имя, или оба вместе, а иначе как сделать через member.Property имя и код я не нашел. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 12:34 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
menshСпецифика: Есть измерение партнеры(в базе MS SQL в карточке партнера хранится полное и сокращенное имя(код)), так сложилось что руководство хочет видеть в отдельных случаях код партнера, а в других его наименование, поэтому я создал 2 Member Properties (партнер-код и партнер название, н-р: "Петров $" и "ЧП Петров ...") Здесь человек хотел получить(перечислю по колонкам) Партнер-Название, Товар, Вендора и Сейла(т.е. свою фамилию). Буду рад любому совету. :) Если вы работаете со своим клиентом на Delphi, то вы можете получить user defined dimension properties (проще говоря аттрибуты измерения) не обязательно определяя для них calculated measure select {column set} on columns, {row set} properties [Партнер].CurrentMember.Properties("Партнёр-Название") on rows ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 14:33 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
menshСпасибо уважаемые Dmitry Biryukov,BackFire Запрос действительно "никудышный". Идея такая: "SALES" - куб с отгрузками. Этим запросом человек хотел получить Какое количество товара вендора [Вендоры].&[4004813], каким покупателям([Партнер].Children) он([Sales Managers].&[8000628]) отгрузил за период с {[Время].[2005].[Квартал 4].[Декабрь].[49].[1]:[Время].[2005].[Квартал 4].[Декабрь].[53].[27]} т.е. отчет в виде Насторийки: Продажи: \Новый отчет Фильтр по измерениям: Торговый представитель клиента Элементы: (400) Ketler Основной поставщик Элементы: (0615999) Arcelor Период: Календарный год 2005.05.29 Накопл. 1-е измерение: Клиент Максимальное количество элементов: 100 Только элементы с движениями Меры: Sales Value 2-е измерение: Товар Максимальное количество элементов: 100 Только элементы с движениями Меры: Sales Value ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 14:37 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
2BackFire ******************************************************* Если вы работаете со своим клиентом на Delphi, то вы можете получить user defined dimension properties (проще говоря аттрибуты измерения) не обязательно определяя для них calculated measure select {column set} on columns, {row set} properties [Партнер].CurrentMember.Properties("Партнёр-Название") on rows ******************************************************* Интересно, я обязательно попробую большое спасибо! :) Да моя задача примерно похожа на ту которую вы привели в последнем примере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 15:44 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
menshДа моя задача примерно похожа на ту которую вы привели в последнем примере. Это не задача, это ad-hock составленый отчетик в моем клиенте, если интересует, могу намылить больше скринов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 16:25 |
|
||
|
MS AS. Fact Table Size. Число партиций в кубе.
|
|||
|---|---|---|---|
|
#18+
конечно интересует, посылайте, только в упакованном виде :) mensh@ocsu.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 18:19 |
|
||
|
|

start [/forum/topic.php?fid=49&msg=33464643&tid=1870692]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
110ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 263ms |
| total: | 467ms |

| 0 / 0 |
