Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
DeepSee Cube индексирование
|
|||
|---|---|---|---|
|
#18+
Стали использовать DeepSee Аналитику. Столкнулись с проблемой быстродействия. Что мы делаем. Строим Кубик по 4 измерениям [время{год,месяц,день}, маркетологи, товары, производители] Мера [сумма по закупу] Пользователь обычно накладывает фильтр на время, а из оставшихся 3 таблиц строит X и Y оси. Проблема состоит в том, что отчет строится очень долго, гораздо дольше чем если выводить его SQL'ем через GROUP By Возник вопрос про индексирование, дело в том, что когда смотришь таблицу фактов построенную DeepSee, то видно что он построил Bitmap индексы по каждому уровню измерений и Bitslice индекс по агрегационной мере. Я думаю в этом и есть причина низкого быстродействия, потому как индекса по 1 измерению явно не достаточно для быстрой выборки. Оптимальным был бы индекс {время, Менеджер, Товар, Производитель} Вопрос: Можно ли как-нить "уговорить" DeepSee строить перекрестные индексы на измерения ( по аналогии с SSAS ) ? Чтобы хотя бы по 2 измерения было в индексе? Схема кубика: Код: xml 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. Схема индексов: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2012, 07:51 |
|
||
|
DeepSee Cube индексирование
|
|||
|---|---|---|---|
|
#18+
sigmov , Чтобы помочь Вам, необходимо иметь возможность воспроизвести ситуацию. Было бы неплохо иметь полный тестовый пример, чтобы ничего не додумывать "с потолка". НапримерКлассы данных и куба, процедура заполнения данными Class test.Data Extends %Persistent { /// [23.11.1977-10.04.2005] ($horolog 50000-60000) Property docDate As %Date; /// [1-100] Property ClName As %String; /// [1-1000] Property storedName As %String; /// [1-500] Property name As %String; /// [1-100] Property salePriceWoNDS As %Integer; /// [1-100] Property saleNDS As %Integer; ClassMethod Fill() { do DISABLE^%NOJRN do ..%KillExtent() set N=1000000 for i=1:1:N set ^test.DataD(i)=$lb("",$r(10001)+50000,$r(100)+1,$r(1000)+1,$r(500)+1,$r(100)+1,$r(100)+1) set ^test.DataD=N do $system.SQL.TuneTable("test.Data",1,1) do ENABLE^%NOJRN } } Class test.bi.Data Extends %DeepSee.CubeDefinition { /// Cube definition from Architect. XData Cube [ XMLNamespace = " http://www.intersystems.com/deepsee" ] { <cube xmlns=" http://www.intersystems.com/deepsee" name="SalesReport" displayName="Продажи" disabled="false" abstract="false" sourceClass="test.Data" countMeasureName="%COUNT" bucketSize="8" bitmapChunkInMemory="false" precompute="0"> <dimension name="Дата" disabled="false" hasAll="true" allCaption="Дата(все)" allDisplayName="Дата(все)" sourceProperty="docDate" type="time" hidden="false" showHierarchies="default"> <hierarchy name="H1" disabled="false"> <level name="Год" disabled="false" timeFunction="Year" list="false" useDisplayValue="true"> </level> <level name="Месяц" disabled="false" timeFunction="MonthYear" list="false" useDisplayValue="true"> </level> <level name="День" disabled="false" timeFunction="DayMonthYear" list="false" useDisplayValue="true"> </level> </hierarchy> </dimension> <dimension name="Менеджер" disabled="false" hasAll="true" allCaption="Менеджер(все)" allDisplayName="Менеджер(все)" type="data" hidden="false" showHierarchies="default"> <hierarchy name="H1" disabled="false"> <level sourceProperty="ClName" name="Менеджер" disabled="false" list="false" useDisplayValue="true"> </level> </hierarchy> </dimension> <dimension name="Товар" disabled="false" hasAll="true" allCaption="Товар(все)" allDisplayName="Товар(все)" type="data" hidden="false" showHierarchies="default"> <hierarchy name="H1" disabled="false"> <level sourceProperty="storedName" name="Товар" disabled="false" list="false" useDisplayValue="true"></level> </hierarchy> </dimension> <dimension name="Производитель" disabled="false" hasAll="true" allCaption="Производитель(все)" allDisplayName="Производитель(все)" type="data" hidden="false" showHierarchies="default"> <hierarchy name="H1" disabled="false"> <level sourceProperty="name" name="Производитель" disabled="false" list="false" useDisplayValue="true"></level> </hierarchy> </dimension> <measure sourceProperty="salePriceWoNDS" sourceExpression="(%source.salePriceWoNDS)*(1+(%source.saleNDS))" name="Сумма" disabled="false" aggregate="SUM" type="number" hidden="false" searchable="false"></measure> </cube> } } MDX-запрос со скриншотом DeepSee Analyzer SQL запрос раскрытие понятий "долго" и "быстро" в количественном выражении PS: ещё может пригодиться Советы по повышению производительности DeepSee ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2012, 10:45 |
|
||
|
|

start [/forum/topic.php?fid=39&msg=37739580&tid=1557496]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
210ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
2ms |
| others: | 238ms |
| total: | 535ms |

| 0 / 0 |
