powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / один куб или два
78 сообщений из 78, показаны все 4 страниц
один куб или два
    #32919467
Booom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Какие основные плюсы и минусы
1.иметь один куб для плановых и фактических данных
2.иметь два разных куба
(ну скорость и время процессинга я понимаю, а с концептуальной точки зрения???)
...
Рейтинг: 0 / 0
один куб или два
    #32919498
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё один

Пожалуйста, ознакомпьтесь с правилами форума на предмет оформления сообщений.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
один куб или два
    #32919507
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин ЛисянскийЕщё один

Пожалуйста, ознакомпьтесь с правилами форума на предмет оформления сообщений.

С уважением,
Константин Лисянский
http://lissianski.narod.ru

Константин, мне кажется, что поставленный вопрос не имеет отношения к конкретному инструментарию и достоин обсуждения как отрыве от инстументария так и применительно к любому инструменту.
...
Рейтинг: 0 / 0
один куб или два
    #32919515
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен.
Но что-то мне подсказывает, что автор вопроса имел в виду какой-то конкретный продукт.
И если ему начнут отвечать про, например, Hyperion Essbase или Oracle Express, а он имел в виду MS AS, то он начнёт задавать уточняющие вопросы, и окажется, что люди зря старались.

Только из этих соображений писал.

2Boom: Сорри, если не по делу наехал.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
один куб или два
    #32919555
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Booom:

Какие основные плюсы и минусы
1.иметь один куб для плановых и фактических данных
2.иметь два разных куба
(ну скорость и время процессинга я понимаю, а с концептуальной точки зрения???)


Я думаю, что правильнее иметь один куб и для плановых, и для фактических данных (поскольку по отдельности план и факт менее интересны, чем в совокупности). Но не все OLAP-сервера умеют делать кубы на основе более чем одной таблицы фактов... Например, Cognos PowerPlay позволяет это сделать, MS Analysis Services - не позволяет.
...
Рейтинг: 0 / 0
один куб или два
    #32919592
Подымался подобный вопрос в свое время...
...
Рейтинг: 0 / 0
один куб или два
    #32919603
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jurii Но не все OLAP-сервера умеют делать кубы на основе более чем одной таблицы фактов... Например, Cognos PowerPlay позволяет это сделать, MS Analysis Services - не позволяет.А что MS AS-у мешает создать куб на основе вьюхи, объединяющей две таблицы фактов?
...
Рейтинг: 0 / 0
один куб или два
    #32919621
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Birkhoff:

А что MS AS-у мешает создать куб на основе вьюхи, объединяющей две таблицы фактов?

Такую вьюху невозможно написать, поскольку у таблиц фактов - разная гранулярность, и в реляционной таблице невозможно разнести агрегированные значения плана по детальным записям факта. Подобная разноска возможна только при многомерном OLAp-моделировании.
...
Рейтинг: 0 / 0
один куб или два
    #32919649
Mosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JuriiMS Analysis Services - не позволяет.

MS AS 2000 позволяет делать следующее:

1. Если гранулярность fact tables одинаковая, т.е. они описывают одни и те же метрики, но в разных срезах, например таблица на каждый год, то можно создать один куб со мновеством partitions. При этом fact tables могут быть из разных источников.

2. Если гранулярность разная - как в примере Booom - план и фактические данные, то можно построить один виртуальный куб который будет это обьединять.

В MS AS 2005, #1 без изменений, a #2 выглядит для пользователя проще (хотя функциональность примерно такая же) - создается один куб с несколькими measure groups.

Моша
----------------------------------------------------
This posting is provided "AS IS" with no warranties, and confers no rights
...
Рейтинг: 0 / 0
один куб или два
    #32919719
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuriiНо не все OLAP-сервера умеют делать кубы на основе более чем одной таблицы фактов... Например, Cognos PowerPlay позволяет это сделать, MS Analysis Services - не позволяет.

Смотря что называть кубом. Если рассматривать виртуальный куб AS2K, то за ним может стоять несколько таблиц фактов.

А начиная с AS2K5 и физический куб можеи базироваться на нескольких таблицах фактов. Кстати в AS2K5 уже нет деления на виртуальные и физические кубы.
...
Рейтинг: 0 / 0
один куб или два
    #32920358
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuriiТакую вьюху невозможно написать, поскольку у таблиц фактов - разная гранулярность, и в реляционной таблице невозможно разнести агрегированные значения плана по детальным записям факта. Подобная разноска возможна только при многомерном OLAp-моделировании.

Юра, это рассуждения человека, не понимающего возможностей SQL.
Видимо, не в меру "интеллектуальный конструктор выражений", ввёл Вас в заблуждение.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
один куб или два
    #32920659
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский JuriiТакую вьюху невозможно написать, поскольку у таблиц фактов - разная гранулярность, и в реляционной таблице невозможно разнести агрегированные значения плана по детальным записям факта. Подобная разноска возможна только при многомерном OLAp-моделировании.

Юра, это рассуждения человека, не понимающего возможностей SQL.
Видимо, не в меру "интеллектуальный конструктор выражений", ввёл Вас в заблуждение.

С уважением,
Константин Лисянский
http://lissianski.narod.ru

Константин, а не могли бы вы более содержательно это прокомментировать.
Правильно ли я представляю, что в случае соединения 2 таблиц с разной гранулярностью одна из них должна быть аггрегрована для приведения гранулярности. Какие еще возможности еще есть? Где про это можно почитать? Кимбал?
...
Рейтинг: 0 / 0
один куб или два
    #32920797
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Допустим, есть таблица с планами продаж:
месяц, продукт, план
И есть с фактами:
дата, продукт, план

Есть ещё таблица месяцв, в которое есть количество дней в месяце и таблица дней.

1. Делаем джойн таблицы дней с таблицей месяцев:

месяц, день, кол-во дней в месяце

Назовём это явление месяц/день

2. Делаем джойн таблицы планов с таблицой месяц/день
день, продукт, план/кол-во дней в месяце

3. Делайм джойн план-факт. У них теперь одинаковая гранулярность.

Получили простейшее разнесение плана на месяц по дням недели.

Даже Кимбала читать не обязательно :)
Просто напрячься надо слегка :)

SQL писать ломает. Извините.
Но, поверьте, во вьюху это всё засунуть проблем не составит.

Причём можно и посложнее вещи делать. То, что, например, простыми алгоритмами разнесения не во всяком OLAP-тулзе сделаешь.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
один куб или два
    #32920798
backfireПравильно ли я представляю, что в случае соединения 2 таблиц с разной гранулярностью одна из них должна быть аггрегрована для приведения гранулярности. Какие еще возможности еще есть? Где про это можно почитать? Кимбал?

Прошу прошения, что отвечаю на вопрос, не ко мне адресованный, но тем не менее...

Насколько я понял, второй путь - это то, что у Кимбала называется allocation - значение факта из таблицы с аггрегированными показателями по какому-либо правилу разносится на несколько записей в более детальной таблице фактов.

Собственно, все об этом прописано в "The data warehouse toolkit, Second Edition", Chapter 5 "Order Management", p. 121, "Header and Line Item Fact with Different Granularity"
...
Рейтинг: 0 / 0
один куб или два
    #32920799
backfireПравильно ли я представляю, что в случае соединения 2 таблиц с разной гранулярностью одна из них должна быть аггрегрована для приведения гранулярности. Какие еще возможности еще есть? Где про это можно почитать? Кимбал?
Я встречался с такими ситуациями:
1) Действительно агрегация данных из таблицы с бОльшей гранулярностью до уровня таблицы с меньшей гранулярностью
2) Дублирование данных из таблицы с большей гранулярностью до уровня таблицы с меньшей гранулярностью. Например, цены заданы на уровне месяца и просто дублируются до уровня отдельных продаж за этот месяц.
3) Преобразование показателя с большей гранулярностью до меньшего уровня. Например, есть затраты на доставку на уровне заказа, нужно распределить их до уровня отдельных товаров. Затраты можно распределить пропорционально весу или количеству единиц товара. Вариантов может быть много.

