Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / OLAP и DWH Новый топик    Ответить
 SSAS 2012 Опримизация архитектуры куба  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 672
Wello World!
Насущный вопрос - как правильно создавать атрибуты в измерении.
Есть ли смысл для не ключевого атрибута делать целочисленные ключи. Будет ли от этого польза. И как это проверить.

Для своего мини исследования создал два, почти идентичных тестовых куба.
У каждого из них, одна группа мер [View Fact Sale] и одно измерение [Product].

Группа мер [View Fact Sale] - идентична для обоих. Состоит из двух мер : [Measures].[Quantity] и [Measures].[Revenue]
Измерение [Product] имеет ключевой атрибут - [Product].[Product] и завистмый [Product].[Период Без Продаж].

В кубе1 при построении [Product].[Период Без Продаж] использую целочисленные значения для KeyColumns, а для NameColumn строковые

В кубе 2 для KeyColumns использую строковые значение, а NameColumn не заполняю

К сообщению приложен файл. Размер - 95Kb
9 июн 17, 13:01    [20552927]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 672
Далее процессинг обоих кубов и очистка кеша

<!--To clear the cache of an entire cube -->
<ClearCache xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
	<Object>
		<DatabaseID>OLAP_DEV_</DatabaseID>
		<CubeID>Cube</CubeID>
	</Object>
</ClearCache>

<!--To clear the cache of an entire cube -->
<ClearCache xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
	<Object>
		<DatabaseID>OLAP_DEV_2</DatabaseID>
		<CubeID>Cube</CubeID>
	</Object>
</ClearCache>


Запуск профайлера и выполнение скрипта для каждого куба.
SELECT	[Measures].[Quantity] ON 0,
		[Product].[Период Без Продаж].[Период Без Продаж] ON 1
FROM	[Cube]


На выходе такой результат
Куб 1 Куб 2
READS 29 READS 29
READ_KB 1748 READ_KB 1748
WRITES 0 WRITES 0
WRITE_KB 0 WRITE_KB 0
CPU_TIME_MS 31 CPU_TIME_MS 0
ROWS_SCANNED 123724 ROWS_SCANNED 123724
ROWS_RETURNED 123724 ROWS_RETURNED 123724


Ожидал получить другой.

Прошу отписать ваши комментарии по данному результату и моим вопросам.
9 июн 17, 13:02    [20552937]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
Alex_496
Member

Откуда: Moscow https://www.dvbi.ru
Сообщений: 3470
Yagrus2,

KeyColumns - целочисленный НЕсоставной, на измерениях с больши количеством элементов это заметно
даже для неключевых атрибутов (ну т.е. которые не на уровне гранулярности)

NameColumn - длина должна быть с некоторым запасом, но в разумных пределах

еще удобно использовать свойство Value
9 июн 17, 13:41    [20553142]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 4641
и сколько у вас данных в [Product]?
почему меряете показатели запроса к кубу, а не процессинга измерения?
9 июн 17, 13:46    [20553164]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 672
Дедушка
и сколько у вас данных в [Product]?
Количество записей в исходной таблице: 292458
Дедушка
почему меряете показатели запроса к кубу, а не процессинга измерения?

Не подумал про нагрузку при процессинге.
Нагрузка при полном процессинге измерения:

Куб 1 Куб 2
READS 930 READS 918
READ_KB 35680 READ_KB 35676
WRITES 2662 WRITES 2652
WRITE_KB 51340 WRITE_KB 51327
CPU_TIME_MS 3915 CPU_TIME_MS 4336
ROWS_SCANNED 292459 ROWS_SCANNED 292459
ROWS_RETURNED 0 ROWS_RETURNED 0
9 июн 17, 14:04    [20553210]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 672
Alex_496,
Я как раз и проверяю не ключевой атрибут.
И судя по трассе, для них целочисленные ключи дают больше минусов чем плюсов.

По мне это не логично...
9 июн 17, 14:11    [20553234]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1955
Yagrus2,

почему больше? для Вас какой параметр важнее, объем обработанной инфы или время обработки?
с объемом все понятно -
на чтение больше потому что вьюшки разные и возвращают int+nvarchar(50) против nvarchar(50)
на запись по той же причине,
а вот со скоростью-то наоборот, и причем значительно: 10% выигрыша на мизерном объеме.
и это только на обработке, а на вычислениях по сетам? только тестировать надо не на десятке тысяч (в атрибуте подозреваю еще меньше).
9 июн 17, 15:08    [20553418]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 31048
Блог
Yagrus2
Wello World!
Насущный вопрос - как правильно создавать атрибуты в измерении.
Есть ли смысл для не ключевого атрибута делать целочисленные ключи.


