Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
Добрый день, помогите, пожалуйста, начинающему. Имеется измерение "Категории" по типу 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%), если брать в учет нашу формулу, которую надо применить. Спасибо за возможную помощь. Андрей ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 11:26 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
а можно это посчитать через CM? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 11:42 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
Можно, но для более полного ответа хотелось бы узнать: Серверный продукт (если есть), который вы используете и его номер версии. Клиентское приложение тоже с номером версии.. дальше вопросов будет больше или меньше, в зависимости от ответов на первые 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 12:23 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
ShIgorМожно, но для более полного ответа хотелось бы узнать: Серверный продукт (если есть), который вы используете и его номер версии. Клиентское приложение тоже с номером версии.. дальше вопросов будет больше или меньше, в зависимости от ответов на первые 2. Конечно! MS Analysis Server 8.0 sp3 Windows 2003 sp1, усе права есть. Сейчас не использую клиентское приложение, так как хотелось бы сначала создать "правильный" куб. Может что-то не написал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 12:42 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
что из себя представляют и как расчитываются К-во точек, где была данная категория и Все к-во точек ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 13:01 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
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 - если нет ничего. Я очень надеюсь, что объяснил правильно..... Задача может простая для Вас, но для меня сложная, так как я только начинаю учится, ине знаю всех ньюансов. Спасибо за ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 13:28 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
Fact-таблица имеет поля: IDCategory - измерение category, описанное выше. IDTime ...... Val Num ____ В AS MS - 2 меры: Val и Num Val - sum значений Num -все единицы (count) СМ distr=Val/Num ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 13:42 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
ВАУ-У! (у Задорнова хорошо получается) даже не знаю что Вам порекомендовать.... если данных немного - легче посчитать все в реляционной базе если же цель все-таки 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)) примерно так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 15:38 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
поправка "создать таблицу SubCategory" не SubCategory, а Product ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 15:40 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
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.[КолТочек] Сие есть опечатка? Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 15:58 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
ой! и еще. А если уровней станет больше, то для каждого создавать отдельную таблицу? В принципе, больше 4 - быть не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 15:59 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
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.[КолТочек] Сие есть опечатка? Спасибо Пардон, скобку не увидел!!! Не опечатка. Это я слепой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 16:00 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
Lebedой! и еще. А если уровней станет больше, то для каждого создавать отдельную таблицу? В принципе, больше 4 - быть не должно. в примере аж для 3 уровней только 1 таблица ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 16:08 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
LebedЕсли мы выкинем несуществ. факты. Будем отталкиватся от к-ва точек, я так понял? если у вас есть такие точки, в которых вообще продукта не было на момент проверки, то тогда и решение будет другое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 16:17 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
Понял. В вашем примере - 1 таблица с соответствующим уровнем полей. На самом деле есть точки, в которых может быть только 1 категория (т.е., одна из высших категорий - без ничего). Это не должно помешать? Скажите, а данное решение применимо и для n-уровней? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 17:09 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
LebedСкажите, а данное решение применимо и для n-уровней? я привел пример именно для 2-х уровней, больше будеет зависеть от того что вы подразумеваете под дистрибуцией (меня иногда просят считать дистрибуцию не от категории, а от 3 уровня в иерархии например, или на 3 уровне от категории) но это уже другой подход ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 17:31 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
ShIgor , огромное спасибо. Что-то получилось. т.е., вроде бы и цифры правильны, но они не совпадают с теми, которые были до этого (для нижних категорий). Вообще супер. Только, по формуле не совсем понял. Делится к-во "1" на к-во точек в родительской категории? Если да, то что мешает нам сделать больше уровней. Пойду пробовать. еще раз спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 17:49 |
|
||
|
Дистрибуция по категориям
|
|||
|---|---|---|---|
|
#18+
Да Вы на самом деле посчитали вложенную дистрибуцию! Т.е. это правильно. Для вложенной категории в учет берется только то к-во точек, в которых есть хотя б одно наименование данной суперкатегории. Пример - супер и рабочий. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.05.2006, 18:06 |
|
||
|
|

start [/forum/topic.php?fid=49&fpage=328&tid=1870119]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 253ms |
| total: | 386ms |

| 0 / 0 |