Читал я об этом в документации по MicroStrategy, там использование фактов с разной гранулярностью называется fact extension.
...
Рейтинг: 0 / 0
один куб или два
    #32920858
По сути задача объединения двух таблиц с разной гранулярностью в терминах DW более общая и часто решается в других областях человеческой деятельности. В частности, как указывал Андрей Прохоров, это например задача разнесения непрямых затрат на виды продукции (или на подразделения фирмы, или на центры дохода и т.п.). В основе метода решения лежит выбор корректного базиса для распределения (в примере Константина - кол-во дней, в примере Андрея - весу или количеству единиц товара.; или занимаемой товаром площади склада, или суммам оплаты основных производственных рабочих разных подразделений, или температуре воздуха в те дни, когда у жены начальника критические дни и т.п.). Я думаю, что почти все, кто здесь присутствует, когда-либо сталкивались с такими задачами. Но это уже имеет мало отношения к обсуждаемой теме и технологии DW/OLAP вообще.
...
Рейтинг: 0 / 0
один куб или два
    #32921302
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Константин Лисянский:

Допустим, есть таблица с планами продаж:
месяц, продукт, план
И есть с фактами:
дата, продукт, план


Не завидую я той компании, у которой так ведется план и факт... План обычног ведется на уровне групп товаров, регионов и месяцев.
А факт - это широкая таблица, с полями дата-время, товар, регион (фед. округ, область, город, район), клиент, менеджер, склад, тип операции и т.д. По некоторым измерениям план надо разносить до того или иного уровня детализации, для разных измерений - разные базисы распределения, для некоторых измерений - план разносить нельзя. Я на 99.9% уверен, что с помощью SQL-запроса (вьюшки) такую задачу решить нельзя (это не просто очень сложно - а скорее - невозможно).
...
Рейтинг: 0 / 0
один куб или два
    #32921398
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuriiЯ на 99.9% уверен, что с помощью SQL-запроса (вьюшки) такую задачу решить нельзя (это не просто очень сложно - а скорее - невозможно).

Спасибо, что сообщили мне об этом. Я и не знал, что это невозможно.
Мне показалось, что я показал решение задачи в общем виде.
В принципе, готов решить и в частном, если Вы поставите условие более формально.

Однако я при этом тоже готов поставить условие - Вы не будете даже заикаться о возможностях SQL и реляционных СУБД на этом форуме.

Ну как?


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
один куб или два
    #32921563
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей Прохоров backfireПравильно ли я представляю, что в случае соединения 2 таблиц с разной гранулярностью одна из них должна быть аггрегрована для приведения гранулярности. Какие еще возможности еще есть? Где про это можно почитать? Кимбал?
Я встречался с такими ситуациями:
1) Действительно агрегация данных из таблицы с бОльшей гранулярностью до уровня таблицы с меньшей гранулярностью
2) Дублирование данных из таблицы с большей гранулярностью до уровня таблицы с меньшей гранулярностью. Например, цены заданы на уровне месяца и просто дублируются до уровня отдельных продаж за этот месяц.
3) Преобразование показателя с большей гранулярностью до меньшего уровня. Например, есть затраты на доставку на уровне заказа, нужно распределить их до уровня отдельных товаров. Затраты можно распределить пропорционально весу или количеству единиц товара. Вариантов может быть много.

Читал я об этом в документации по MicroStrategy, там использование фактов с разной гранулярностью называется fact extension.

Да видно что то с утра был сонный и не сообразил.
Однако юзал я уже все эти 3 вида :-), и давно все это было, что сходу у меня даже ассоциации на эту тему не возникли.

JuriiЯ на 99.9% уверен, что с помощью SQL-запроса (вьюшки) такую задачу решить нельзя (это не просто очень сложно - а скорее - невозможно).

Если запросы строить, елозя мышем по столу, то вы скорее всего правы - невозможно, а если головой думать и руками писать, то все возможно.
...
Рейтинг: 0 / 0
один куб или два
    #32921736
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to backfire --
Поддерживаю SQL это рульная штука! Я даже могу нарастающий итог посчитать на диалекте Oracle. --


Юрий дайте пример.
У меня есть опыт реализации декомпазиции планов по дням с учетом их доли в прошом периоде. Это прогноз между прочем!!!
И работает этот запрос пулей..


Ответ на топик....

Я бы посоветовал сделать один куб, так проше работат и это не так сложно как кажеться и проше в обслужевании. Один куб не два...

P.S.
OLAP всеволишь измерительный инструмент, это только благодоря всяким оптимистам типа Константина и Юрия он стал нечно таким уж запредельным, а в целом он просто может промерить вам факт с учетом ваших размеров!
...
Рейтинг: 0 / 0
один куб или два
    #32921795
noodle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
backfire
Если запросы строить, елозя мышем по столу, то вы скорее всего правы - невозможно, а если головой думать и руками писать, то все возможно.

Да, но тогда зачем нужен интеллектуальный построитель запросов Impromptu. Наверное, он не такой уж "интеллектуальный".
...
Рейтинг: 0 / 0
один куб или два
    #32921989
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Константин Лисянский:

Я на 99.9% уверен, что с помощью SQL-запроса (вьюшки) такую задачу решить нельзя (это не просто очень сложно - а скорее - невозможно).
Спасибо, что сообщили мне об этом. Я и не знал, что это невозможно.


Отлично, теперь Вы это знаете :)

Мне показалось, что я показал решение задачи в общем виде.

Вспомните математику. Корни полиномиального многочлена до третьей степени можно найти по формулам, но вот начиная с четвертой степени - это невозможно. Примерно то же самое относится к количеству полей в таблице фактов.

В принципе, готов решить и в частном, если Вы поставите условие более формально.

Я постараюсь, хотя это довольно трудоемко - набить вручную то, что годами пользователи заносят в учетную систему...

Однако я при этом тоже готов поставить условие - Вы не будете даже заикаться о возможностях SQL и реляционных СУБД на этом форуме.

Вы хотите, чтобы содержание форума обеднело? Я может не самый крутой эксперт в РСУБД и SQL, но и не ламер...

2 backfire & noodle:

Если запросы строить, елозя мышем по столу, то вы скорее всего правы - невозможно, а если головой думать и руками писать, то все возможно.
Да, но тогда зачем нужен интеллектуальный построитель запросов Impromptu. Наверное, он не такой уж "интеллектуальный".


Господа, представьте, что Вы написали ручками сложный SQL-запрос, потом вас уволили, а через месяц Вашему бывшему руководителю захотелось по-другому распределить значение плана по уровням иерархии факта... Он попросит это сделать программиста, который будет работать после вас, этот программист не сможет разобраться в вашем сложном запросе... Трагедия какая-то. Вот поэтому разумные руководители, когда выбирают для себя аналитическую систему, всегда задумываются, не будут ли они зависеть от разработчиков и программистов? Если в системе есть конструктор выражений - то в его формулах разбораться несложно, а в рукописном коде - сложно.
...
Рейтинг: 0 / 0
один куб или два
    #32921997
Jurii Вы написали ручками сложный SQL-запрос, потом вас уволили Богатый жизненный опыт? ;)
...
Рейтинг: 0 / 0
один куб или два
    #32922001
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Злобный ныпэрс:

Вы написали ручками сложный SQL-запрос, потом вас уволили
Богатый жизненный опыт? ;)


