powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / OLAP и анализ анкет
17 сообщений из 17, страница 1 из 1
OLAP и анализ анкет
    #32634264
Фотография Ray D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, All!

Такая задача - существует масса различных анкет/опросников, необходимо реализовать их анализ - посчтитать количество/процент/сумму ответов в разрезе других ответов. (например, факультет/пол/курс, отношение к самостоятельной работе)
Стоит ли для решения этой задачи применять OLAP и если да, то чего бы почитать, с чего начать?

Пока делаю так - соединяю анкеты сами с собой и сливаю в сводную таблицу MS Excel. Но уже в случае анализа по трем переменным такой запрос будет выполняться слишком долго.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
select 
	q1.title as quest_title1, aw1.title as answer_title1, 
	s1.title as section_title1, aw2.title as answer_title2, s2.title as section_title2, 
	quest_title2 = cast(q2.[no] as varchar( 3 )) + ' ' + q2.title, 
	q2.[no] as quest_no2, COUNT(*) as cnt
from
answer a1
inner join answer a2 on a1.filledquiz_oid = a2.filledquiz_oid
inner join answervar aw1 on a1.answervar_oid = aw1.answervar_oid
inner join answervar aw2 on a2.answervar_oid = aw2.answervar_oid
inner join quest q1 on aw1.quest_oid = q1.quest_oid
inner join quest q2 on aw2.quest_oid = q2.quest_oid
inner join [section] s1 on q1.section_oid = s1.section_oid and s1.quiz_oid = @@quiz_oid
inner join [section] s2 on q2.section_oid = s2.section_oid and s2.quiz_oid = @@quiz_oid
GROUP BY q1.title, aw1.title, s1.title, aw2.title, s2.title, 
	cast(q2.[no] as varchar( 3 )) + ' ' + q2.title, 
	q2.[no]
ORDER BY q2.[no]
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32634280
Фотография Quark
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если пользователи сами будут формировать конечные разрезы просмотра отчета то можно применять OLAP. Если же внешний вид его заранее установлен то смысда нет. Для ускорения тогда лучше воспользоваться Index view/
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32634282
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я решал такую задачу. Делал вьюшку в которой в каждой колонке было значение ответа (да-нет, или несколько вариантов), и делал кубик в Cognos PowerPlay с большим количеством измерений (мой рекорд - 120 измерений в кубе). Далее в любой комбинации и сочетании проводил анализ.

Хотя если анкет у вас - мало, пунктов в анкете тоже мало - сойдет и автофильтр Excel...
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32634300
Фотография Ray D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
QuarkЕсли пользователи сами будут формировать конечные разрезы просмотра отчета то можно применять OLAP. Если же внешний вид его заранее установлен то смысда нет. Для ускорения тогда лучше воспользоваться Index view/
Пользователи сами выбирают разрезы отчета. Но уже в случае трех измерений надо делать самосоединение трех экземпляров таблиц, мне кажется даже indexed views здесь не помогут. Вопросов довольно много, как и анкет.
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32634321
Фотография Ray D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuriiХотя если анкет у вас - мало, пунктов в анкете тоже мало - сойдет и автофильтр Excel...
В том-то и дело, что и анкет много и пунктов много, а становится еще больше.
Jurii
Я решал такую задачу. Делал вьюшку в которой в каждой колонке было значение ответа (да-нет, или несколько вариантов), и делал кубик в Cognos PowerPlay с большим количеством измерений (мой рекорд - 120 измерений в кубе).

Не совсем понял. Мне надо посчитать, например, сколько людей дали ответ 1, 2, 3, 4 или 5 на некоторый вопрос и при этом ответили 1 на некоторый другой вопрос и при этом дали ответ 2 на некоторый третий вопрос. Для этого ведь надо соединить три экземпляра таблиц, мало того, что отрабатывает это очень долго, так еще и сводные таблицы Excel умирают на таком количестве данных.
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32635899
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Ray D:

Не совсем понял. Мне надо посчитать, например, сколько людей дали ответ 1, 2, 3, 4 или 5 на некоторый вопрос и при этом ответили 1 на некоторый другой вопрос и при этом дали ответ 2 на некоторый третий вопрос.

На мой взгляд это обычное наложение фильтра в OLAP-клиенте. Вы когда-нибудь создавали OLAP-кубы? Или в основном решаете задачи с помощью обычных SQL-запросов?
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32636118
Фотография Ray D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OLAP-кубы создавать пока не приходилось. Видел только пример куба, поставляемый с MS AS. Может порекомедуете что-нибудь почитать и с чего вообще начать?
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32636630
Peyotl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хотите получить общее представление, то почитайте статьи на olap.ru.

Если хотите разобраться как следует, то следует начинать с книг по хранилищам данных, а затем уже разбираться в документации конкретного программного продукта. Лучше всего почитать книги Инмана и Кимбала.
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32643497
Фотография Ray D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, на сколько я понял, в моем случае решени такое - на каждую анкету создавать представление (с кластерным индексом), и использовать в качестве источника данных для OLAP. Так получается?

PeyotlЛучше всего почитать книги Инмана и Кимбала.
А в электронном виде можно их где-нибудь взять?
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32643736
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Ray_D:

Итак, на сколько я понял, в моем случае решени такое - на каждую анкету создавать представление (с кластерным индексом), и использовать в качестве источника данных для OLAP. Так получается?

