Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / Дистрибуция по категориям / 18 сообщений из 18, страница 1 из 1
19.05.2006, 11:26
    #33737958
Lebed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
Добрый день, помогите, пожалуйста, начинающему.

Имеется измерение "Категории" по типу parent-child

-> Office Automation
->Printers
->High-End
->Low-end
->Scanners
->....
-> Photo-Video
->Digital photos
->Camcoders
->.......

Мера - наличие категории в точке.

Стоит задача видеть дистрибуцию по всем уровням. Я рассчитаывал ее по формуле (К-во точек, где была данная категория)/(Все к-во точек).Все считается правильно, но в данном проекте подходит только для нижних уровней.

Потому что, в данном проекте категории не-нижнего уровня считаются немного по другому.

Например, Photo-Video считается в наличии ("1"), если в данной точке была хотя б одна категория из Photo-Video -Camcoders, Digital photos...
Данную формулу надо считать для всех не-нижних уровней.
Формулу можно сформулировать так:
Категория есть в точке (1), если есть хотя б одна из ее подкатегрий. Если подкатегорий нет, то реальное наличие данной категории.

Резюме:

Сейчас считается так:
-> Office Automation 11,5%
->Printers 14,2%
->High-End 18 %
->Low-end 25 %
->Scanners 20%
->....


Нижние категрии (High-End,Low-end,Scanners) - считаются правильно.
А верхние должны быть другими (намного большими, например, 80%), если брать в учет нашу формулу, которую надо применить.

Спасибо за возможную помощь.
Андрей
...
Рейтинг: 0 / 0
19.05.2006, 11:42
    #33738028
Lebed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
а можно это посчитать через CM?
...
Рейтинг: 0 / 0
19.05.2006, 12:23
    #33738203
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
Можно, но для более полного ответа хотелось бы узнать:
Серверный продукт (если есть), который вы используете и его номер версии.
Клиентское приложение тоже с номером версии..
дальше вопросов будет больше или меньше, в зависимости от ответов на первые 2.
...
Рейтинг: 0 / 0
19.05.2006, 12:42
    #33738281
Lebed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
ShIgorМожно, но для более полного ответа хотелось бы узнать:
Серверный продукт (если есть), который вы используете и его номер версии.
Клиентское приложение тоже с номером версии..
дальше вопросов будет больше или меньше, в зависимости от ответов на первые 2.


Конечно!
MS Analysis Server 8.0 sp3
Windows 2003 sp1, усе права есть.
Сейчас не использую клиентское приложение, так как хотелось бы сначала создать "правильный" куб.
Может что-то не написал.
...
Рейтинг: 0 / 0
19.05.2006, 13:01
    #33738365
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
что из себя представляют и как расчитываются
К-во точек, где была данная категория
и
Все к-во точек
...
Рейтинг: 0 / 0
19.05.2006, 13:28
    #33738475
Lebed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
ShIgorчто из себя представляют и как расчитываются
К-во точек, где была данная категория
и
Все к-во точек



Приведу пример, так мне легче, а может и Вам.


Например, есть такая структура категорий.


->Вся техника
-> Офисная техника
->Printers
->Scanners
->Photo Video
->Digital photo
->Analogue photo

Есть 10 точек, котрые надо посетить ( это и есть "Все к-во точек")

Результаты таковы (1- была продукция данной категории, 0 -не было)

Точка | Printers | Scanners | Digital photo | Analogue photo
№1 1 1 0 1
№2 1 1 0 0
№3 1 0 1 0
№4 0 0 0 0
№5 0 0 0 1
№6 1 1 1 1
№7 1 0 1 0
№8 0 0 0 1
№9 1 0 1 1
№10 1 1 1 0

Дистрибуция по категории считается легко: к-во "1" (присутсвий) / на к-во точек всего (10).
по кат. Printers = 7/10=70%
по кат. Scanners = 4/10=40%
по кат. Digital photo = 5/10=50%
по кат. Analogue photo= 5/10=50%

Категории Printers и Scanners входят в большую категорию "Офисная техника".
Но MS AS посчитает дистрибуцию по данной кат. (Офисная техника) так:
(7 + 4) / 20= 55%

А нам надо:
SUM(max(Printers and Scanners)) / 10 = 7/10 = 70%
- значит в 70% точек была оф. техника, и это правда.

где, max(Printers and Scanners) это "1" , если есть либо Printers , либо Scanners , либо и то и другое и 0 - если нет ничего.



Я очень надеюсь, что объяснил правильно..... Задача может простая для Вас, но для меня сложная, так как я только начинаю учится, ине знаю всех ньюансов. Спасибо за ответ.
...
Рейтинг: 0 / 0
19.05.2006, 13:42
    #33738551
Lebed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
Fact-таблица имеет поля:
IDCategory - измерение category, описанное выше.
IDTime
......
Val
Num

____
В AS MS - 2 меры: Val и Num
Val - sum значений
Num -все единицы (count)

СМ distr=Val/Num
...
Рейтинг: 0 / 0
19.05.2006, 15:38
    #33739067
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
ВАУ-У! (у Задорнова хорошо получается)
даже не знаю что Вам порекомендовать....
если данных немного - легче посчитать все в реляционной базе
если же цель все-таки OLAP то
сначала, наверное, таблицу фактов надо привести к виду
idDate, idProduct, idStore, Val
собрать в нее все существующие факты (несуществующие выкинуть)
создать таблицу SubCategory (для начала забудем про parent-child) примерно такого вида
idProduct, idCategory, idSubCategory
создать 2 измерения
Продукт (c 2 уровнями Категория, Подкатегория) и Дата
создать куб из этих измерений
создать DistinctCount меру по полю idStore - КолТочек
создать Calculated Measure: iif([Продукт].CurrentMember.Level.Ordinal = 0, 1, Measures.[КолТочек] / (Measures.[КолТочек], [Продукт].CurrentMember.Parent))