Увы, в этой области у меня вообще нет никакого опыта. Меня никогда не увольняли :(
...
Рейтинг: 0 / 0
один куб или два
    #32922032
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuriiГоспода, представьте, что Вы написали ручками сложный SQL-запрос, потом вас уволили, а через месяц Вашему бывшему руководителю захотелось по-другому распределить значение плана по уровням иерархии факта...


Юра, всегда есть люди, кто готов и стоит даже в очереди чтобы платить за езду на Mазерати ручной сборки, хотя большинство ездит на Меринах конвейрных.

Обычно спецы экстракласса уходят сами.... Работодатель в таком случае само виноват, что не смог удержать.
...
Рейтинг: 0 / 0
один куб или два
    #32922036
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 OLAPMASTER & Константин Лисянский:

Юрий дайте пример.
В принципе, готов решить и в частном, если Вы поставите условие более формально.


Попробую привести пример:

План:
Год, ПлановаяВыручка
2004, 100

Факт:
Дата, Товар, Город, РекламнаяКампания, Фактическая выручка, Масса
15.02.2004, Пиво Балтика, Москва, Реклама была, 50, 4
24.03.2004, Пиво Сибирская Корона, Рекламы не было, Москва, 30, 5
12.06.2004, Пиво Балтика, Реклама была, Санкт-Петербург, 5, 1

Задача:
Распределить плановую выручку по товарам пропорционально их массе, и при этом плановая выручка по городам должна быть распределена пропорционально фактической выручке. По разрезу (измерению) РекламнаяКампания плановую выручку не распределять, только показать общей суммой в итоговой строке отчета.

Ну как, есть мнения как решить эту задачку без помощи OLAP на уровне вьюшки? Здесь несколько измерений, у каждого - своя база для распределения, и есть противоречие - я считаю, что без использования кубика в плоской вьюшке сделать ничего не удастся.
Также стоит учесть, что в реальных базах данных - серьезные объемы данных.
...
Рейтинг: 0 / 0
один куб или два
    #32922115
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хоть вопрос и не мне адресован, но все же.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select p.year, f.tovar, f.city, sum(p.plan*(t.f/c.f)*(f.weight/t.w)) new_plan
from
(select year, plan from plan) p,
(select to_number(to_char(data,'YYYY')) year,sum(fact) f
from fact
group by to_number(to_char(data,'YYYY'))) c,
(select to_number(to_char(data,'YYYY')) year,city, sum(fact) f,sum(weight) w
from fact
group by to_number(to_char(data,'YYYY')), city) t,

(select to_number(to_char(data,'YYYY')) year,tovar,city, weight, fact
from  fact) f
where f.year=p.year and 
      f.year=c.year and
      f.year=t.year and f.city=t.city
group by p.year, f.tovar, f.city  
Если я правильно понял ваше "парадоксальное" условие, то ответ будет примерно такой (В Oracle, хотя тут ничего неиспользуется приницпиально ораклового). Я подозреваю, что запрос можно еще упростить.

Результат по вашим данным такой:
Код: plaintext
1.
2.
3.
YEAR	TOVAR			CITY		NEW_PLAN
 2004 	Пиво Балтика		Москва		 41 , 8300653594771 
 2004 	Пиво Сибирская Корона	Москва		 52 , 2875816993464 
 2004 	Пиво Балтика		Санкт Петербург	 5 , 88235294117647 
Если ответ неправильный, покажите какой должен быть правильный и почему.
...
Рейтинг: 0 / 0
один куб или два
    #32922989
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Birkhoff:

Спасибо. А то я тут немного отвлёкся на работу :))
На самом деле, я хотел попросить Юрия, чтобы он сформулировал задачу по правилам форума (CREATE TABLE, INSERT INTO, чтодолжно получиться в результате), но руки не дошли.

Понятно, что ничего сложного в этой Юриной задачке для SQL нету.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
один куб или два
    #32924206
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
select p.year, f.tovar, f.city, sum(p.plan*(t.f/c.f)*(f.weight/t.w)) new_plan
from

(select year, plan from plan) p, -- План

(select to_number(to_char(data,'YYYY')) year,sum(fact) f
from fact
--
where to_number(to_char(data,'YYYY')) = 2004
--
group by to_number(to_char(data,'YYYY'))) c, Итого!!! за 2004 год


(select to_number(to_char(data,'YYYY')) year,city, sum(fact) f,sum(weight) w
from fact
--
where to_number(to_char(data,'YYYY')) = 2004
--
group by to_number(to_char(data,'YYYY')), city) t, Выручка по годам за год



(select to_number(to_char(data,'YYYY')) year,tovar,city, weight, fact
from fact) f и сам факт по дням!!

where f.year=p.year and
f.year=c.year and
f.year=t.year and
f.city=t.city

group by p.year, f.tovar, f.city

Ну что добавить могу, Birkhoff это хороший запрос. Правда план наверно сказал тебе MERGE JOIN CARTESIAN?? НУ ВООБЩЕМ ДОБАВИТЬ НИЧЕГО НЕ МОГУ ЕСТЬ ТАКОЙЖЕ ЗАПРОС ТОЛЬКО СБОКУ НАПИСАНЫЙ.
И ЮРА КАКТО ЗАДАЧУ ПОСТАВИЛ СКОЛЬСКО. МОЕ ВИДИНИЕ ТАК:

SELECT FACT_ALL.YEAR,
FACT_ALL.ITEM,
FACT_ALL.CITY,
PLAN.PLAN * (ITEM_WEIGHT / WEIGHT_YEAR) * (CITY_VAL / VAL_YEAR) NEW VAL

(SELECT YEAR, PLAN FROM PLAN) PLAN,

(SELECT YEAR, CITY, SUM(VAL), FROM FACT
GROUP BY YEAR, CITY) CITY_VAL,

(SELECT YEAR, ITEM, SUM(WEIGHT) FROM FACT
GROUP BY YEAR, ITEM) ITEM_WEIGHT,

(SELECT YEAR , SUM(WEIGHT) FROM FACT
GROUP BY YEAR) WEIGHT_YEAR,

(SELECT YEAR, SUM(VAL) FROM FACT
GROUP BY YEAR) VAL_YEAR ,

(SELECT UNIQUE YEAR, CITY, ITEM FROM FACT) FACT_ALL

WHERE PLAN.YEAR = CITY_VAL.YEAR,
AND ITEM_WEIGHT.YEAR = CITY_VAL.YEAR,
AND WEIGHT_YEAR.YEAR = ITEM_WEIGHT.YEAR;,
AND VAL_YEAR.YEAR = WEIGHT_YEAR.YEAR,
AND FACT_ALL.YEAR = VAL_YEAR.YEAR -- НУ ВРОДЕ ВСЕ ГОДА
СОЕДИНИЛ
AND FACT_ALL.CITY = CITY_VAL.CITY
AND FACT_ALL.ITEM = ITEM_WEIGHT.ITEM

Я ТАК ТОЧНО НЕ ПОНЯЛ ЧТО ХОТЕЛ ЮРИЙ ЛИБО ТАК ЛИБО КАК ЭТО СДЕЛАЛ Birkhoff.
...
Рейтинг: 0 / 0
один куб или два
    #32924353
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLAPMASTER

Спасибо за замечание, но я ведь говорил что запрос можно усовершенствовать.

Ну а если использовать оракловые фенечки, то переписать (мой) запрос можно например так:
Код: plaintext
1.
2.
3.
4.
select to_number(to_char(data,'YYYY')),tovar, city,
plan.plan*(sum(fact) over (partition by city)/sum(fact) over ())*
(sum(weight) over (partition by city,tovar)/sum(weight) over (partition by city))
from fact,plan
where to_char(fact.data,'YYYY')=plan.year
Результат выдает тот же.
На Юриных данных ему даже GROUP BY не нужен :)
...
Рейтинг: 0 / 0
один куб или два
    #32924389
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Birkhoff:

Если я правильно понял ваше "парадоксальное" условие, то ответ будет примерно такой

Мое условие не парадоксальное, а взятое из жизни.

Если ответ неправильный, покажите какой должен быть правильный и почему