Это Вы видимо классиков чрезмерно начитались... Для нормального OLAP не нужны никакие индексы (особенно учитывая, что объемы данных у Вас небольшие). Вам нужно сформировать таблицу фактов (вьюшку):
Date, Anketa_ID, Q1, Q2, Q3...
15.07.2004, 1, Да, Да, Нет
15.07.2004, 2, Нет, Да, Нет
16.07.2004, 3, Да, Да, Да

Это и будет источником данных для OLAP-куба (либо вместо подобной денормализации можно использовать схему звезда).
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32646850
Фотография Ray D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, попробую. Но боюсь, что от таблицы с 400+ столбцов кому-нибудь может сплохеть :)
У наших психологов какие-то сумасшедшие анкеты с таким количеством вопросов.
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32647469
Jurii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To Ray_D:

Спасибо, попробую. Но боюсь, что от таблицы с 400+ столбцов кому-нибудь может сплохеть :)
У наших психологов какие-то сумасшедшие анкеты с таким количеством вопросов.


Да уж, 400 измерений в кубе я еще не делал. Но в планах у меня такое есть. К счастью в таблице БД может быть столько полей, даже больше.
Если Вам не лень - можете сделать такую табличку, я бы ее закачал в Cognos PowerPlay. Что-то мне подсказывает (имея в виду опыт создания кубов с 50 измерениями), что работать это будет неплохо, хотя покликать мышкой придется...
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32647741
_Dog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pri razmerax ishodnyh dannyh bolse 5GB (neskolko mln. anket), ocen rekomenduju dlia takih zadac poprobovat Sybase IQ. Avtomaticeskii index na kazdom pole, ne uvelicivaja razmetra bazy, daet vozmoznost sozdanija zaprosov liubogo tipa, bez dopolnitelnogo tiuninga.

IQ ispolzuet Nelson Research Media (pozaluj odin iz samyh bolshih issledovatelei rynkov s millionami anket) i kucha departamentov statistiki.
Zdes http://][www.sybase.ru/Syb/corporate/events/iq_30-03-2004.htm napisano pocemu eto bystro i est primer testov Eurostat'a: IQ vs. Oracle
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32651259
Фотография Ray D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JuriiTo Ray_D:
Если Вам не лень - можете сделать такую табличку, я бы ее закачал в Cognos PowerPlay. Что-то мне подсказывает (имея в виду опыт создания кубов с 50 измерениями), что работать это будет неплохо, хотя покликать мышкой придется...
OK :) Вобьют - постараюсь прислать.
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32651362
Константин Лисянский
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, попробую. Но боюсь, что от таблицы с 400+ столбцов кому-нибудь может сплохеть :)
У наших психологов какие-то сумасшедшие анкеты с таким количеством вопросов.

А какая предметная область, если не секрет? И что является предметом анализа? Ведь, просто подсчёт количества ответов в разных разрезах - это всё ещё данные, а нужна информация. Тут больше похоже, что задача для статистики и технологий data mining. Ведь найти какие-то закономерности в данных из 400 столбцов глазами практически невозможно.



С уважением,
Константин Лисянский
http://lissianski.narod.ru
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #32651984
Фотография Ray D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть у нас отдел развития, который в том числе занимается анкетированием абитуриентов/студентов/выпускников/преподавателей и т.д. Эти анкеты максимум 60 вопросов. Но есть еще какие-то анкеты, которые хотят внедрить для приема новых сотрудников (400+ вопросов, на мой взгляд абсолютно дурацкие).
...
Рейтинг: 0 / 0
OLAP и анализ анкет
    #33118115
Фотография Ray D
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, All!
Пришлось вернуться к задаче.
Пока анализ выполняется так, за счет небольшой группировки на сервере получилось немножко потянуть кота за хвост, но объемы растут:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
select 
	q1.title as quest_title1, aw1.title as answer_title1, 
	s1.title as section_title1, aw2.title as answer_title2, s2.title as section_title2, 
	quest_title2 = cast(q2.[no] as varchar( 3 )) + ' ' + q2.title, 
	q2.[no] as quest_no2, COUNT(*) as cnt, quiz_cnt = (SELECT COUNT(*) FROM FILLEDQUIZ WHERE quiz_oid = @@quiz_oid),
	answer_title2numeric = case when isnumeric(aw2.title) =  1  then cast(aw2.title as int) else null end
from
answer a1
inner join answer a2 on a1.filledquiz_oid = a2.filledquiz_oid
inner join answervar aw1 on a1.answervar_oid = aw1.answervar_oid
inner join answervar aw2 on a2.answervar_oid = aw2.answervar_oid
inner join quest q1 on aw1.quest_oid = q1.quest_oid
inner join quest q2 on aw2.quest_oid = q2.quest_oid and q2.quest_oid != q1.quest_oid
inner join [section] s1 on q1.section_oid = s1.section_oid and s1.quiz_oid = @@quiz_oid
inner join [section] s2 on q2.section_oid = s2.section_oid and s2.quiz_oid = @@quiz_oid
GROUP BY q1.title, aw1.title, s1.title, aw2.title, s2.title, 
	cast(q2.[no] as varchar( 3 )) + ' ' + q2.title, 
	q2.[no]
ORDER BY q2.[no]
Все это сливается в Pivot Table MS Excel, в котором и проводится агрегация и т.д. Ооочень долго, и скоро Excel'ю сплохеет.
Как все таки в данном случае применить OLAP?
Как предлагал Jurii?
http://www.sql.ru/forum/actualpost.aspx?bid=26&tid=112075&mid=0&p=1#872975
Чего-то у меня тямы не хватает для решения этой задачи.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / OLAP и DWH [игнор отключен] [закрыт для гостей] / OLAP и анализ анкет
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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