powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / DimentionAttribute IsAggregatable = False и NULL-значения атрибута
7 сообщений из 7, страница 1 из 1
DimentionAttribute IsAggregatable = False и NULL-значения атрибута
    #39939549
UH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SSAS 2008 R2 SE
В измерении Продукты определён соотв. DimentionAttribute Артикул.
В таблице-источнике измерения в поле Артикул есть NULL-значения.

Если для атрибута Артикул установить IsAggregatable = False, куб выполняет агрегацию только и только по записям с Артикул IS NULL, все остальные записи тупо игнорируются. При любой настройке DefaultMember и KeyColumns NullProcessing для Артикул.

Вопрос конечно можно решить (вернуть IsAggregatable = True или отдавать измерению пустую строку вместо NULL), но не могу понять поведение системы, что несколько смущает.
...
Рейтинг: 0 / 0
DimentionAttribute IsAggregatable = False и NULL-значения атрибута
    #39941492
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UH
SSAS 2008 R2 SE
Вопрос конечно можно решить (вернуть IsAggregatable = True
или отдавать измерению пустую строку вместо NULL)
, но не могу понять поведение системы, что несколько смущает.


я всегда так и делал - в димах было isnull( , -1) , isnull( , '-')
, isnull( , 'не известно')
тогда и NullProcessing не надо было трогать
я его один раз только юзал
...
Рейтинг: 0 / 0
DimentionAttribute IsAggregatable = False и NULL-значения атрибута
    #39941781
AlexBra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UH,

NullProcessing это когда не находить ключа в справочнике
null как советовали лучше через isnull() и прописываем в справочнике значение на этот счет (-1,"-")
...
Рейтинг: 0 / 0
DimentionAttribute IsAggregatable = False и NULL-значения атрибута
    #39942279
UH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexBra
UH,

NullProcessing это когда не находить ключа в справочнике
null как советовали лучше через isnull() и прописываем в справочнике значение на этот счет (-1,"-")


Вопрос не в том, как решить, а в том, что лично мне непонятна логика работы системы.
Пусть в таблице DimProduct 1000 записей. И в таблице 10 записей с Артикул IS NULL.

Артикул определён как DimensionAttribute.
Если для Артикул установить IsAggregatable = False, куб выполняет рассчёт только по фактам, которые ссылаются на DimProduct, где Артикул IS NULL.

Например, исходные данные
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DimProduct:
ProductID	ProductName	Articul
1		Product1	123
2		Product2	456
3		Product3	789
4		Product4	NULL
5		Product5	NULL

FactSales:
ProductID	Amount
1		10
2		20
3		30
4		40
5		50

В Кубе:
Измерение Product с различными иерахиями, а также иерархия атрибута Артикул.
Мера Amount с SUM по Amount.

Если установить для Акртикул IsAggregatable = False, после полного пересчёта куба рассчитываются только Amount = 40 и Amount = 50.

Я не могу понять почему так.

AlexBra
UH,

NullProcessing это когда не находить ключа в справочнике

Это понятно. Мне непонятно каким боком NULL-значения в иерархии атрибута влияют на расчёт всех остальных иерархий и измерений.
...
Рейтинг: 0 / 0
DimentionAttribute IsAggregatable = False и NULL-значения атрибута
    #39942393
PassedBI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
UH, а если в отчете явно выбрать какой-нибудь нормальный артикул, по которому есть факт, все равно будет пусто?
или проще - бросить все артикулы в строки, останется только пустой артикул?
...
Рейтинг: 0 / 0
DimentionAttribute IsAggregatable = False и NULL-значения атрибута
    #39942495
UH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PassedBI
UH, а если в отчете явно выбрать какой-нибудь нормальный артикул, по которому есть факт, все равно будет пусто?
или проще - бросить все артикулы в строки, останется только пустой артикул?

Для ответа на вопрос решил таки вернуться и вникнуть в проблему и похоже разобрался.
Если атрибут сделать not aggregatable, для атрибута отсутствует All members.
Для любого запроса атрибут обрабатывается как DEFAULTMEMBER по умолчанию. Если не определять DefaultMember, в качестве DEFAULTMEMBER передаётся пустое значение. Для артикула, например, определить DEFAULTMEMBER в принципе нельзя, не тот случай.

Если в MDX-запросе использовать [Продукт].[Артикул].MEMBERS, возвращаются правильные данные.

AttributeIerarchyEnabled изменить на False не могу, т.к. ProClarity не умеет нормально работать с такими атрибутами (в отличии от Excel).

Полностью отказался от отключения IsAggregatable и AttributeIerarchyEnabled (в качестве оптимизации), т.к. не удалось сделать так, чтобы как ProClarity, так и Excel нормально это отрабатывали. Нормальным поведением считаю следующее:
1) Атрибут виден в иерархиях ProClarity и может быть добавлен запрос как дополнительная информация.
2) Атрибут виден разделе "Другие поля" списка полей сводной таблицы Excel и может быть добавлен запрос как дополнительная информация.

Думаю, вопрос можно закрыть, спасибо.
...
Рейтинг: 0 / 0
DimentionAttribute IsAggregatable = False и NULL-значения атрибута
    #39943845
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UH,

>Если для Артикул установить IsAggregatable = False, куб выполняет рассчёт только по фактам, которые ссылаются на DimProduct, где Артикул IS NULL.

Это ожидаемое поведение системы.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / DimentionAttribute IsAggregatable = False и NULL-значения атрибута
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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