Спасибо за такой красочный SQL-запрос, он сделан изящно, но ответ - неправильный, и тут даже комментировать нечего. Но для тех кто не имеет под рукой калькулятора и не дружит с устным счетом, прокомментирую:
Задача в том, чтобы распределить плановую выручку - 100 единиц по товарам, пропорционально массе. То есть на первую запись приходится (4 * 100)/(4 + 5 + 1) = 40. На вторую - 50. На третью - 10. При этом распределение по городам должно быть пропорционально фактической выручке. То есть на первую запись приходится (50 * 100)/(50 + 30 + 5) = 58.82. На вторую - 35.29. На третью - 5.88.
Как мы видим, имеется противоречие, поскольку базы распределения - разные. Поэтому на уровне плоской вьюшки (SQL-запросом) задачу решить невозможно. Эту задачу можно решить только с помощью OLAP.
...
Рейтинг: 0 / 0
один куб или два
    #32924407
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то я не понял? То есть один запрос должен выводить два распределения одновремнно?
Код: plaintext
1.
2.
3.
4.
select to_number(to_char(data,'YYYY')) YEAR,tovar, city,
plan*weight/sum(weight) over () plan_by_WEIGHT,
plan*fact/sum(fact) over() plan_by_fact
from fact,plan
where to_char(fact.data,'YYYY')=plan.year

В результате получаем
Код: plaintext
1.
2.
3.
YEAR	TOVAR			CITY		PLAN_BY_WEIGHT	PLAN_BY_FACT
 2004 	Пиво Балтика		Москва		 40 		 58 , 8235294117647 
 2004 	Пиво Сибирская Корона	Москва		 50 		 35 , 2941176470588 
 2004 	Пиво Балтика		Санкт Петербург	 10 		 5 , 88235294117647 
Что и требовалось доказать?
ПРосто в первом запросе я сначала считал пропорцию выручки по городам, а потом внутри города делал разнос плана в зависимости от веса товара.
Но тут задача еще проще, просто нужно обсчитать два разных плана.

Объясните, в чем приницпиальное отличие SQL запросов написанных руками от тех, что построены мышкой?
...
Рейтинг: 0 / 0
один куб или два
    #32924435
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuriiКак мы видим, имеется противоречие, поскольку базы распределения - разные. Поэтому на уровне плоской вьюшки (SQL-запросом) задачу решить невозможно. Эту задачу можно решить только с помощью OLAP.

Юра, вы заблуждаетесь. Та задача, что вы обрисовали - подпадает под условие многомерной линейной интерполяции, и ваш подход с действиями на калькуляторе тут не катит. Ибо желаемую точку надо находить двигаясь не поочереди вдоль координатных осей, что вы делаете поочередными действиями на калькуляторе, а одновременно, предварительно рассчитав, вектора, что и делают вышеприведенные SQL запросы.
...
Рейтинг: 0 / 0
один куб или два
    #32925448
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Birkhoff:

Что то я не понял? То есть один запрос должен выводить два распределения одновремнно?

Задача требует, чтобы в зависимости от выбранного среза в отчете использовался тот или иной алгоритм распределения (на основе той или иной базы). В нашей дискуссии обсуждается, можно ли решить эту задачу, написав SQL-запрос. Я считаю - что нельзя, некоторые эксперты по SQL - считают что можно. Думаю шаг за шагом мы приближаемся к ясности, что SQL-запрос для решения этой задачи написать невозможно по определению.

В результате получаем
Что и требовалось доказать?
Но тут задача еще проще, просто нужно обсчитать два разных плана.


Теоретически некоторые правильные цифры Вы получили, но вот только у Вас уже получилось 2 показателя, вместо одной Плановой Выручки... Что будет, если разных баз для распределения в модели будет больше, например 10? Вы сделаете 10 показателей? Ну и наконец, Вы как-то забыли про поле с рекламной кампанией - по ней нельзя распределять Плановую Выручку...

Объясните, в чем приницпиальное отличие SQL запросов написанных руками от тех, что построены мышкой?

Разницы разумеется нет. Просто в данной задаче к решению я прихожу не с помощью SQL-запросов, созданных мышкой, а с помощью проектирования OLAP-куба на основе двух таблиц фактов разной гранулярности. Для каждого измерения OLAP-куба я мышкой указываю базу распределения для показателя Плановая Выручка.

2 backfire:

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

Калькулятор я упомянул, поскольку с его помощью можно проверить правильность решения задачи (но я не предлагаю с помощью него решать задачу).
...
Рейтинг: 0 / 0
один куб или два
    #32925993
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий, правильно сказал Константин - нужно было попросить задачу в классическом оформлении - что на входе, что точно на выходе.

А то с каждой итерацией возникают новые условия.

Может быть эту задачу принципиально невозможно решить на компьютере, а только на калькуляторе?
Потому что основная вирутальная вьюшка, которая задает условие находится у вас в голове? :)
Пока "приницпиальная невозможность" ясна только вам.
...
Рейтинг: 0 / 0
один куб или два
    #32926268
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юра, чтобы облегчить теоретическое понимание того, почему это можно сделать с помощью SQL приведу такое соображение, ибо задача, которую Вы ставите, до сих пор не описана формально.
Итак. Многомерное пространство представляется в реляционной БД с помощью так называемой схемы звезда (те самые таблицы фактов, которые Вы используете для кубов). Соответственно, все данные, которые нужны для проведения вычислений, которые нужны для разнесения планов присутствуют в реляционных таблицах.
Возможно, кто-то сказал Вам, что SQL не умеет напрямую адресовать ячейки таблиц в произвольном порядке, и на этом Вы строите свои аргументы.
Однако это не так, с помощью SQL вполне можно адресовать любые ячейки двумерной таблицы (которая, как мы выяснили, реализует многомерную модель). Имея всё это в виду не очень понятно, почему на SQL нельзя реализовать вышеобозначенную операцию.
Ваши аргументы (а точнее их отсутствие), сводятся к тому, что этого не может быть, потому что не может быть никогда.
Учитывая, что Ваше общение с SQL происходит через не в меру интеллектуальный конструктор выражений (который, несмотря на Ваши утверждения, не сможет сгенерировать SQL произвольной сложности, это я утверждаю на основе своей практики, просьба не пенять по поводу того, что я не заказал у Вас соответствующий тренинг, просто не было соответствюущего бюджета :).
И действительно, через построитель запросов Impromptu, действительно, сложно будет построить SQL-запрос, который привели коллеги выше.

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


С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
один куб или два
    #32926362
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача требует, чтобы в зависимости от выбранного среза в отчете использовался тот или иной алгоритм распределения (на основе той или иной базы).

Этож кто так задачу ставит? Вы сами это придумали или вам это заказчик заказал?

Так такому заказчику в первую очередь надо пройти тренинг по многомерному распределению данных. Хотя если извилина одна и по той катком проехали, то никакой тренинг не поможет.
...
Рейтинг: 0 / 0
один куб или два
    #32926372
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BirkhoffOLAPMASTER

Спасибо за замечание, но я ведь говорил что запрос можно усовершенствовать.

Ну а если использовать оракловые фенечки, то переписать (мой) запрос можно например так:
Код: plaintext
1.
2.
3.
4.
select to_number(to_char(data,'YYYY')),tovar, city,
plan.plan*(sum(fact) over (partition by city)/sum(fact) over ())*
(sum(weight) over (partition by city,tovar)/sum(weight) over (partition by city))
from fact,plan
where to_char(fact.data,'YYYY')=plan.year
Результат выдает тот же.
На Юриных данных ему даже GROUP BY не нужен :)
Классный запрос, over (partition by city) такой связкой я считал нарастающий итог.
Юрий, ну даже если мы с помошью over (partition by) не можем написать этот чудо запрос, то мы может прибегнуть к PL/SQL и тогда Ваша задача решаеться очень просто. Если Вы не знаете что это такое, то это язык программирования где можно пошагово разобрать каждую запись и понять что и сней делать, так что я думаю в этом проблем не будет.

Birkhoff
??? Спасибо за замечание ???

Это не замечание, просто интересно как оптимизатор будет это выполнят.
Так он декартовым произведением пошел?
...
Рейтинг: 0 / 0
один куб или два
    #32926461
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLAPMASTERмы может прибегнуть к PL/SQL

