В Real-Time Decisions уже встроен ряд отчетов, позволяющих посмотреть, что происходит при общении с клиентом, какие корелляции возникают между покупкой продукта и параметрами клиента и т.д.
Однако, бывают ситуации, когда необходимо построить собственный кастомизированный отчет. Удобнее всего такие отчеты строить в Oracle BI. Однако, напрямую читать данные, накапливаемые RTD, невозможно, поскольку они сохраняются в оптимизированном BLOB-формате. Прежде чем использовать эти данные — их нужны выгрузить. Проще говоря, сделать snapshot.
Прежде чем выгружать данные необходимо из каталога RTD_HOME/scripts выполнить следующие команды:
1. Создать пользователя
сreate user snap identified by oracle;
grant connect,resource to snap;
connect snap/oracle
@RTD_HOME/scripts/sql/Oracle/util.sql
grant connect,resource to snap;
connect snap/oracle
@RTD_HOME/scripts/sql/Oracle/util.sql
2. Создать таблицы
sdexec com.sigmadynamics.tools.SDDBTool.SDDBTool -f -i -I InitSnapshotDb.ctl db_type db_host db_port db_name db_runtime_user db_admin_user db_admin_password
Здесь:
- db_type — тип базы данных(oracle, mssql, db2)
- db_host — имя компьютера с базой данных
- db_port — порт (1521)
- db_name — SID базы данных
- db_runtime_user, db_admin_user — пользователи, под которыми создана схема RTD. Для Oracle — это один и тот же пользователь
- db_admin_password — пароль пользователя со схемой RTD
Как результат мы получим следующую схему:
После этого необходимо добавить источник данных в OC4J, который будет указывать на этого пользователя
- Создаем стандартный JDBC источник данных в сервере приложений
- В файле OC4J_HOME/j2ee/home/applications/OracleRTD/ls/WEB-INF/web.xml прописываем источник<resource-ref id="jndi_name_LS">
<res-ref-name>jndi_name</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
<res-sharing-scope>Unshareable</res-sharing-scope> </resource-ref> - В файле OC4J_HOME/j2ee/home/applications/OracleRTD/ls/WEB-INF/web.xml прописываем ссылку<resource-ref-mapping name="jndi_name" location="jndi_name"/>
Далее необходимо зайти в JMX Console и через нее настроить источник данных (MBeans > OracleRTD > SDClusterPropertyManager > Misc > ModelSnapshotDSName) и выполнить операцию экспорта MBeans > OracleRTD > Learning Server > your study name > Complete Snapshot.
После этого к таблицам можно будет обращаться, что писать свои собственные отчеты. Ниже пара примеров:
Посчитать количество событий по каждому choice
select g.display_name as 'Choice Group',
c.display_name as 'Choice',
e.name as 'Event',
mi.timewindow_start as 'Start',
mi.timewindow_end as 'End',
mi.state as 'Model Status',
m.name as 'Model Name',
mi.count_total,
mi.count_positive,
mi.quality
from RTDApp a
inner join RTDStudy s on s.id=a.study_id
inner join RTDModel m on m.study_id=s.id
inner join RTDModelInstance mi on mi.model_id=m.id
inner join RTDEvent e on mi.event_id=e.id
inner join RTDChoice c on c.id=mi.choice_id
inner join RTDChoiceGroup g on c.choicegroup_id=g.id
where a.name='CrossSell'
order by m.name,
g.display_name,
c.display_name,
mi.timewindow_start
Top 6 прогнозирующих атрибутов
select a.name 'Attribute Name',
p.predictiveness 'Predictiveness',
c.display_name 'Choice Name',
mi.timewindow_start as 'Start',
mi.timewindow_end as 'End',
mi.state as 'Model Status'
from RTDApp app
inner join RTDChoice c on c.app_id=app.id
inner join RTDStudy s on s.id=app.study_id
inner join RTDModel m on m.study_id=s.id
inner join RTDModelInstance mi on mi.model_id=m.id and mi.choice_id=c.id
inner join RTDEvent e on mi.event_id=e.id
inner join RTDPredictiveness p on p.model_instance_id=mi.id
inner join RTDAttribute a on a.id=p.attribute_id
where app.name = 'CrossSell'
and c.display_name = 'Credit Protection'
and e.name = 'Purchased'
and m.name = 'OfferAcceptance'
and 7 > (select count(*)
from RTDPredictiveness p2
where p2.model_instance_id = p.model_instance_id
and p2.predictiveness > p.predictiveness)
order by mi.timewindow_end desc,
p.predictiveness desc



Комментариев нет:
Отправить комментарий