примерно так
...
Рейтинг: 0 / 0
19.05.2006, 15:40
    #33739077
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
поправка "создать таблицу SubCategory" не SubCategory, а Product
...
Рейтинг: 0 / 0
19.05.2006, 15:58
    #33739132
Lebed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
ShIgorВАУ-У! (у Задорнова хорошо получается)
даже не знаю что Вам порекомендовать....
если данных немного - легче посчитать все в реляционной базе
если же цель все-таки OLAP то
сначала, наверное, таблицу фактов надо привести к виду
idDate, idProduct, idStore, Val
собрать в нее все существующие факты (несуществующие выкинуть)
создать таблицу SubCategory (для начала забудем про parent-child) примерно такого вида
idProduct, idCategory, idSubCategory
создать 2 измерения
Продукт (c 2 уровнями Категория, Подкатегория) и Дата
создать куб из этих измерений
создать DistinctCount меру по полю idStore - КолТочек
создать Calculated Measure: iif([Продукт].CurrentMember.Level.Ordinal = 0, 1, Measures.[КолТочек] / (Measures.[КолТочек], [Продукт].CurrentMember.Parent))

примерно так

Спасибо за ответ!
Факт в таком виде и есть: просто я опустил некоторые поля.
Если мы выкинем несуществ. факты. Будем отталкиватся от к-ва точек, я так понял?

И по формуле посл. вопрос: Measures.[КолТочек] / (Measures.[КолТочек]
Сие есть опечатка? Спасибо
...
Рейтинг: 0 / 0
19.05.2006, 15:59
    #33739135
Lebed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
ой! и еще. А если уровней станет больше, то для каждого создавать отдельную таблицу? В принципе, больше 4 - быть не должно.
...
Рейтинг: 0 / 0
19.05.2006, 16:00
    #33739137
Lebed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
Lebed ShIgorВАУ-У! (у Задорнова хорошо получается)
даже не знаю что Вам порекомендовать....
если данных немного - легче посчитать все в реляционной базе
если же цель все-таки OLAP то
сначала, наверное, таблицу фактов надо привести к виду
idDate, idProduct, idStore, Val
собрать в нее все существующие факты (несуществующие выкинуть)
создать таблицу SubCategory (для начала забудем про parent-child) примерно такого вида
idProduct, idCategory, idSubCategory
создать 2 измерения
Продукт (c 2 уровнями Категория, Подкатегория) и Дата
создать куб из этих измерений
создать DistinctCount меру по полю idStore - КолТочек
создать Calculated Measure: iif([Продукт].CurrentMember.Level.Ordinal = 0, 1, Measures.[КолТочек] / (Measures.[КолТочек], [Продукт].CurrentMember.Parent))

примерно так

Спасибо за ответ!
Факт в таком виде и есть: просто я опустил некоторые поля.
Если мы выкинем несуществ. факты. Будем отталкиватся от к-ва точек, я так понял?

И по формуле посл. вопрос: Measures.[КолТочек] / (Measures.[КолТочек]
Сие есть опечатка? Спасибо


Пардон, скобку не увидел!!! Не опечатка. Это я слепой.
...
Рейтинг: 0 / 0
19.05.2006, 16:08
    #33739161
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
Lebedой! и еще. А если уровней станет больше, то для каждого создавать отдельную таблицу? В принципе, больше 4 - быть не должно.
в примере аж для 3 уровней только 1 таблица
...
Рейтинг: 0 / 0
19.05.2006, 16:17
    #33739192
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
LebedЕсли мы выкинем несуществ. факты. Будем отталкиватся от к-ва точек, я так понял?

если у вас есть такие точки, в которых вообще продукта не было на момент проверки, то тогда и решение будет другое
...
Рейтинг: 0 / 0
19.05.2006, 17:09
    #33739370
Lebed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
Понял. В вашем примере - 1 таблица с соответствующим уровнем полей.

На самом деле есть точки, в которых может быть только 1 категория (т.е., одна из высших категорий - без ничего). Это не должно помешать?

Скажите, а данное решение применимо и для n-уровней?
...
Рейтинг: 0 / 0
19.05.2006, 17:31
    #33739442
ShIgor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
LebedСкажите, а данное решение применимо и для n-уровней?
я привел пример именно для 2-х уровней, больше будеет зависеть от того что вы подразумеваете под дистрибуцией (меня иногда просят считать дистрибуцию не от категории, а от 3 уровня в иерархии например, или на 3 уровне от категории) но это уже другой подход
...
Рейтинг: 0 / 0
19.05.2006, 17:49
    #33739504
Lebed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
ShIgor , огромное спасибо. Что-то получилось.
т.е., вроде бы и цифры правильны, но они не совпадают с теми, которые были до этого (для нижних категорий).

Вообще супер. Только, по формуле не совсем понял.

Делится к-во "1" на к-во точек в родительской категории? Если да, то что мешает нам сделать больше уровней. Пойду пробовать. еще раз спасибо.
...
Рейтинг: 0 / 0
19.05.2006, 18:06
    #33739559
Lebed
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Дистрибуция по категориям
Да Вы на самом деле посчитали вложенную дистрибуцию!

Т.е. это правильно. Для вложенной категории в учет берется только то к-во точек, в которых есть хотя б одно наименование данной суперкатегории.

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


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