Ну, это будет не совсем правильно. Речь идёт о решении задачи одним запросом.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
один куб или два
    #32926510
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Константин Лисянский OLAPMASTERмы может прибегнуть к PL/SQL

Ну, это будет не совсем правильно. Речь идёт о решении задачи одним запросом.

С уважением,
Константин Лисянский
http://lissianski.narod.ru

Константин я конечно понимаю FAIR PLAY. Но Юрий непонятно ставит задачу и всетаки важно достежения результата и если Юрию потребуеться постоить аж целый куб что бы ее решит, то я думаю анонимный блок PL/SQL который вставит записи в табличку это вполне честно. Примеры которые были приведены выше решали задачу Юрия. Если он с этим не согласен, пусть точнее поставить задачу.

P.S. на войне все средства хороши.
...
Рейтинг: 0 / 0
один куб или два
    #32926577
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLAPMASTERBirkhoff
??? Спасибо за замечание ???

Это не замечание, просто интересно как оптимизатор будет это выполнят.
Так он декартовым произведением пошел?А я понял комментарий как замечание :)
И действительно присмотрелся и нашел как можно обойтись без внешнего Group by. Хотя cost запроса остался такой же. Но видимо это зависит еще и от объемов.
Да, был декартов джойн.
...
Рейтинг: 0 / 0
один куб или два
    #32926855
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Birkhoff OLAPMASTERBirkhoff
??? Спасибо за замечание ???

Это не замечание, просто интересно как оптимизатор будет это выполнят.
Так он декартовым произведением пошел?А я понял комментарий как замечание :)
И действительно присмотрелся и нашел как можно обойтись без внешнего Group by. Хотя cost запроса остался такой же. Но видимо это зависит еще и от объемов.
Да, был декартов джойн.

Поправь меня если я не прав но over (partition by) он понимает как Group by да?? Или как то по другому работает??
...
Рейтинг: 0 / 0
один куб или два
    #32927161
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 all SQL Experts:

Господа, давайте будем закруглять дискуссию, придем к консенсусу.
Представьте, что у нас есть кубик - в нем 5 измерений по 100 элементов в каждом. Средствами многомерного моделирования можно совместить в кубе несколько таблиц фактов (факт, план, прогноз и т.п.) и разнести агрегированные значения на детальные уровни иерархии.

Любое число из этого куба можно вычислить с помощью SQL-запроса, написанного ручками. Можно и всю многомерную модель представить в виде плоской вьюшки. Но представьте, что это будет за вьюшка - в ней будет 10 миллиардов строк...

Так что предлагаю сделать такой вывод - теоретически SQL-запрос написать можно, но он будет медленно работать, и его юзабилити будет нулевым. Поэтому на практике стоит решать эту задачу с помощью MOLAP.
Что касается правильной формулировки задачи - я подумаю, постараюсь ее сформулировать, чтобы всем было понятно, но думаю и сейчас всем это понятно.
...
Рейтинг: 0 / 0
один куб или два
    #32927180
олапист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jurii2 all SQL Experts:

Господа, давайте будем закруглять дискуссию, придем к консенсусу.
Представьте, что у нас есть кубик - в нем 5 измерений по 100 элементов в каждом. Средствами многомерного моделирования можно совместить в кубе несколько таблиц фактов (факт, план, прогноз и т.п.) и разнести агрегированные значения на детальные уровни иерархии.

Любое число из этого куба можно вычислить с помощью SQL-запроса, написанного ручками. Можно и всю многомерную модель представить в виде плоской вьюшки. Но представьте, что это будет за вьюшка - в ней будет 10 миллиардов строк...

Так что предлагаю сделать такой вывод - теоретически SQL-запрос написать можно, но он будет медленно работать, и его юзабилити будет нулевым. Поэтому на практике стоит решать эту задачу с помощью MOLAP.
Что касается правильной формулировки задачи - я подумаю, постараюсь ее сформулировать, чтобы всем было понятно, но думаю и сейчас всем это понятно.

и опять Вы как всегда неправы на счет медленной работы запросов
к Вашему сведению в современных СУБД есть такой модуль как оптимизатор запросов, который не будет без крайней надобности вытягивать по 10 миллиардов строк
это тоже стоит обьяснить Вам подробнее?
...
Рейтинг: 0 / 0
один куб или два
    #32927290
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuriiТак что предлагаю сделать такой вывод - теоретически SQL-запрос написать можно, но он будет медленно работать, и его юзабилити будет нулевым. Поэтому на практике стоит решать эту задачу с помощью MOLAP.
Что касается правильной формулировки задачи - я подумаю, постараюсь ее сформулировать, чтобы всем было понятно, но думаю и сейчас всем это понятно.

Юра, я хоть и не причисляю себя к экпертам SQL и являюсь приверженцем (M)OLAP, но тут с вами категорически не соглашусь.

С чего вы взяли, что все эти 10 миллиардов кому то разом понадобятся?
С чего вы взяли, что запросы на распределение будут тормозить?

Все это голословно. Тем более из ваших уст. (вы себя никак не показали что вы DWH/ROLAP/SQL эксперт).

Вы просто не делали на SQL ничего серьезного и у вас предубеждение, что SQL это "каменный век, когда колеса еще не были круглыми". Каждый инсртрумент в руках мастера способен творить чудеса. И не надо хаять SQL, просто потому что он вам не по-душе и вы предпочитаете мышку клавиатуре.
...
Рейтинг: 0 / 0
один куб или два
    #32927292
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
олаписти опять Вы как всегда неправы на счет медленной работы запросов
к Вашему сведению в современных СУБД есть такой модуль как оптимизатор запросов, который не будет без крайней надобности вытягивать по 10 миллиардов строк
это тоже стоит обьяснить Вам подробнее?

Просто объяснить в форуме мало - надо тренинг пройти. :-)
...
Рейтинг: 0 / 0
один куб или два
    #32928149
Angel13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 OLAPMASTER
Поддерживаю SQL это рульная штука! Я даже могу нарастающий итог посчитать на диалекте Oracle

Классный запрос, over (partition by city) такой связкой я считал нарастающий итог.


А что используя ANSI SQL посчитать нарастающий итог нельзя?
...
Рейтинг: 0 / 0
один куб или два
    #32928350
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Angel132 OLAPMASTER
Поддерживаю SQL это рульная штука! Я даже могу нарастающий итог посчитать на диалекте Oracle

Классный запрос, over (partition by city) такой связкой я считал нарастающий итог.


А что используя ANSI SQL посчитать нарастающий итог нельзя?
Можно, но так меньше писать. :)
Да и оптимизатор думаю так эффективнее работает.
...
Рейтинг: 0 / 0
один куб или два
    #32928895
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Angel132 OLAPMASTER
Поддерживаю SQL это рульная штука! Я даже могу нарастающий итог посчитать на диалекте Oracle

Классный запрос, over (partition by city) такой связкой я считал нарастающий итог.


А что используя ANSI SQL посчитать нарастающий итог нельзя?

Я поправлю Birkhoff, дело в том что нарастающий итог на ANSI SQL только по первичному ключу с подзапросом. Тоесть вы в нутри запроса двигаясь по записям, находите меньшие значения первичного ключа и делаете sum от текушего к меньшему.
Это очень медленно если на большой таблице но это возможно, но а если у вас не первичного ключа то я незнаю как возможно посчитать нарастающий итог. Даже немогу предположить. Может Birkhoff у тебя уже есть опыт написания подобного запроса, я бы с удовольствием посмотрел на него.
...
Рейтинг: 0 / 0
один куб или два
    #32928981
Angel13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLAPMASTERЯ поправлю Birkhoff, дело в том что нарастающий итог на ANSI SQL только по первичному ключу с подзапросом. Тоесть вы в нутри запроса двигаясь по записям, находите меньшие значения первичного ключа и делаете sum от текушего к меньшему

Зачем же вложенный подзапрос? можно и просто JOIN'ом.