Нужен суррогатный целочисленный ключ.
Главное слово тут "суррогатный", но естественно, он должен быть числовым.

Но причина совсем другая.
Поясную на примере: пусть имеется справочник (не совсем справочник, а витрина для куба) клиентов в виде
{ключ_клиента, наименование клиента, сегмент клиента}, содержащая данные
1, ООО Ромашка, средний и малый бизнес

тогда, при переименовании сегмента клиентов, например, в "СМБ", у пользователей слетят все сохраненные отчеты, чего быть не должно
9 июн 17, 15:23    [20553476]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
ShIgor
Member

Откуда: Нижний Новгород
Сообщений: 1955
Критик,

они так же с успехом слетят если в запросах используются не ключи ( .&[100] ), а имена ( .[средний и малый бизнес] )
9 июн 17, 15:56    [20553589]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 31048
Блог
ShIgor,

если имена - слетят,
а вот если ключи - не слетят
9 июн 17, 16:01    [20553603]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
Yagrus2
Member

Откуда: Москва
Сообщений: 672
ShIgor,
Не буду спорить, что при процессинге для первого куба(с павильным измерением) CPU_TIME_MS оказался меньше на 10%.

Но как быть с селектами? Атрибут [Product].[Период Без Продаж] содердит коллекцию из 45 элеметов(включая элемент ALL)
Подскажите пример атрибута, на котором можно увидеть положительный эфект по CPU_TIME_MS.

Моим запросом
SELECT	[Measures].[Quantity] ON 0,
		[Product].[Период Без Продаж].[Период Без Продаж] ON 1
FROM	[Cube]

нельзя анализировать CPU_TIME_MS, так для каждого куба он скачет то в большую, то в меньшую сторону.
9 июн 17, 16:32    [20553712]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 399
Alex_496
KeyColumns - целочисленный НЕсоставной, на измерениях с больши количеством элементов это заметно
даже для неключевых атрибутов (ну т.е. которые не на уровне гранулярности)

А почему? Любимый пример из измерения дат из велозавода - там атрибуты составные.
Что становится заметно, рост времени процессинга измерения? Большое - это больше 1 миллиона элементов?

Мне это интересно не только в академическом ключе - в измерении дат - 15-минутные интервалы, и элементов в таком измерении немало. Для месяцев, недель и кварталов - использую композитный ключ.
9 июн 17, 22:50    [20554503]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
Voyager_lan
Member

Откуда:
Сообщений: 1437
Ferdipux,

Велозавод это не эталон, а показать, что так можно сделать.

1. Do use numeric keys for attributes that contain many members (>1 million)

2. #4: Use Integer Data Type for Attribute Keys If at All Possible
For best processing performance, try to use the smallest data type for attribute key columns. Although you could use string data types for key columns, they do not perform nearly as well as the numeric data types. At times you may need to use multiple columns for the composite key for a dimension attribute. Although this practice is almost always acceptable, for large dimensions (and particularly for fact level dimensions) you may have to add an alternate key to the dimension table to ensure processing is efficient. For example, let’s suppose you have a fact level “transaction” attribute and you use company identifier, effective date, and journal entry identifier string columns as keys for this attribute. While processing this dimension, MSAS must retrieve a unique combination of three string columns, which can be very time-consuming for a dimension that contains millions of records. Instead, you can add an identity column (or another integer column uniquely identifying each transaction) to the dimension table and use it as the attribute key. Reading a single integer column will be considerably faster than reading three string columns. Storing integer keys will also be much more efficient.
11 июн 17, 10:42    [20556277]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
Alex_496
Member

Откуда: Moscow https://www.dvbi.ru
Сообщений: 3470
Ferdipux,

Александр ответил, расписал под хохлому, и пруфы привел.

Ну и еще, помнится, в MDX- запросах проще ссылаться на несоставные элементы
11 июн 17, 16:00    [20556659]     Ответить | Цитировать Сообщить модератору
 Re: SSAS 2012 Опримизация архитектуры куба  [new]
Ferdipux
Member

Откуда: Москва
Сообщений: 399
Voyager_lan,

Спасибо за статьи!
Соственно, из первой ссылки идет критерий большого измерения - 1 миллион элементов. Буду думать - затронет ли изменение принципа ключей существующие в проде отчеты...
11 июн 17, 23:14    [20557209]     Ответить | Цитировать Сообщить модератору
Все форумы / OLAP и DWH Ответить