Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Какие основные плюсы и минусы 1.иметь один куб для плановых и фактических данных 2.иметь два разных куба (ну скорость и время процессинга я понимаю, а с концептуальной точки зрения???) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 19:09 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Ещё один Пожалуйста, ознакомпьтесь с правилами форума на предмет оформления сообщений. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 19:23 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Константин ЛисянскийЕщё один Пожалуйста, ознакомпьтесь с правилами форума на предмет оформления сообщений. С уважением, Константин Лисянский http://lissianski.narod.ru Константин, мне кажется, что поставленный вопрос не имеет отношения к конкретному инструментарию и достоин обсуждения как отрыве от инстументария так и применительно к любому инструменту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 19:27 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Согласен. Но что-то мне подсказывает, что автор вопроса имел в виду какой-то конкретный продукт. И если ему начнут отвечать про, например, Hyperion Essbase или Oracle Express, а он имел в виду MS AS, то он начнёт задавать уточняющие вопросы, и окажется, что люди зря старались. Только из этих соображений писал. 2Boom: Сорри, если не по делу наехал. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 19:30 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 Booom: Какие основные плюсы и минусы 1.иметь один куб для плановых и фактических данных 2.иметь два разных куба (ну скорость и время процессинга я понимаю, а с концептуальной точки зрения???) Я думаю, что правильнее иметь один куб и для плановых, и для фактических данных (поскольку по отдельности план и факт менее интересны, чем в совокупности). Но не все OLAP-сервера умеют делать кубы на основе более чем одной таблицы фактов... Например, Cognos PowerPlay позволяет это сделать, MS Analysis Services - не позволяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 19:50 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Подымался подобный вопрос в свое время... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 20:27 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Jurii Но не все OLAP-сервера умеют делать кубы на основе более чем одной таблицы фактов... Например, Cognos PowerPlay позволяет это сделать, MS Analysis Services - не позволяет.А что MS AS-у мешает создать куб на основе вьюхи, объединяющей две таблицы фактов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 20:39 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 Birkhoff: А что MS AS-у мешает создать куб на основе вьюхи, объединяющей две таблицы фактов? Такую вьюху невозможно написать, поскольку у таблиц фактов - разная гранулярность, и в реляционной таблице невозможно разнести агрегированные значения плана по детальным записям факта. Подобная разноска возможна только при многомерном OLAp-моделировании. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 20:59 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 21:35 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
JuriiНо не все OLAP-сервера умеют делать кубы на основе более чем одной таблицы фактов... Например, Cognos PowerPlay позволяет это сделать, MS Analysis Services - не позволяет. Смотря что называть кубом. Если рассматривать виртуальный куб AS2K, то за ним может стоять несколько таблиц фактов. А начиная с AS2K5 и физический куб можеи базироваться на нескольких таблицах фактов. Кстати в AS2K5 уже нет деления на виртуальные и физические кубы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2005, 23:06 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
JuriiТакую вьюху невозможно написать, поскольку у таблиц фактов - разная гранулярность, и в реляционной таблице невозможно разнести агрегированные значения плана по детальным записям факта. Подобная разноска возможна только при многомерном OLAp-моделировании. Юра, это рассуждения человека, не понимающего возможностей SQL. Видимо, не в меру "интеллектуальный конструктор выражений", ввёл Вас в заблуждение. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 11:25 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Константин Лисянский JuriiТакую вьюху невозможно написать, поскольку у таблиц фактов - разная гранулярность, и в реляционной таблице невозможно разнести агрегированные значения плана по детальным записям факта. Подобная разноска возможна только при многомерном OLAp-моделировании. Юра, это рассуждения человека, не понимающего возможностей SQL. Видимо, не в меру "интеллектуальный конструктор выражений", ввёл Вас в заблуждение. С уважением, Константин Лисянский http://lissianski.narod.ru Константин, а не могли бы вы более содержательно это прокомментировать. Правильно ли я представляю, что в случае соединения 2 таблиц с разной гранулярностью одна из них должна быть аггрегрована для приведения гранулярности. Какие еще возможности еще есть? Где про это можно почитать? Кимбал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 12:51 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Допустим, есть таблица с планами продаж: месяц, продукт, план И есть с фактами: дата, продукт, план Есть ещё таблица месяцв, в которое есть количество дней в месяце и таблица дней. 1. Делаем джойн таблицы дней с таблицей месяцев: месяц, день, кол-во дней в месяце Назовём это явление месяц/день 2. Делаем джойн таблицы планов с таблицой месяц/день день, продукт, план/кол-во дней в месяце 3. Делайм джойн план-факт. У них теперь одинаковая гранулярность. Получили простейшее разнесение плана на месяц по дням недели. Даже Кимбала читать не обязательно :) Просто напрячься надо слегка :) SQL писать ломает. Извините. Но, поверьте, во вьюху это всё засунуть проблем не составит. Причём можно и посложнее вещи делать. То, что, например, простыми алгоритмами разнесения не во всяком OLAP-тулзе сделаешь. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 13:29 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
backfireПравильно ли я представляю, что в случае соединения 2 таблиц с разной гранулярностью одна из них должна быть аггрегрована для приведения гранулярности. Какие еще возможности еще есть? Где про это можно почитать? Кимбал? Прошу прошения, что отвечаю на вопрос, не ко мне адресованный, но тем не менее... Насколько я понял, второй путь - это то, что у Кимбала называется allocation - значение факта из таблицы с аггрегированными показателями по какому-либо правилу разносится на несколько записей в более детальной таблице фактов. Собственно, все об этом прописано в "The data warehouse toolkit, Second Edition", Chapter 5 "Order Management", p. 121, "Header and Line Item Fact with Different Granularity" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 13:29 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
backfireПравильно ли я представляю, что в случае соединения 2 таблиц с разной гранулярностью одна из них должна быть аггрегрована для приведения гранулярности. Какие еще возможности еще есть? Где про это можно почитать? Кимбал? Я встречался с такими ситуациями: 1) Действительно агрегация данных из таблицы с бОльшей гранулярностью до уровня таблицы с меньшей гранулярностью 2) Дублирование данных из таблицы с большей гранулярностью до уровня таблицы с меньшей гранулярностью. Например, цены заданы на уровне месяца и просто дублируются до уровня отдельных продаж за этот месяц. 3) Преобразование показателя с большей гранулярностью до меньшего уровня. Например, есть затраты на доставку на уровне заказа, нужно распределить их до уровня отдельных товаров. Затраты можно распределить пропорционально весу или количеству единиц товара. Вариантов может быть много. Читал я об этом в документации по MicroStrategy, там использование фактов с разной гранулярностью называется fact extension. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 13:30 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
По сути задача объединения двух таблиц с разной гранулярностью в терминах DW более общая и часто решается в других областях человеческой деятельности. В частности, как указывал Андрей Прохоров, это например задача разнесения непрямых затрат на виды продукции (или на подразделения фирмы, или на центры дохода и т.п.). В основе метода решения лежит выбор корректного базиса для распределения (в примере Константина - кол-во дней, в примере Андрея - весу или количеству единиц товара.; или занимаемой товаром площади склада, или суммам оплаты основных производственных рабочих разных подразделений, или температуре воздуха в те дни, когда у жены начальника критические дни и т.п.). Я думаю, что почти все, кто здесь присутствует, когда-либо сталкивались с такими задачами. Но это уже имеет мало отношения к обсуждаемой теме и технологии DW/OLAP вообще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 13:45 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 Константин Лисянский: Допустим, есть таблица с планами продаж: месяц, продукт, план И есть с фактами: дата, продукт, план Не завидую я той компании, у которой так ведется план и факт... План обычног ведется на уровне групп товаров, регионов и месяцев. А факт - это широкая таблица, с полями дата-время, товар, регион (фед. округ, область, город, район), клиент, менеджер, склад, тип операции и т.д. По некоторым измерениям план надо разносить до того или иного уровня детализации, для разных измерений - разные базисы распределения, для некоторых измерений - план разносить нельзя. Я на 99.9% уверен, что с помощью SQL-запроса (вьюшки) такую задачу решить нельзя (это не просто очень сложно - а скорее - невозможно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 15:52 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
JuriiЯ на 99.9% уверен, что с помощью SQL-запроса (вьюшки) такую задачу решить нельзя (это не просто очень сложно - а скорее - невозможно). Спасибо, что сообщили мне об этом. Я и не знал, что это невозможно. Мне показалось, что я показал решение задачи в общем виде. В принципе, готов решить и в частном, если Вы поставите условие более формально. Однако я при этом тоже готов поставить условие - Вы не будете даже заикаться о возможностях SQL и реляционных СУБД на этом форуме. Ну как? С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 16:24 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Андрей Прохоров backfireПравильно ли я представляю, что в случае соединения 2 таблиц с разной гранулярностью одна из них должна быть аггрегрована для приведения гранулярности. Какие еще возможности еще есть? Где про это можно почитать? Кимбал? Я встречался с такими ситуациями: 1) Действительно агрегация данных из таблицы с бОльшей гранулярностью до уровня таблицы с меньшей гранулярностью 2) Дублирование данных из таблицы с большей гранулярностью до уровня таблицы с меньшей гранулярностью. Например, цены заданы на уровне месяца и просто дублируются до уровня отдельных продаж за этот месяц. 3) Преобразование показателя с большей гранулярностью до меньшего уровня. Например, есть затраты на доставку на уровне заказа, нужно распределить их до уровня отдельных товаров. Затраты можно распределить пропорционально весу или количеству единиц товара. Вариантов может быть много. Читал я об этом в документации по MicroStrategy, там использование фактов с разной гранулярностью называется fact extension. Да видно что то с утра был сонный и не сообразил. Однако юзал я уже все эти 3 вида :-), и давно все это было, что сходу у меня даже ассоциации на эту тему не возникли. JuriiЯ на 99.9% уверен, что с помощью SQL-запроса (вьюшки) такую задачу решить нельзя (это не просто очень сложно - а скорее - невозможно). Если запросы строить, елозя мышем по столу, то вы скорее всего правы - невозможно, а если головой думать и руками писать, то все возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 17:08 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
to backfire -- Поддерживаю SQL это рульная штука! Я даже могу нарастающий итог посчитать на диалекте Oracle. -- Юрий дайте пример. У меня есть опыт реализации декомпазиции планов по дням с учетом их доли в прошом периоде. Это прогноз между прочем!!! И работает этот запрос пулей.. Ответ на топик.... Я бы посоветовал сделать один куб, так проше работат и это не так сложно как кажеться и проше в обслужевании. Один куб не два... P.S. OLAP всеволишь измерительный инструмент, это только благодоря всяким оптимистам типа Константина и Юрия он стал нечно таким уж запредельным, а в целом он просто может промерить вам факт с учетом ваших размеров! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 18:02 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
backfire Если запросы строить, елозя мышем по столу, то вы скорее всего правы - невозможно, а если головой думать и руками писать, то все возможно. Да, но тогда зачем нужен интеллектуальный построитель запросов Impromptu. Наверное, он не такой уж "интеллектуальный". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 18:31 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 Константин Лисянский: Я на 99.9% уверен, что с помощью SQL-запроса (вьюшки) такую задачу решить нельзя (это не просто очень сложно - а скорее - невозможно). Спасибо, что сообщили мне об этом. Я и не знал, что это невозможно. Отлично, теперь Вы это знаете :) Мне показалось, что я показал решение задачи в общем виде. Вспомните математику. Корни полиномиального многочлена до третьей степени можно найти по формулам, но вот начиная с четвертой степени - это невозможно. Примерно то же самое относится к количеству полей в таблице фактов. В принципе, готов решить и в частном, если Вы поставите условие более формально. Я постараюсь, хотя это довольно трудоемко - набить вручную то, что годами пользователи заносят в учетную систему... Однако я при этом тоже готов поставить условие - Вы не будете даже заикаться о возможностях SQL и реляционных СУБД на этом форуме. Вы хотите, чтобы содержание форума обеднело? Я может не самый крутой эксперт в РСУБД и SQL, но и не ламер... 2 backfire & noodle: Если запросы строить, елозя мышем по столу, то вы скорее всего правы - невозможно, а если головой думать и руками писать, то все возможно. Да, но тогда зачем нужен интеллектуальный построитель запросов Impromptu. Наверное, он не такой уж "интеллектуальный". Господа, представьте, что Вы написали ручками сложный SQL-запрос, потом вас уволили, а через месяц Вашему бывшему руководителю захотелось по-другому распределить значение плана по уровням иерархии факта... Он попросит это сделать программиста, который будет работать после вас, этот программист не сможет разобраться в вашем сложном запросе... Трагедия какая-то. Вот поэтому разумные руководители, когда выбирают для себя аналитическую систему, всегда задумываются, не будут ли они зависеть от разработчиков и программистов? Если в системе есть конструктор выражений - то в его формулах разбораться несложно, а в рукописном коде - сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 20:55 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Jurii Вы написали ручками сложный SQL-запрос, потом вас уволили Богатый жизненный опыт? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 21:03 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 Злобный ныпэрс: Вы написали ручками сложный SQL-запрос, потом вас уволили Богатый жизненный опыт? ;) Увы, в этой области у меня вообще нет никакого опыта. Меня никогда не увольняли :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 21:09 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
JuriiГоспода, представьте, что Вы написали ручками сложный SQL-запрос, потом вас уволили, а через месяц Вашему бывшему руководителю захотелось по-другому распределить значение плана по уровням иерархии факта... Юра, всегда есть люди, кто готов и стоит даже в очереди чтобы платить за езду на Mазерати ручной сборки, хотя большинство ездит на Меринах конвейрных. Обычно спецы экстракласса уходят сами.... Работодатель в таком случае само виноват, что не смог удержать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 21:44 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 OLAPMASTER & Константин Лисянский: Юрий дайте пример. В принципе, готов решить и в частном, если Вы поставите условие более формально. Попробую привести пример: План: Год, ПлановаяВыручка 2004, 100 Факт: Дата, Товар, Город, РекламнаяКампания, Фактическая выручка, Масса 15.02.2004, Пиво Балтика, Москва, Реклама была, 50, 4 24.03.2004, Пиво Сибирская Корона, Рекламы не было, Москва, 30, 5 12.06.2004, Пиво Балтика, Реклама была, Санкт-Петербург, 5, 1 Задача: Распределить плановую выручку по товарам пропорционально их массе, и при этом плановая выручка по городам должна быть распределена пропорционально фактической выручке. По разрезу (измерению) РекламнаяКампания плановую выручку не распределять, только показать общей суммой в итоговой строке отчета. Ну как, есть мнения как решить эту задачку без помощи OLAP на уровне вьюшки? Здесь несколько измерений, у каждого - своя база для распределения, и есть противоречие - я считаю, что без использования кубика в плоской вьюшке сделать ничего не удастся. Также стоит учесть, что в реальных базах данных - серьезные объемы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.02.2005, 21:51 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Хоть вопрос и не мне адресован, но все же. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Результат по вашим данным такой: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 02:36 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2Birkhoff: Спасибо. А то я тут немного отвлёкся на работу :)) На самом деле, я хотел попросить Юрия, чтобы он сформулировал задачу по правилам форума (CREATE TABLE, INSERT INTO, чтодолжно получиться в результате), но руки не дошли. Понятно, что ничего сложного в этой Юриной задачке для SQL нету. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 12:52 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 18:50 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
OLAPMASTER Спасибо за замечание, но я ведь говорил что запрос можно усовершенствовать. Ну а если использовать оракловые фенечки, то переписать (мой) запрос можно например так: Код: plaintext 1. 2. 3. 4. На Юриных данных ему даже GROUP BY не нужен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 20:55 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 21:48 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Что то я не понял? То есть один запрос должен выводить два распределения одновремнно? Код: plaintext 1. 2. 3. 4. В результате получаем Код: plaintext 1. 2. 3. ПРосто в первом запросе я сначала считал пропорцию выручки по городам, а потом внутри города делал разнос плана в зависимости от веса товара. Но тут задача еще проще, просто нужно обсчитать два разных плана. Объясните, в чем приницпиальное отличие SQL запросов написанных руками от тех, что построены мышкой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2005, 22:28 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
JuriiКак мы видим, имеется противоречие, поскольку базы распределения - разные. Поэтому на уровне плоской вьюшки (SQL-запросом) задачу решить невозможно. Эту задачу можно решить только с помощью OLAP. Юра, вы заблуждаетесь. Та задача, что вы обрисовали - подпадает под условие многомерной линейной интерполяции, и ваш подход с действиями на калькуляторе тут не катит. Ибо желаемую точку надо находить двигаясь не поочереди вдоль координатных осей, что вы делаете поочередными действиями на калькуляторе, а одновременно, предварительно рассчитав, вектора, что и делают вышеприведенные SQL запросы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2005, 00:08 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 Birkhoff: Что то я не понял? То есть один запрос должен выводить два распределения одновремнно? Задача требует, чтобы в зависимости от выбранного среза в отчете использовался тот или иной алгоритм распределения (на основе той или иной базы). В нашей дискуссии обсуждается, можно ли решить эту задачу, написав SQL-запрос. Я считаю - что нельзя, некоторые эксперты по SQL - считают что можно. Думаю шаг за шагом мы приближаемся к ясности, что SQL-запрос для решения этой задачи написать невозможно по определению. В результате получаем Что и требовалось доказать? Но тут задача еще проще, просто нужно обсчитать два разных плана. Теоретически некоторые правильные цифры Вы получили, но вот только у Вас уже получилось 2 показателя, вместо одной Плановой Выручки... Что будет, если разных баз для распределения в модели будет больше, например 10? Вы сделаете 10 показателей? Ну и наконец, Вы как-то забыли про поле с рекламной кампанией - по ней нельзя распределять Плановую Выручку... Объясните, в чем приницпиальное отличие SQL запросов написанных руками от тех, что построены мышкой? Разницы разумеется нет. Просто в данной задаче к решению я прихожу не с помощью SQL-запросов, созданных мышкой, а с помощью проектирования OLAP-куба на основе двух таблиц фактов разной гранулярности. Для каждого измерения OLAP-куба я мышкой указываю базу распределения для показателя Плановая Выручка. 2 backfire: Юра, вы заблуждаетесь. Та задача, что вы обрисовали - подпадает под условие многомерной линейной интерполяции, и ваш подход с действиями на калькуляторе тут не катит. Калькулятор я упомянул, поскольку с его помощью можно проверить правильность решения задачи (но я не предлагаю с помощью него решать задачу). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 10:06 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Юрий, правильно сказал Константин - нужно было попросить задачу в классическом оформлении - что на входе, что точно на выходе. А то с каждой итерацией возникают новые условия. Может быть эту задачу принципиально невозможно решить на компьютере, а только на калькуляторе? Потому что основная вирутальная вьюшка, которая задает условие находится у вас в голове? :) Пока "приницпиальная невозможность" ясна только вам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 13:07 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Юра, чтобы облегчить теоретическое понимание того, почему это можно сделать с помощью SQL приведу такое соображение, ибо задача, которую Вы ставите, до сих пор не описана формально. Итак. Многомерное пространство представляется в реляционной БД с помощью так называемой схемы звезда (те самые таблицы фактов, которые Вы используете для кубов). Соответственно, все данные, которые нужны для проведения вычислений, которые нужны для разнесения планов присутствуют в реляционных таблицах. Возможно, кто-то сказал Вам, что SQL не умеет напрямую адресовать ячейки таблиц в произвольном порядке, и на этом Вы строите свои аргументы. Однако это не так, с помощью SQL вполне можно адресовать любые ячейки двумерной таблицы (которая, как мы выяснили, реализует многомерную модель). Имея всё это в виду не очень понятно, почему на SQL нельзя реализовать вышеобозначенную операцию. Ваши аргументы (а точнее их отсутствие), сводятся к тому, что этого не может быть, потому что не может быть никогда. Учитывая, что Ваше общение с SQL происходит через не в меру интеллектуальный конструктор выражений (который, несмотря на Ваши утверждения, не сможет сгенерировать SQL произвольной сложности, это я утверждаю на основе своей практики, просьба не пенять по поводу того, что я не заказал у Вас соответствующий тренинг, просто не было соответствюущего бюджета :). И действительно, через построитель запросов Impromptu, действительно, сложно будет построить SQL-запрос, который привели коллеги выше. Юрий, если у Вас хватит мужества в этом месте признать своё поражение, то, возможно, Вы чуть-чуть поднимете свой рейтинг. Если будете дальше упираться, у меня есть чувство, что Вас раскатают в лепёшку, поскольку тут сидят, действительно, эксперты (хотя это слово уже немного опошлено здесь, поскольку мелькает слишком часто) в области SQL. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 14:38 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Задача требует, чтобы в зависимости от выбранного среза в отчете использовался тот или иной алгоритм распределения (на основе той или иной базы). Этож кто так задачу ставит? Вы сами это придумали или вам это заказчик заказал? Так такому заказчику в первую очередь надо пройти тренинг по многомерному распределению данных. Хотя если извилина одна и по той катком проехали, то никакой тренинг не поможет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 14:58 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
BirkhoffOLAPMASTER Спасибо за замечание, но я ведь говорил что запрос можно усовершенствовать. Ну а если использовать оракловые фенечки, то переписать (мой) запрос можно например так: Код: plaintext 1. 2. 3. 4. На Юриных данных ему даже GROUP BY не нужен :) Классный запрос, over (partition by city) такой связкой я считал нарастающий итог. Юрий, ну даже если мы с помошью over (partition by) не можем написать этот чудо запрос, то мы может прибегнуть к PL/SQL и тогда Ваша задача решаеться очень просто. Если Вы не знаете что это такое, то это язык программирования где можно пошагово разобрать каждую запись и понять что и сней делать, так что я думаю в этом проблем не будет. Birkhoff ??? Спасибо за замечание ??? Это не замечание, просто интересно как оптимизатор будет это выполнят. Так он декартовым произведением пошел? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 15:00 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
OLAPMASTERмы может прибегнуть к PL/SQL Ну, это будет не совсем правильно. Речь идёт о решении задачи одним запросом. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 15:20 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Константин Лисянский OLAPMASTERмы может прибегнуть к PL/SQL Ну, это будет не совсем правильно. Речь идёт о решении задачи одним запросом. С уважением, Константин Лисянский http://lissianski.narod.ru Константин я конечно понимаю FAIR PLAY. Но Юрий непонятно ставит задачу и всетаки важно достежения результата и если Юрию потребуеться постоить аж целый куб что бы ее решит, то я думаю анонимный блок PL/SQL который вставит записи в табличку это вполне честно. Примеры которые были приведены выше решали задачу Юрия. Если он с этим не согласен, пусть точнее поставить задачу. P.S. на войне все средства хороши. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 15:37 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
OLAPMASTERBirkhoff ??? Спасибо за замечание ??? Это не замечание, просто интересно как оптимизатор будет это выполнят. Так он декартовым произведением пошел?А я понял комментарий как замечание :) И действительно присмотрелся и нашел как можно обойтись без внешнего Group by. Хотя cost запроса остался такой же. Но видимо это зависит еще и от объемов. Да, был декартов джойн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 15:57 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Birkhoff OLAPMASTERBirkhoff ??? Спасибо за замечание ??? Это не замечание, просто интересно как оптимизатор будет это выполнят. Так он декартовым произведением пошел?А я понял комментарий как замечание :) И действительно присмотрелся и нашел как можно обойтись без внешнего Group by. Хотя cost запроса остался такой же. Но видимо это зависит еще и от объемов. Да, был декартов джойн. Поправь меня если я не прав но over (partition by) он понимает как Group by да?? Или как то по другому работает?? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 17:25 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 all SQL Experts: Господа, давайте будем закруглять дискуссию, придем к консенсусу. Представьте, что у нас есть кубик - в нем 5 измерений по 100 элементов в каждом. Средствами многомерного моделирования можно совместить в кубе несколько таблиц фактов (факт, план, прогноз и т.п.) и разнести агрегированные значения на детальные уровни иерархии. Любое число из этого куба можно вычислить с помощью SQL-запроса, написанного ручками. Можно и всю многомерную модель представить в виде плоской вьюшки. Но представьте, что это будет за вьюшка - в ней будет 10 миллиардов строк... Так что предлагаю сделать такой вывод - теоретически SQL-запрос написать можно, но он будет медленно работать, и его юзабилити будет нулевым. Поэтому на практике стоит решать эту задачу с помощью MOLAP. Что касается правильной формулировки задачи - я подумаю, постараюсь ее сформулировать, чтобы всем было понятно, но думаю и сейчас всем это понятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 19:55 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Jurii2 all SQL Experts: Господа, давайте будем закруглять дискуссию, придем к консенсусу. Представьте, что у нас есть кубик - в нем 5 измерений по 100 элементов в каждом. Средствами многомерного моделирования можно совместить в кубе несколько таблиц фактов (факт, план, прогноз и т.п.) и разнести агрегированные значения на детальные уровни иерархии. Любое число из этого куба можно вычислить с помощью SQL-запроса, написанного ручками. Можно и всю многомерную модель представить в виде плоской вьюшки. Но представьте, что это будет за вьюшка - в ней будет 10 миллиардов строк... Так что предлагаю сделать такой вывод - теоретически SQL-запрос написать можно, но он будет медленно работать, и его юзабилити будет нулевым. Поэтому на практике стоит решать эту задачу с помощью MOLAP. Что касается правильной формулировки задачи - я подумаю, постараюсь ее сформулировать, чтобы всем было понятно, но думаю и сейчас всем это понятно. и опять Вы как всегда неправы на счет медленной работы запросов к Вашему сведению в современных СУБД есть такой модуль как оптимизатор запросов, который не будет без крайней надобности вытягивать по 10 миллиардов строк это тоже стоит обьяснить Вам подробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 20:14 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
JuriiТак что предлагаю сделать такой вывод - теоретически SQL-запрос написать можно, но он будет медленно работать, и его юзабилити будет нулевым. Поэтому на практике стоит решать эту задачу с помощью MOLAP. Что касается правильной формулировки задачи - я подумаю, постараюсь ее сформулировать, чтобы всем было понятно, но думаю и сейчас всем это понятно. Юра, я хоть и не причисляю себя к экпертам SQL и являюсь приверженцем (M)OLAP, но тут с вами категорически не соглашусь. С чего вы взяли, что все эти 10 миллиардов кому то разом понадобятся? С чего вы взяли, что запросы на распределение будут тормозить? Все это голословно. Тем более из ваших уст. (вы себя никак не показали что вы DWH/ROLAP/SQL эксперт). Вы просто не делали на SQL ничего серьезного и у вас предубеждение, что SQL это "каменный век, когда колеса еще не были круглыми". Каждый инсртрумент в руках мастера способен творить чудеса. И не надо хаять SQL, просто потому что он вам не по-душе и вы предпочитаете мышку клавиатуре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 23:57 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
олаписти опять Вы как всегда неправы на счет медленной работы запросов к Вашему сведению в современных СУБД есть такой модуль как оптимизатор запросов, который не будет без крайней надобности вытягивать по 10 миллиардов строк это тоже стоит обьяснить Вам подробнее? Просто объяснить в форуме мало - надо тренинг пройти. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.02.2005, 23:59 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 OLAPMASTER Поддерживаю SQL это рульная штука! Я даже могу нарастающий итог посчитать на диалекте Oracle Классный запрос, over (partition by city) такой связкой я считал нарастающий итог. А что используя ANSI SQL посчитать нарастающий итог нельзя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 12:27 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Angel132 OLAPMASTER Поддерживаю SQL это рульная штука! Я даже могу нарастающий итог посчитать на диалекте Oracle Классный запрос, over (partition by city) такой связкой я считал нарастающий итог. А что используя ANSI SQL посчитать нарастающий итог нельзя? Можно, но так меньше писать. :) Да и оптимизатор думаю так эффективнее работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 13:26 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Angel132 OLAPMASTER Поддерживаю SQL это рульная штука! Я даже могу нарастающий итог посчитать на диалекте Oracle Классный запрос, over (partition by city) такой связкой я считал нарастающий итог. А что используя ANSI SQL посчитать нарастающий итог нельзя? Я поправлю Birkhoff, дело в том что нарастающий итог на ANSI SQL только по первичному ключу с подзапросом. Тоесть вы в нутри запроса двигаясь по записям, находите меньшие значения первичного ключа и делаете sum от текушего к меньшему. Это очень медленно если на большой таблице но это возможно, но а если у вас не первичного ключа то я незнаю как возможно посчитать нарастающий итог. Даже немогу предположить. Может Birkhoff у тебя уже есть опыт написания подобного запроса, я бы с удовольствием посмотрел на него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 16:44 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
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. Но согласен, что аналитические функции будут работать быстрее. Сам Кайт об этом писал :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 17:15 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Господа, тема про нарастающий итог средствами SQL несомненно интересна, но нельзя ли это вынести в отдельный топик. Иногда складывается впечатление, что топика в нашем форуме очень похожи на застольные беседы, начинем о "внутренних делах в Гондурасе", а заканчиваем "про урожайность кукурузы на Аляске". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 17:55 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
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 и план был вообще нереальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 18:42 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 олапист & backfire: и опять Вы как всегда неправы на счет медленной работы запросов Вы хотите сказать, что прямые SQL-запросы всегда работают быстро? Недавно я анализировал данные объемом около 30 тысяч записей - делал аналитические запросы, создавал вычисляемые показатели на основе статистических функций - выполнялись SQL-запросы очень небыстро... к Вашему сведению в современных СУБД есть такой модуль как оптимизатор запросов, который не будет без крайней надобности вытягивать по 10 миллиардов строк это тоже стоит обьяснить Вам подробнее? Это было небольшой провокацией с моей стороны, когда я озвучил цифру 10 миллиардов. Такой объем является привычным для телекомовских компаний, и многие участиники форума работали с этими объемами. Но если мы в моем кубике сделаем не 5, а 6 измерений - тогда объем данных будет не 10 миллиардов, а 1000 миллиардов (триллион). Если в кубе будет 10 измерений, и в каждом не по 100, а побольше мемберов, то плоское представление такого куба не поместится ни на одно средство хранения данных - или если поместится, то будет стоить очень дорого. При этом если кубик лежит в среде MOLAP, он не требует серьезного железа. Таким образом, Ваши рассуждения про оптимизаторы современных СУБД - это в данном случае - научные мысли вслух, не имеющие ничего общего с реальной жизнью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 19:05 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Jurii2 олапист & backfire: и опять Вы как всегда неправы на счет медленной работы запросов Вы хотите сказать, что прямые SQL-запросы всегда работают быстро? Недавно я анализировал данные объемом около 30 тысяч записей - делал аналитические запросы, создавал вычисляемые показатели на основе статистических функций - выполнялись SQL-запросы очень небыстро... к Вашему сведению в современных СУБД есть такой модуль как оптимизатор запросов, который не будет без крайней надобности вытягивать по 10 миллиардов строк это тоже стоит обьяснить Вам подробнее? Это было небольшой провокацией с моей стороны, когда я озвучил цифру 10 миллиардов. Такой объем является привычным для телекомовских компаний, и многие участиники форума работали с этими объемами. Но если мы в моем кубике сделаем не 5, а 6 измерений - тогда объем данных будет не 10 миллиардов, а 1000 миллиардов (триллион). Если в кубе будет 10 измерений, и в каждом не по 100, а побольше мемберов, то плоское представление такого куба не поместится ни на одно средство хранения данных - или если поместится, то будет стоить очень дорого. При этом если кубик лежит в среде MOLAP, он не требует серьезного железа. Таким образом, Ваши рассуждения про оптимизаторы современных СУБД - это в данном случае - научные мысли вслух, не имеющие ничего общего с реальной жизнью. Можно хранить их отдельно, и соединять в запросах. Можно сделать несколько таблиц, которые будут хранить измерения и одну таблицу фактов и через join и union можно получить похожую информацию что и в кубе. Конечно это будет медленее чем куб (там как он хранит ответы) но это реально и не так уж ресурсоемко. Весь вопрос в оптимальном хранении информации, не в одну таблицу а разряженно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 19:37 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Юрий, насколько я понимаю, дискуссия уже идёт не на тему "возможно ли реализовать сложный алгоритм разнесения с помощью SQL". Выяснили, что возможно. Теперь идёт вопрос о скорости. Таким образом, поскольку вопрос о возможностях SQL решён в положительную сторону, думаю, Вам пора начать выполнять Вашу часть обязательств относительно прекращения дискуссий по поводу SQL с Вашей стороны. Своими рассуждениями по поводу SQL Вы очень сильно смешите публику. Нельзя же в каждом топике устраивать такую клоунаду. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.02.2005, 23:32 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 Константин Лисянский: насколько я понимаю, дискуссия уже идёт не на тему "возможно ли реализовать сложный алгоритм разнесения с помощью SQL". Выяснили, что возможно. Теперь идёт вопрос о скорости. Вы не правы. Если провести параллель, то планировать ресурсы предприятия можно без ERP-системы, достаточно лишь иметь карандаш и бумагу. Расчеты на бумаге провести будет конечно очень трудоемко, но это другой вопрос - главное что можно все точно посчитать :) Я не считаю жизнеспособным решение этой задачи на SQL. Или Вы готовы при добавлении каждого нового аналитического разреза, при увеличении количества записей на порядки (10 миллиардов -> триллион -> сто триллионов...) расширять вычислительную мощность и дисковое пространство сервера? Таких серверов то не бывает... К тому же, решение на SQL требует добавления нового показателя при появлении каждого нового разреза (базы распределения), что мягко говоря не очень удобно. Таким образом, поскольку вопрос о возможностях SQL решён в положительную сторону Вы хотите притянуть за уши неработающее решение... Своими рассуждениями по поводу SQL Вы очень сильно смешите публику. Видимо Вы слишком много начитались классики по хранилищам данных, и немного отстали от жизни. А такие скромные специалисты как я - вовсю создают хранилища и витрины данных, которые реально работают :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 20:20 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Jurii А такие скромные специалисты как я - вовсю создают хранилища и витрины данных, которые реально работают :) Сильно сказано ... Jurii Я не считаю жизнеспособным решение этой задачи на SQL. Или Вы готовы при добавлении каждого нового аналитического разреза, при увеличении количества записей на порядки (10 миллиардов -> триллион -> сто триллионов...) расширять вычислительную мощность и дисковое пространство сервера? Таких серверов то не бывает... Такие цитаты нужно сразу в FAQ заносить. Не дай бог затеряются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.02.2005, 21:28 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
JuriiИли Вы готовы при добавлении каждого нового аналитического разреза, при увеличении количества записей на порядки (10 миллиардов -> триллион -> сто триллионов...) Юрий, не бросайтесь попусту цифрами. Возьмите в руки Ваш любимый калькулятор (или пресловутый не в меру Интеллектуальный построитель выражений) и приведите вычисления откуда у Вас получаются эти записи. А то я что-то (видимо, после большого количества прочитанной классики) не понимаю. JuriiВы хотите притянуть за уши неработающее решение... Да, вы и задачу-то не сформулировали до сих пор, а уже вовсю поносите решение. Нехорошо как-то. JuriiВидимо Вы слишком много начитались классики по хранилищам данных, и немного отстали от жизни Видимо, да. В эксперты не набиваюсь. JuriiА такие скромные специалисты как я Клинический случай На Вас надо бы господина Иванова напустить, он как психолог Вам поможет. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 00:16 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Юра, где вы научились этому мастерству подмены понятий? :) Я уж не говорю о мастерстве "притягивания за уши неработающих решений" :) Тут уж с вами мало кто может тягаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 00:25 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Андрей Прохоров Jurii А такие скромные специалисты как я - вовсю создают хранилища и витрины данных, которые реально работают :) Сильно сказано ... Ага если учесть, что Юрий является ярым противником создания хранилищ данных. Он приверженец все делать на виртуальных вьюшках за пять дней. :)) to Jurii А Вы случаем не карточный шулер. Очень уж умело передергиваете и блефуете. Я Вами восхищаюсь - такой талант пропадает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 10:33 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 Андрей Прохоров: Я не считаю жизнеспособным решение этой задачи на SQL. Такие цитаты нужно сразу в FAQ заносить. Не дай бог затеряются. Зачем заносить, это и так все знают (из тех кто решает такие задачи - даже пользователи MS AS не пишут виюшки, а создают 2 куба и объединяют их в один виртуальный куб). 2 Константин Лисянский: Юрий, не бросайтесь попусту цифрами. Возьмите в руки Ваш любимый калькулятор (или пресловутый не в меру Интеллектуальный построитель выражений) и приведите вычисления откуда у Вас получаются эти записи. Большие цифры получаются, поскольку я взял произведение количеств элементов каждого измерения друг на друга (100 в 7 степени). OLAP позволяет эффективно не зранить пустые значения. При подходе когда OLAP-куб пледставляется в виде плоской таблицы - такое, как я понял в ходе дискуссии со знатоками SQL - невозможно. Или я не прав? А такие скромные специалисты как я Клинический случай На Вас надо бы господина Иванова напустить, он как психолог Вам поможет. У Вас слабое чувство юмора :) И Вы как мне кажется считаете, что создание хранилища - это всегда очень сложно. Но ведь есть и простые хранилища, считайте что я специализируюсь на них. 2 Birkhoff: Я уж не говорю о мастерстве "притягивания за уши неработающих решений" :) Тут уж с вами мало кто может тягаться. Хотелось бы с Вами как с экспертом согласиться, но увы, опыт моих проектов говорит об обратном - созданные мною решения на практике работают... 2 НЕТ РЕКЛАМЕ: Ага если учесть, что Юрий является ярым противником создания хранилищ данных. Он приверженец все делать на виртуальных вьюшках за пять дней. :)) Я в первую очередь являюсь сторонником здравого смысла. Я являюсь противником создания ХД, когда это неуместно (например, когда источник данных - это система 1С, Аксапта и т.п.). В то же время, когда источник данных - это разнородные файлы Excel, я в таких случаях делаю ХД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 11:28 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
а еще OLAP позволяет выполнить бесконечный цикл за 17 секунд! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 11:40 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
JuriiБольшие цифры получаются, поскольку я взял произведение количеств элементов каждого измерения друг на друга (100 в 7 степени). . Посчитал подобную "цифру" для своего последнего проекта. Она не поместилась в 22 знаках виндового калькулятора. И тем не менее отчеты летают. Наверное это исключительно благодаря MOLAP-функциональности MSTR %))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 11:46 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Jurii Я в первую очередь являюсь сторонником здравого смысла. Но ведь есть и простые хранилища - это разнородные файлы Excel , считайте что я специализируюсь на них.а не лучше ли в *.txt хранить ? :p ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 11:48 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 Jurii Маэстро, мы Вас любим!! Браво, Бис! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 11:48 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
JuriiБольшие цифры получаются, поскольку я взял произведение количеств элементов каждого измерения друг на друга (100 в 7 степени). OLAP позволяет эффективно не зранить пустые значения. При подходе когда OLAP-куб пледставляется в виде плоской таблицы - такое, как я понял в ходе дискуссии со знатоками SQL - невозможно. Или я не прав? Формулу напишите, пожалуйста, применительно к поставленной (точнее, недопоставленной) задаче. И поставьте задачу формально как обещали. С уважением, Константин Лисянский http://lissianski.narod.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 11:52 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 No Pasaran: Большие цифры получаются, поскольку я взял произведение количеств элементов каждого измерения друг на друга (100 в 7 степени). Посчитал подобную "цифру" для своего последнего проекта. Она не поместилась в 22 знаках виндового калькулятора. И тем не менее отчеты летают. Наверное это исключительно благодаря MOLAP-функциональности MSTR %))) А в Вашем последнем проекте Вы делали разноску агрегированных значений пропорционально нескольким разным базам распределения? 2 (P)Michael: Я в первую очередь являюсь сторонником здравого смысла. Но ведь есть и простые хранилища - это разнородные файлы Excel, считайте что я специализируюсь на них. Будьте поаккуратнее с цитированием - это не моя цитата, а полный бред. Повторю еще раз - когда источником данных являются разрозненные файлы Excel - я их закачиваю в ХД (обычно в качестве СУБД для ХД я использую MS SQL Server или Oracle). а не лучше ли в *.txt хранить ? Действительно, как то я забыл про прекрасный формат TXT... Это хороший формат для создания ХД. Мне приходилось делать аналитические системы, источником данных для которых были экзотические СУБД (например Progress), и там сначала делался экспорт данных в денормализованные текстовые файлы, а потом эти файлы закачивались в OLAP-кубы Cognos PowerPlay. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 12:14 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Jurii Будьте поаккуратнее с цитированием - это не моя цитата, а полный бред. Повторю еще раз - когда источником данных являются разрозненные файлы Excel - я их закачиваю в ХД (обычно в качестве СУБД для ХД я использую MS SQL Server или Oracle). Jurii - А можно вопрос (думаю с Вашим опытом Вы ответите без труда ). А с помощью какого инструмента или технологии Вы перекачиваете данные из Excel в Oracle. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 12:22 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
авторА в Вашем последнем проекте Вы делали разноску агрегированных значений пропорционально нескольким разным базам распределения? Во всех наших проектах мы осуществляем произвольную разноску произвольных агрегированных значений пропорционально нескольким произвольным измерениям распределения произвольных баз данных MOLAP, ROLAP,HOLAP, в том числе использующие в качестве формата хранения произвольные файлы txt, xls, pdf, doc, jpg и т.д. P.S. Юрий, похоже, я наконец-то вычислил ту траву, которую Вы курите. Она действительно ничего. P.P.S. 2all: Извините за флуд, не удержался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 12:53 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Поддерживаю тему Что лучше иметь несколько кубов (MOLAP) индексированных по разным временным измерениям (День, Месяц, Год) и просуммированных формул по этим измерениям. Либо Иметь один куб где задаётся временная иерархия и соответственно формула проссумированна на всем уровням иерархии. Данный вопрос относиться к OES , версии не раньше 6.3.x? Если вы прдпочитаете второй вариант то намекните как сделать нормальную временную иерархию. Я так же предпочитаю второй вариант так как моему начальнику важно показать заказчикам временную гибкость, а с первым вариантом кроме тупого — иметь несколько отдельных юзерских графиков ничего хорошего придумать немогу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 13:38 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Jurii2 Константин Лисянский: насколько я понимаю, дискуссия уже идёт не на тему "возможно ли реализовать сложный алгоритм разнесения с помощью SQL". Выяснили, что возможно. Теперь идёт вопрос о скорости. Вы не правы. Если провести параллель, то планировать ресурсы предприятия можно без ERP-системы, достаточно лишь иметь карандаш и бумагу. Расчеты на бумаге провести будет конечно очень трудоемко, но это другой вопрос - главное что можно все точно посчитать :) Я не считаю жизнеспособным решение этой задачи на SQL. Или Вы готовы при добавлении каждого нового аналитического разреза, при увеличении количества записей на порядки (10 миллиардов -> триллион -> сто триллионов...) расширять вычислительную мощность и дисковое пространство сервера? Таких серверов то не бывает... К тому же, решение на SQL требует добавления нового показателя при появлении каждого нового разреза (базы распределения), что мягко говоря не очень удобно. Таким образом, поскольку вопрос о возможностях SQL решён в положительную сторону Вы хотите притянуть за уши неработающее решение... Своими рассуждениями по поводу SQL Вы очень сильно смешите публику. Видимо Вы слишком много начитались классики по хранилищам данных, и немного отстали от жизни. А такие скромные специалисты как я - вовсю создают хранилища и витрины данных, которые реально работают :) Еще раз повторю что для каждого аналитического разреза не надо увеличивать кол-во записей, хранить данные можно разряженно, и если есть задача то можно и ответы хранить в СУБД и использовать все фитчи для быстрого извлечения их оттуда. То что данные лежат в файлах txt или еще лучше Excel это вообще немыслемо, какой это промышленный стандарт??? Где оптимазация поиска по txt может кто то знает как построить индекс по txt файлу???? Что за бред я вообще не понимаю, что Cognos это решение для владельца палатки на Митинском рынке где в день не более 1000 покупок??? А если сеть где покупки могут достига 1 000 000 и какой Excel вместит в себя столько записей??? И txt вы устанете читать который содержет столько инфо. И что хранилище данных у вас в txt файлах??? и источники данных для кубов тоже файлы??? вообще приплыли...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 13:46 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
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, которые не дружат с большими текстовыми файлами, поскольку нуждаются в индексах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 16:15 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Jurii В проекте для одной из серьезных гос. структур в качестве ХД/источника данных для кубов выступал текстовый файл размером около 5 гигабайт. Видимо Вы привыкли работать с аналитическими системами класса ROLAP, которые не дружат с большими текстовыми файлами, поскольку нуждаются в индексах. Мда... и вот пришел когнос и текстовые файлы начили приносить пользу аналитикам. Мда.... Без коментариев..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 16:20 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 OLAPMASTER: Мда... и вот пришел когнос и текстовые файлы начили приносить пользу аналитикам. Мда.... Без коментариев..... Вы наверное когда видите текстовые файлы - сразу их удаляете не читая? :) Текстовые файлы - это лишь источник данных, а пользу аналитикам приносит аналитическая модель, созданная в аналитической системе. Если система умеет читать текстовые файлы - это хорошо, если нет - то это проблема аналитической системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 16:28 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
Jurii2 OLAPMASTER: Мда... и вот пришел когнос и текстовые файлы начили приносить пользу аналитикам. Мда.... Без коментариев..... Вы наверное когда видите текстовые файлы - сразу их удаляете не читая? :) Текстовые файлы - это лишь источник данных, а пользу аналитикам приносит аналитическая модель, созданная в аналитической системе. Если система умеет читать текстовые файлы - это хорошо, если нет - то это проблема аналитической системы. Вот я и говорю пришел когнос и текстовые файлы ожили!!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 16:30 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
НЕТ РЕКЛАМЕ !!! Jurii Будьте поаккуратнее с цитированием - это не моя цитата, а полный бред. Повторю еще раз - когда источником данных являются разрозненные файлы Excel - я их закачиваю в ХД (обычно в качестве СУБД для ХД я использую MS SQL Server или Oracle). Jurii - А можно вопрос (думаю с Вашим опытом Вы ответите без труда ). А с помощью какого инструмента или технологии Вы перекачиваете данные из Excel в Oracle. to Jurii Jurii - так Вы ответите на мой вопрос (приведенный выше). А то у меня складывается впечетление, что Вы закачиваете в ХД (Oracle) файлы Excel. Только в виртуальном мире своих фантазий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 16:58 |
|
||
|
один куб или два
|
|||
|---|---|---|---|
|
#18+
2 НЕТ РЕКЛАМЕ: А можно вопрос (думаю с Вашим опытом Вы ответите без труда ). А с помощью какого инструмента или технологии Вы перекачиваете данные из Excel в Oracle. Обычно я закачиваю данные из Excel в Oracle с помощью Delphi - сначала данные читаются в массив, и далее, по одной записи в цикле инсертятся в таблицу Oracle. Только не подумайте, что я все это сам программирую - этим занимаются мои коллеги-инженеры :) Я иногда позволяю себе поработать в MS SQL Enterprise Manager, Query Analyzer и Profiler. Мне приходилось создавать DTS-пакеты, писать вьюшки вручную, без любимого мною генератора виртуальных вьюшек... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2005, 19:00 |
|
||
|
|

start [/forum/topic.php?all=1&fid=49&tid=1871743]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
118ms |
get tp. blocked users: |
2ms |
| others: | 267ms |
| total: | 481ms |

| 0 / 0 |