select T1.USERNAME, T1.USER_ID, sum(T2.USER_ID)
from DBA_USERS T1
join DBA_USERS T2 on T1.USERNAME >= T2.USERNAME
group by T1.USERNAME, T1.USER_ID
order by 1

-- выполнять на Oracle.
Но согласен, что аналитические функции будут работать быстрее. Сам Кайт об этом писал :)
...
Рейтинг: 0 / 0
один куб или два
    #32929014
Alex_D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему аналитические функции уже стандартизованы в ANSI SQL.

Вот, например, статейка ...
...
Рейтинг: 0 / 0
один куб или два
    #32929118
Владимир Штепа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа, тема про нарастающий итог средствами SQL несомненно интересна, но нельзя ли это вынести в отдельный топик.

Иногда складывается впечатление, что топика в нашем форуме очень похожи на застольные беседы, начинем о "внутренних делах в Гондурасе", а заканчиваем "про урожайность кукурузы на Аляске".
...
Рейтинг: 0 / 0
один куб или два
    #32929202
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Angel13 OLAPMASTERЯ поправлю Birkhoff, дело в том что нарастающий итог на ANSI SQL только по первичному ключу с подзапросом. Тоесть вы в нутри запроса двигаясь по записям, находите меньшие значения первичного ключа и делаете sum от текушего к меньшему

Зачем же вложенный подзапрос? можно и просто JOIN'ом.

select T1.USERNAME, T1.USER_ID, sum(T2.USER_ID)
from DBA_USERS T1
join DBA_USERS T2 on T1.USERNAME >= T2.USERNAME
group by T1.USERNAME, T1.USER_ID
order by 1

-- выполнять на Oracle.
Но согласен, что аналитические функции будут работать быстрее. Сам Кайт об этом писал :)
И что оптимизатор сказал на этот запрос какой у него план???
join DBA_USERS T2 on T1.USERNAME >= T2.USERNAME с таким соединением наверно хороший план выполнения.
Я вот выполнил для DBA_USERS и план был вообще нереальный.
...
Рейтинг: 0 / 0
один куб или два
    #32929235
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 олапист & backfire:

и опять Вы как всегда неправы на счет медленной работы запросов

Вы хотите сказать, что прямые SQL-запросы всегда работают быстро?
Недавно я анализировал данные объемом около 30 тысяч записей - делал аналитические запросы, создавал вычисляемые показатели на основе статистических функций - выполнялись SQL-запросы очень небыстро...

к Вашему сведению в современных СУБД есть такой модуль как оптимизатор запросов, который не будет без крайней надобности вытягивать по 10 миллиардов строк
это тоже стоит обьяснить Вам подробнее?


Это было небольшой провокацией с моей стороны, когда я озвучил цифру 10 миллиардов. Такой объем является привычным для телекомовских компаний, и многие участиники форума работали с этими объемами. Но если мы в моем кубике сделаем не 5, а 6 измерений - тогда объем данных будет не 10 миллиардов, а 1000 миллиардов (триллион). Если в кубе будет 10 измерений, и в каждом не по 100, а побольше мемберов, то плоское представление такого куба не поместится ни на одно средство хранения данных - или если поместится, то будет стоить очень дорого. При этом если кубик лежит в среде MOLAP, он не требует серьезного железа.
Таким образом, Ваши рассуждения про оптимизаторы современных СУБД - это в данном случае - научные мысли вслух, не имеющие ничего общего с реальной жизнью.
...
Рейтинг: 0 / 0
один куб или два
    #32929270
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jurii2 олапист & backfire:

и опять Вы как всегда неправы на счет медленной работы запросов

Вы хотите сказать, что прямые SQL-запросы всегда работают быстро?
Недавно я анализировал данные объемом около 30 тысяч записей - делал аналитические запросы, создавал вычисляемые показатели на основе статистических функций - выполнялись SQL-запросы очень небыстро...

к Вашему сведению в современных СУБД есть такой модуль как оптимизатор запросов, который не будет без крайней надобности вытягивать по 10 миллиардов строк
это тоже стоит обьяснить Вам подробнее?


Это было небольшой провокацией с моей стороны, когда я озвучил цифру 10 миллиардов. Такой объем является привычным для телекомовских компаний, и многие участиники форума работали с этими объемами. Но если мы в моем кубике сделаем не 5, а 6 измерений - тогда объем данных будет не 10 миллиардов, а 1000 миллиардов (триллион). Если в кубе будет 10 измерений, и в каждом не по 100, а побольше мемберов, то плоское представление такого куба не поместится ни на одно средство хранения данных - или если поместится, то будет стоить очень дорого. При этом если кубик лежит в среде MOLAP, он не требует серьезного железа.
Таким образом, Ваши рассуждения про оптимизаторы современных СУБД - это в данном случае - научные мысли вслух, не имеющие ничего общего с реальной жизнью.

Можно хранить их отдельно, и соединять в запросах. Можно сделать несколько таблиц, которые будут хранить измерения и одну таблицу фактов и через join и union можно получить похожую информацию что и в кубе. Конечно это будет медленее чем куб (там как он хранит ответы) но это реально и не так уж ресурсоемко. Весь вопрос в оптимальном хранении информации, не в одну таблицу а разряженно.
...
Рейтинг: 0 / 0
один куб или два
    #32929426
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий,

насколько я понимаю, дискуссия уже идёт не на тему "возможно ли реализовать сложный алгоритм разнесения с помощью SQL". Выяснили, что возможно. Теперь идёт вопрос о скорости.
Таким образом, поскольку вопрос о возможностях SQL решён в положительную сторону, думаю, Вам пора начать выполнять Вашу часть обязательств относительно прекращения дискуссий по поводу SQL с Вашей стороны.

Своими рассуждениями по поводу SQL Вы очень сильно смешите публику.
Нельзя же в каждом топике устраивать такую клоунаду.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
один куб или два
    #32932210
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Константин Лисянский:

насколько я понимаю, дискуссия уже идёт не на тему "возможно ли реализовать сложный алгоритм разнесения с помощью SQL". Выяснили, что возможно. Теперь идёт вопрос о скорости.

Вы не правы. Если провести параллель, то планировать ресурсы предприятия можно без ERP-системы, достаточно лишь иметь карандаш и бумагу. Расчеты на бумаге провести будет конечно очень трудоемко, но это другой вопрос - главное что можно все точно посчитать :)
Я не считаю жизнеспособным решение этой задачи на SQL. Или Вы готовы при добавлении каждого нового аналитического разреза, при увеличении количества записей на порядки (10 миллиардов -> триллион -> сто триллионов...) расширять вычислительную мощность и дисковое пространство сервера? Таких серверов то не бывает...
К тому же, решение на SQL требует добавления нового показателя при появлении каждого нового разреза (базы распределения), что мягко говоря не очень удобно.

Таким образом, поскольку вопрос о возможностях SQL решён в положительную сторону

Вы хотите притянуть за уши неработающее решение...

Своими рассуждениями по поводу SQL Вы очень сильно смешите публику.

Видимо Вы слишком много начитались классики по хранилищам данных, и немного отстали от жизни. А такие скромные специалисты как я - вовсю создают хранилища и витрины данных, которые реально работают :)
...
Рейтинг: 0 / 0
один куб или два
    #32932253
Jurii А такие скромные специалисты как я - вовсю создают хранилища и витрины данных, которые реально работают :)
Сильно сказано ...

Jurii Я не считаю жизнеспособным решение этой задачи на SQL. Или Вы готовы при добавлении каждого нового аналитического разреза, при увеличении количества записей на порядки (10 миллиардов -> триллион -> сто триллионов...) расширять вычислительную мощность и дисковое пространство сервера? Таких серверов то не бывает...
Такие цитаты нужно сразу в FAQ заносить. Не дай бог затеряются.
...
Рейтинг: 0 / 0
один куб или два
    #32932326
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuriiИли Вы готовы при добавлении каждого нового аналитического разреза, при увеличении количества записей на порядки (10 миллиардов -> триллион -> сто триллионов...)

