Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
Сильно не пинайте, но на форуме по OLAP сидят одни MSSQLники. Спрошу здесь. На входе есть таблица: id id2 d 101 230 02.03.04 101 231 01.02.04 101 232 12.01.05 102 232 10.12.04 102 230 01.02.05 Как SQL запросом получить такое: 101 232 12.01.05 102 230 01.02.05 Т.е. те записи, у которых d максимально среди группы id. Очевидно надо делать с использованием OLAP функций, но никак не могу въехать как. Подскажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 13:15 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
Получилось так: select * from (select id,id2,max(d) over (partition by id),d from test_agr2) as v(i1,i2,d1,d2) where d1=d2; Вопрос меняю: А можно ли как-нибудь обойтись без вложенных селектов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 13:22 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
А причём тута Online Analitic Processing. Вообще то фунция Мах и есть одна из Olap функций. Тут вопрос идеологии. Идеология OlAP предполагает удобство в расчёте агрегатов в ущерб построчной обработки и не взирая на избыточность данных. Для этого ипользуеться Sybase IQ для доступа по столбцам, а не по строкам. Либо используеться Microsoft OLAP -services c предварительным просчётом агрегатов. Исходя из идеологии Olap Вам нужно сделать на каждую группу по таблице и подзапросы исчезнут. Чудес, к сожалению, не бывает. ASA, предполагаю, не имеет возможности создавать кубы данных. Пулю надо лить из свинца. Если хотите иметь нормальные OLAP -ответы используйте Olap средства и думайте по олаповски. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 14:26 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
serg08: Думаю, что Вы немного не в тему ответили.) Вопрос был именно про OLAP возможности ASA. И именно о применении OLAP функций для выборок. Мне главное - сделать выборку, а не применить функции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 14:39 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
select id,id2,d from tab_name group by id having d = max(d) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 14:56 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
А я так старался! Выборка (Select в переводе) лучшее для выборки. Лучше гор могут быть только горы!!! А функции это понятие скорее из области математики, чем из баз данных. Т. е. это нечто дополнительное, что налагается уже на результат выборки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.04.2005, 15:12 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
just_meselect id,id2,d from tab_name group by id having d = max(d) Горячо поддерживаю, ибо гипноз от громких слов типа OLAP просто мешает решать конкретные задачи, затуманивает разум и все такое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 10:47 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
>> select id,id2,d from tab_name >> group by id >> having d = max(d) > Горячо поддерживаю, ибо гипноз от громких слов типа OLAP просто мешает > решать конкретные задачи, затуманивает разум и все такое Перед тем, как горячо поддерживать, попробуй выполнить этот запрос. Function or column reference to 'id2' must also appear in a GROUP BY Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 12:22 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
Неужели ни у кого не возникало такой задачи? Очень странно. Решение интересно ввиде одного запроса. Курсоры, хп и прочее - не интересно. CyberBrineГорячо поддерживаю, ибо гипноз от громких слов типа OLAP просто мешает решать конкретные задачи, затуманивает разум и все такое Вот КОНКРЕТНАЯ ЗАДАЧА, решите ее! И покажите мне ее решение, тогда я соглашусь с Вашим утверждением. И не в OLAPе дело, просто без него в АСА я не представлял себе решения, с выходом 9-ки ситуация изменилась. Осталось только научится правильно это использовать. Может приведенный мной селект и есть правильный, я не знаю, поэтому обращаюсь к знающим людям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 13:01 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
select id,id2,d from tab_name having d = max(d) Не знаю, как в ASA, но в ASE это должно прекрасно работать Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 13:08 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
:-) вру. Запрос, который был выше, правильный! тока он в ASA не будет работать, как я понял. :-( но в ASE он работает Posted via ActualForum NNTP Server 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 13:14 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
iLLerПолучилось так: select * from (select id,id2,max(d) over (partition by id),d from test_agr2) as v(i1,i2,d1,d2) where d1=d2; Вопрос меняю: А можно ли как-нибудь обойтись без вложенных селектов? Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 14:11 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
Один из лидеров в области OLAP Hewlet Packard -для создания OLAP систем предлагает формированию групп обьединённого создания приложений. (Joint Application Development). В этих группах НЕ МОЖЕТ быть больше 20% IT -специалистов. Нас боятся! Как понимаю из вышеприведенного не зря. По большому счёту OLAP это не наше дело господа! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 14:51 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
ASCRUSP.S. Я вот только понять никак не могу, причем в данной задаче вообще OLAP. OLAP нужен для расчетов аггрегаций по указанным измерениям, подводом итогов по группам, расчета нарастающих сумм и т.д. Но уж никак, чтобы просто выбрать из таблицы последние актуальные записи по дате :) Кстати можно еще 3-5 других форм на эту задачу запроса накатать, просто нужно будет смотреть, какой план будет предпочтительнее. Ну, господа, не знаю причем тут ОЛАП, но "max(d) over (partition by id)" - средство ОЛАП. Так написано в документации. Оттуда же взят пример, который был модифицирован. Пример вот такой: select * from (select id,id2,max(k) over (partition by id),k from table) as v(i1,i2,k1,k2) where 0.95*k1<k2; Это выборка пяти процентов топовых записей по значению k. Я и подумал, что раз мне надо одно топовое, значит можно написать не 0.95*k1<k2, а k1=k2. Мне показалось, что ОЛАП, встроенный в АСА будер работать лучше(быстрее), чем обычные селекты, т.к. специализированные средства всегда лучше универсальных. P.S.: А нафига тогда придумали "max(..) over (..)", если можно обойтись без него? P.S.2: авторselect id,id2,d from tab_name having d = max(d) Помню, что такое давно писал и оно работало (только уже не помню где и когда), но в АСА такое не катит. А жаль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 15:34 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
ASCRUSНо уж никак, чтобы просто выбрать из таблицы последние актуальные записи по дате :) Почему нет? Это табу?!))) ASCRUSКстати можно еще 3-5 других форм на эту задачу запроса накатать, просто нужно будет смотреть, какой план будет предпочтительнее. Все мои ковыряния этой темы идут как раз от поиска лучшего плана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 15:43 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
iLLer ASCRUSНо уж никак, чтобы просто выбрать из таблицы последние актуальные записи по дате :) Почему нет? Это табу?!))) Да потому что не оптимально будет. Выбрать 5 процентов топовых записей из всего набора данных и выбрать записи по актуальности последней даты IMHO немножко разные задачи. iLLerМне показалось, что ОЛАП, встроенный в АСА будер работать лучше(быстрее), чем обычные селекты, т.к. специализированные средства всегда лучше универсальных. Мое мнение, что он будет однозначно лучше и быстрее работать, особенно на финансовых функциях, для чего собственно говоря и был сделан. Ваш пример оптимальнее всего делается обычным подзапросом Max/ORDER DESC в любой инкарнации INNER JOIN, LATERAL, WHERE IN/EXISTS/= . P.S. А вообще то может быть расскажите, чем не устраивает обычный подзапрос, неужели так тормозит ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 16:41 |
|
||
|
OLAP в ASA9
|
|||
|---|---|---|---|
|
#18+
Есть определенные таблицы. Из них делается выборка с использованием ОЛАП функций(мат.статистика). Все таблицы не маленькие (3 млн, 11 млн, 50 млн), строится их пересечение, но в область просмотра выборки естессно попадает определенное окно. Вообщем все работает, по скорости даже сносно. Функции регрессии и т.п. работают в два прохода(мануал АСА), не хотелось бы вешать на этот селект еще вложенный, причем по одной из тех таблиц, когда по ним и так ползает ОЛАП. Хотя, возможно, оптимизатор АСА настолько сообразительный, что совместит операции по расчету результатов ОЛАП функций и выделение результатов вложенного селекта. Но в целом, мне все ответы понятны. Спасибо за внимание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2005, 18:39 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=33025410&tid=2013693]: |
0ms |
get settings: |
10ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 273ms |
| total: | 432ms |

| 0 / 0 |