Юрий, не бросайтесь попусту цифрами.
Возьмите в руки Ваш любимый калькулятор (или пресловутый не в меру Интеллектуальный построитель выражений) и приведите вычисления откуда у Вас получаются эти записи. А то я что-то (видимо, после большого количества прочитанной классики) не понимаю.

JuriiВы хотите притянуть за уши неработающее решение...
Да, вы и задачу-то не сформулировали до сих пор, а уже вовсю поносите решение. Нехорошо как-то.

JuriiВидимо Вы слишком много начитались классики по хранилищам данных, и немного отстали от жизни
Видимо, да. В эксперты не набиваюсь.

JuriiА такие скромные специалисты как я
Клинический случай
На Вас надо бы господина Иванова напустить, он как психолог Вам поможет.



С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
один куб или два
    #32932333
Birkhoff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юра, где вы научились этому мастерству подмены понятий? :)

Я уж не говорю о мастерстве "притягивания за уши неработающих решений" :)
Тут уж с вами мало кто может тягаться.
...
Рейтинг: 0 / 0
один куб или два
    #32932725
Андрей Прохоров Jurii А такие скромные специалисты как я - вовсю создают хранилища и витрины данных, которые реально работают :)
Сильно сказано ...


Ага если учесть, что Юрий является ярым противником создания хранилищ данных. Он приверженец все делать на виртуальных вьюшках за пять дней. :))

to Jurii

А Вы случаем не карточный шулер. Очень уж умело передергиваете и блефуете. Я Вами восхищаюсь - такой талант пропадает.
...
Рейтинг: 0 / 0
один куб или два
    #32932917
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Андрей Прохоров:

Я не считаю жизнеспособным решение этой задачи на SQL.
Такие цитаты нужно сразу в FAQ заносить. Не дай бог затеряются.


Зачем заносить, это и так все знают (из тех кто решает такие задачи - даже пользователи MS AS не пишут виюшки, а создают 2 куба и объединяют их в один виртуальный куб).

2 Константин Лисянский:

Юрий, не бросайтесь попусту цифрами.
Возьмите в руки Ваш любимый калькулятор (или пресловутый не в меру Интеллектуальный построитель выражений) и приведите вычисления откуда у Вас получаются эти записи.


Большие цифры получаются, поскольку я взял произведение количеств элементов каждого измерения друг на друга (100 в 7 степени). OLAP позволяет эффективно не зранить пустые значения. При подходе когда OLAP-куб пледставляется в виде плоской таблицы - такое, как я понял в ходе дискуссии со знатоками SQL - невозможно. Или я не прав?

А такие скромные специалисты как я
Клинический случай
На Вас надо бы господина Иванова напустить, он как психолог Вам поможет.


У Вас слабое чувство юмора :) И Вы как мне кажется считаете, что создание хранилища - это всегда очень сложно. Но ведь есть и простые хранилища, считайте что я специализируюсь на них.

2 Birkhoff:

Я уж не говорю о мастерстве "притягивания за уши неработающих решений" :)
Тут уж с вами мало кто может тягаться.


Хотелось бы с Вами как с экспертом согласиться, но увы, опыт моих проектов говорит об обратном - созданные мною решения на практике работают...

2 НЕТ РЕКЛАМЕ:

Ага если учесть, что Юрий является ярым противником создания хранилищ данных. Он приверженец все делать на виртуальных вьюшках за пять дней. :))

Я в первую очередь являюсь сторонником здравого смысла.
Я являюсь противником создания ХД, когда это неуместно (например, когда источник данных - это система 1С, Аксапта и т.п.). В то же время, когда источник данных - это разнородные файлы Excel, я в таких случаях делаю ХД.
...
Рейтинг: 0 / 0
один куб или два
    #32932961
олапист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а еще OLAP позволяет выполнить бесконечный цикл за 17 секунд!
...
Рейтинг: 0 / 0
один куб или два
    #32932996
No Pasaran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuriiБольшие цифры получаются, поскольку я взял произведение количеств элементов каждого измерения друг на друга (100 в 7 степени). .

Посчитал подобную "цифру" для своего последнего проекта. Она не поместилась в 22 знаках виндового калькулятора. И тем не менее отчеты летают. Наверное это исключительно благодаря MOLAP-функциональности MSTR %)))
...
Рейтинг: 0 / 0
один куб или два
    #32933006
(P)Michael
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jurii Я в первую очередь являюсь сторонником здравого смысла.
Но ведь есть и простые хранилища - это разнородные файлы Excel , считайте что я специализируюсь на них.а не лучше ли в *.txt хранить ?
:p
...
Рейтинг: 0 / 0
один куб или два
    #32933008
MSTR_Fan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Jurii

Маэстро, мы Вас любим!!
Браво, Бис!
...
Рейтинг: 0 / 0
один куб или два
    #32933030
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuriiБольшие цифры получаются, поскольку я взял произведение количеств элементов каждого измерения друг на друга (100 в 7 степени). OLAP позволяет эффективно не зранить пустые значения. При подходе когда OLAP-куб пледставляется в виде плоской таблицы - такое, как я понял в ходе дискуссии со знатоками SQL - невозможно. Или я не прав?

Формулу напишите, пожалуйста, применительно к поставленной (точнее, недопоставленной) задаче. И поставьте задачу формально как обещали.

С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
один куб или два
    #32933117
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 No Pasaran:

Большие цифры получаются, поскольку я взял произведение количеств элементов каждого измерения друг на друга (100 в 7 степени).
Посчитал подобную "цифру" для своего последнего проекта. Она не поместилась в 22 знаках виндового калькулятора. И тем не менее отчеты летают. Наверное это исключительно благодаря MOLAP-функциональности MSTR %)))


А в Вашем последнем проекте Вы делали разноску агрегированных значений пропорционально нескольким разным базам распределения?

2 (P)Michael:

Я в первую очередь являюсь сторонником здравого смысла.
Но ведь есть и простые хранилища - это разнородные файлы Excel, считайте что я специализируюсь на них.


Будьте поаккуратнее с цитированием - это не моя цитата, а полный бред.
Повторю еще раз - когда источником данных являются разрозненные файлы Excel - я их закачиваю в ХД (обычно в качестве СУБД для ХД я использую MS SQL Server или Oracle).

а не лучше ли в *.txt хранить ?

Действительно, как то я забыл про прекрасный формат TXT... Это хороший формат для создания ХД. Мне приходилось делать аналитические системы, источником данных для которых были экзотические СУБД (например Progress), и там сначала делался экспорт данных в денормализованные текстовые файлы, а потом эти файлы закачивались в OLAP-кубы Cognos PowerPlay.
...
Рейтинг: 0 / 0
один куб или два
    #32933157
Jurii
Будьте поаккуратнее с цитированием - это не моя цитата, а полный бред.
Повторю еще раз - когда источником данных являются разрозненные файлы Excel - я их закачиваю в ХД (обычно в качестве СУБД для ХД я использую MS SQL Server или Oracle).

Jurii - А можно вопрос (думаю с Вашим опытом Вы ответите без труда ). А с помощью какого инструмента или технологии Вы перекачиваете данные из Excel в Oracle.
...
Рейтинг: 0 / 0
один куб или два
    #32933284
No Pasaran
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА в Вашем последнем проекте Вы делали разноску агрегированных значений пропорционально нескольким разным базам распределения?

Во всех наших проектах мы осуществляем произвольную разноску произвольных агрегированных значений пропорционально нескольким произвольным измерениям распределения произвольных баз данных MOLAP, ROLAP,HOLAP, в том числе использующие в качестве формата хранения произвольные файлы txt, xls, pdf, doc, jpg и т.д.

P.S. Юрий, похоже, я наконец-то вычислил ту траву, которую Вы курите. Она действительно ничего.

P.P.S. 2all: Извините за флуд, не удержался...
...
Рейтинг: 0 / 0
один куб или два
    #32933438
sever_5
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поддерживаю тему

Что лучше иметь несколько кубов (MOLAP) индексированных по разным временным измерениям (День, Месяц, Год) и просуммированных формул по этим измерениям.

Либо

Иметь один куб где задаётся временная иерархия и соответственно формула проссумированна на всем уровням иерархии.

Данный вопрос относиться к OES , версии не раньше 6.3.x?

Если вы прдпочитаете второй вариант то намекните как сделать нормальную временную иерархию.
Я так же предпочитаю второй вариант так как моему начальнику важно показать заказчикам временную гибкость, а с первым вариантом кроме тупого — иметь несколько отдельных юзерских графиков ничего хорошего придумать немогу.
...
Рейтинг: 0 / 0
один куб или два
    #32933464
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jurii2 Константин Лисянский:

насколько я понимаю, дискуссия уже идёт не на тему "возможно ли реализовать сложный алгоритм разнесения с помощью SQL". Выяснили, что возможно. Теперь идёт вопрос о скорости.

Вы не правы. Если провести параллель, то планировать ресурсы предприятия можно без ERP-системы, достаточно лишь иметь карандаш и бумагу. Расчеты на бумаге провести будет конечно очень трудоемко, но это другой вопрос - главное что можно все точно посчитать :)
Я не считаю жизнеспособным решение этой задачи на SQL. Или Вы готовы при добавлении каждого нового аналитического разреза, при увеличении количества записей на порядки (10 миллиардов -> триллион -> сто триллионов...) расширять вычислительную мощность и дисковое пространство сервера? Таких серверов то не бывает...
К тому же, решение на SQL требует добавления нового показателя при появлении каждого нового разреза (базы распределения), что мягко говоря не очень удобно.

Таким образом, поскольку вопрос о возможностях SQL решён в положительную сторону

Вы хотите притянуть за уши неработающее решение...

Своими рассуждениями по поводу SQL Вы очень сильно смешите публику.

Видимо Вы слишком много начитались классики по хранилищам данных, и немного отстали от жизни. А такие скромные специалисты как я - вовсю создают хранилища и витрины данных, которые реально работают :)

Еще раз повторю что для каждого аналитического разреза не надо увеличивать кол-во записей, хранить данные можно разряженно, и если есть задача то можно и ответы хранить в СУБД и использовать все фитчи для быстрого извлечения их оттуда. То что данные лежат в файлах txt или еще лучше Excel это вообще немыслемо, какой это промышленный стандарт??? Где оптимазация поиска по txt может кто то знает как построить индекс по txt файлу????
Что за бред я вообще не понимаю, что Cognos это решение для владельца палатки на Митинском рынке где в день не более 1000 покупок??? А если сеть где покупки могут достига 1 000 000 и какой Excel вместит в себя столько записей??? И txt вы устанете читать который содержет столько инфо.

И что хранилище данных у вас в txt файлах??? и источники данных для кубов тоже файлы??? вообще приплыли......
...
Рейтинг: 0 / 0
один куб или два
    #32934024
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 OLAPMASTER:

То что данные лежат в файлах txt или еще лучше Excel это вообще немыслемо, какой это промышленный стандарт??? Где оптимазация поиска по txt может кто то знает как построить индекс по txt файлу????

Важно чтобы аналитическое решение работало быстро. Если решение базируется на технологии MOLAP - индексы в ХД не требуются.

Что за бред я вообще не понимаю, что Cognos это решение для владельца палатки на Митинском рынке где в день не более 1000 покупок??? А если сеть где покупки могут достига 1 000 000 и какой Excel вместит в себя столько записей??? И txt вы устанете читать который содержет столько инфо.

То, что Вы не понимаете - это излечимо :)
Для владельца палатки Cognos актуален, тем более что OLAP-сервер Cognos стоит всего от 1000 убитых енотов.
Лично мне больше приходилось общаться с крупными компаниями. В торговых сетях супермаркетов-гипермаркетов я настраивал Cognos на ХД Oracle, но были и локальные задачи - типа взять кусочки порезанной базы супермаркета в формате Paradox (порядка 15 миллионов записей в год), сделать ряд вычисляемых показателей и закачать эти данные в куб. Я делал для Paradox виртуальную вьюшку, конвертировал данные в формат TXT, и со скоростью 10 тысяч записей в секунду текстовые данные закачивались в OLAP-куб Cognos PowerPlay.

И что хранилище данных у вас в txt файлах??? и источники данных для кубов тоже файлы??? вообще приплыли......

В проекте для одной из серьезных гос. структур в качестве ХД/источника данных для кубов выступал текстовый файл размером около 5 гигабайт.

Видимо Вы привыкли работать с аналитическими системами класса ROLAP, которые не дружат с большими текстовыми файлами, поскольку нуждаются в индексах.
...
Рейтинг: 0 / 0
один куб или два
    #32934044
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jurii
В проекте для одной из серьезных гос. структур в качестве ХД/источника данных для кубов выступал текстовый файл размером около 5 гигабайт.

Видимо Вы привыкли работать с аналитическими системами класса ROLAP, которые не дружат с большими текстовыми файлами, поскольку нуждаются в индексах.

Мда... и вот пришел когнос и текстовые файлы начили приносить пользу аналитикам. Мда....
Без коментариев.....
...
Рейтинг: 0 / 0
один куб или два
    #32934073
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 OLAPMASTER:

Мда... и вот пришел когнос и текстовые файлы начили приносить пользу аналитикам. Мда....
Без коментариев.....


Вы наверное когда видите текстовые файлы - сразу их удаляете не читая? :)
Текстовые файлы - это лишь источник данных, а пользу аналитикам приносит аналитическая модель, созданная в аналитической системе. Если система умеет читать текстовые файлы - это хорошо, если нет - то это проблема аналитической системы.
...
Рейтинг: 0 / 0
один куб или два
    #32934078
OLAPMASTER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jurii2 OLAPMASTER:

Мда... и вот пришел когнос и текстовые файлы начили приносить пользу аналитикам. Мда....
Без коментариев.....


Вы наверное когда видите текстовые файлы - сразу их удаляете не читая? :)
Текстовые файлы - это лишь источник данных, а пользу аналитикам приносит аналитическая модель, созданная в аналитической системе. Если система умеет читать текстовые файлы - это хорошо, если нет - то это проблема аналитической системы.
Вот я и говорю пришел когнос и текстовые файлы ожили!!!!
...
Рейтинг: 0 / 0
один куб или два
    #32934172
НЕТ РЕКЛАМЕ !!! Jurii
Будьте поаккуратнее с цитированием - это не моя цитата, а полный бред.
Повторю еще раз - когда источником данных являются разрозненные файлы Excel - я их закачиваю в ХД (обычно в качестве СУБД для ХД я использую MS SQL Server или Oracle).

Jurii - А можно вопрос (думаю с Вашим опытом Вы ответите без труда ). А с помощью какого инструмента или технологии Вы перекачиваете данные из Excel в Oracle.

to Jurii

Jurii - так Вы ответите на мой вопрос (приведенный выше). А то у меня складывается впечетление, что Вы закачиваете в ХД (Oracle) файлы Excel.
Только в виртуальном мире своих фантазий.
...
Рейтинг: 0 / 0
один куб или два
    #32934468
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 НЕТ РЕКЛАМЕ:

А можно вопрос (думаю с Вашим опытом Вы ответите без труда ). А с помощью какого инструмента или технологии Вы перекачиваете данные из Excel в Oracle.

Обычно я закачиваю данные из Excel в Oracle с помощью Delphi - сначала данные читаются в массив, и далее, по одной записи в цикле инсертятся в таблицу Oracle. Только не подумайте, что я все это сам программирую - этим занимаются мои коллеги-инженеры :)

Я иногда позволяю себе поработать в MS SQL Enterprise Manager, Query Analyzer и Profiler. Мне приходилось создавать DTS-пакеты, писать вьюшки вручную, без любимого мною генератора виртуальных вьюшек...
...
Рейтинг: 0 / 0
78 сообщений из 78, показаны все 4 страниц
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / один куб или два
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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