Oracle OLAP Option Oracle OLAP Option ( ( Да споделим опита Да споделим опита ) ) Ина Найденова, ТехноЛогика [email protected]
Feb 02, 2016
Oracle OLAP OptionOracle OLAP Option ( ( Да споделим опита Да споделим опита ) )
Ина Найденова, ТехноЛогика [email protected]
Oracle OLAPOracle OLAP Oracle Express Oracle Express PlatformPlatform::
Express ServerExpress Server Express Express AdministratorAdministrator Oracle Express ObjectsOracle Express Objects и др.и др.
OracleOracle Olap OptionOlap Option:: Olap Analytical Engine Olap Analytical Engine катокато част от част от RDBMS OracleRDBMS Oracle Analytic Workspaces, OLAP DML, SQL Interface to Analytic Workspaces, OLAP DML, SQL Interface to
OLAPOLAP Analytic Workspace Java APIAnalytic Workspace Java API BI Beans and Java OLAP APIBI Beans and Java OLAP API AWM, OLAP WorksheetAWM, OLAP Worksheet OracleBI Discoverer Plus OLAP, OracleBI Spreadsheet OracleBI Discoverer Plus OLAP, OracleBI Spreadsheet
Add-InAdd-In
Какво използвахме?Какво използвахме?
Цели:Цели: да създадем аналитично пространство с да създадем аналитично пространство с
подходящ многодименсионнен моделподходящ многодименсионнен модел да заредим данните в дефинираните кубоветеда заредим данните в дефинираните кубовете да дадем на клиентите въможност да анализират да дадем на клиентите въможност да анализират
даннитеданните
Използвани средства за целта:Използвани средства за целта: Analytic Workspace Manager Analytic Workspace Manager OracleBI Discoverer Plus OLAPOracleBI Discoverer Plus OLAP OracleBI Spreadsheet Add-InOracleBI Spreadsheet Add-In
Аналитичното пространствоАналитичното пространство
Може да се създаде чрезМоже да се създаде чрез::Analytic Workspace Manager (AWM)Analytic Workspace Manager (AWM)OracleBI Warehouse Builder (OWB)OracleBI Warehouse Builder (OWB)AW XML APIAW XML APIOLAP DML / DBMS_AWOLAP DML / DBMS_AW
AW AW може да се ползва отможе да се ползва от::BI tools BI tools нана Oracle OracleSQLSQLOLAP APIsOLAP APIs
Analytic Workspace ManagerAnalytic Workspace Manager
AWAWММ може работи в 2 режима: може работи в 2 режима:
Model ViewModel View – – представя представя многодименсионния модел на многодименсионния модел на даните (т.нар. даните (т.нар. Standard formStandard form))
Object ViewObject View – – едно ниво по-надолу, едно ниво по-надолу, имаме допълнителни обекти, с имаме допълнителни обекти, с които работи които работи OLAP engine-OLAP engine-аа
Последна версия 10.Последна версия 10.22
Основни елементи на логическия многодименсионнен Основни елементи на логическия многодименсионнен моделмодел::
МетрикиМетрики
ДименсииДименсии ЙерархииЙерархии НиваНива АтрибутиАтрибути
КубовеКубове
Елементи на Дименсионения Модел Елементи на Дименсионения Модел ((Model ViewModel View ))
D1
All time
20062005
Q1 Q4Q2 Q3 Q1 Q4Q2 Q3
M1 M2 M3 M1M2 M3…
…D2 D3 D31… D1 D2 D3 D30…
Quarter
Levels
Year
All
Month
Day
Стъпки при израждане на ДМ с Стъпки при израждане на ДМ с AWMAWM
1) 1) Установяване на връзка и създаване на празен Установяване на връзка и създаване на празен AWAW • създава се таблица създава се таблица AW$aw_nameAW$aw_name• права за достъп до аналитичното пространствоправа за достъп до аналитичното пространство• копиране на аналитично пространство (dbms_aw.aw_copy)копиране на аналитично пространство (dbms_aw.aw_copy)
2) 2) Съдаване на Съдаване на дименсите:дименсите:
- нивата- нивата- йерархиитейерархиите- атрибутитеатрибутите- mappingmapping на на
дименсиите дименсиите - зареждане на зареждане на
дименсионните дименсионните данниданни
Стъпки при израждане на ДМ с Стъпки при израждане на ДМ с AWMAWM
3) Създаване на кубове:3) Създаване на кубове: “ “рехав” (рехав” (sparsesparse)) и по кои дименсиии по кои дименсии как ще агрегираме даннитекак ще агрегираме данните дали да е компресиран дали да е компресиран дали да е разделен на дялове дали да е разделен на дялове
Стъпки при израждане на ДМ с Стъпки при израждане на ДМ с AWMAWM
СъздСъздaaване на кубовеване на кубове
Съхранение на многодименсионните данниСъхранение на многодименсионните данни
Компресиране на кубовеКомпресиране на кубове
Компресията - ограниченияКомпресията - ограничения По компресиранитеПо компресираните дименсии трябва да дименсии трябва да
бъдат агрегирани всички нива (не може да бъдат агрегирани всички нива (не може да използвате използвате skip-levelskip-level))
По компресираните дименсии може да се По компресираните дименсии може да се използва само използва само SUMSUM оператор оператор
Не може да дефинирате променлива Не може да дефинирате променлива едновременно с нормален композитен индекс едновременно с нормален композитен индекс и компресиран композитен индекси компресиран композитен индекс
Не може да имаме повече от една Не може да имаме повече от една променлива в компресиран куб променлива в компресиран куб **
Логическо разделяне на дяловеЛогическо разделяне на дялове
Работим с по-малки метрикиРаботим с по-малки метрики Ако имаме повече от 1 Ако имаме повече от 1 CPUCPU, , AWMAWM и и AW/XML AW/XML
Java APIJava API използват паралелизъм за да се използват паралелизъм за да се използват пълноценно всичките използват пълноценно всичките CPUsCPUs
Ако използвате Ако използвате Multi-Write Multi-Write възможностите на възможностите на 10g, 10g, може да имате много сесии, които да може да имате много сесии, които да променят отделните дялове променят отделните дялове
По-лесно се добавят и изтриват части от По-лесно се добавят и изтриват части от куба, фрагметация е по-малкакуба, фрагметация е по-малка
Ако използвате компресия, агрегациите се Ако използвате компресия, агрегациите се правят на ниво дялправят на ниво дял
Логическо разделяне на дяловеЛогическо разделяне на дялове
4) Създаване на метрика 4) Създаване на метрика
Стъпки при израждане на ДМ с Стъпки при израждане на ДМ с AWMAWM
5) 5) Зареждане наЗареждане на метрикаметрика
Стъпки при израждане на ДМ с Стъпки при израждане на ДМ с AWMAWM
DEFINE [program_name] PROGRAM PROGRAM ARGUMENT p_prod_level integer ALLSTAT SQL DECLARE CRS_ALLIANZ_CLNUM CURSOR FOR - SELECT - RPERIOD_ID,- CLFORMNT_ID, - .... FROM [source_name] - WHERE prod_level = :p_prod_level - GROUP BY - RPERIOD_ID,- ... ROLLUP(CLFORMNT_ID) SQL OPEN CRS_ALLIANZ_CLNUM SQL IMPORT CRS_ALLIANZ_CLNUM INTO - :MATCH MONTHS - :MATCH CLIENT_FOR_MONTHS - ... :MATCH TB_ALLIANZ_CLIENTS_NUM_STORED SQL CLOSE CRS_ALLIANZ_CLNUM SQL CLEANUP UPDATE COMMIT SHOW JOINCHARS ('TB_CLNUM - LEVEL ' p_prod_level ' LOADED!') END
Object ViewObject View Дименсиите – имаме Дименсиите – имаме
дименсии за елементите, дименсии за елементите, нивата и др., релации за нивата и др., релации за йерархичните отношенияйерархичните отношения
Атрибутите – в променливиАтрибутите – в променливи Метриките – във формули и Метриките – във формули и
променливипроменливи Правилата за агрегиране – в Правилата за агрегиране – в
aggregation maps aggregation maps и и valuesetsvaluesets
Object View – FormulasObject View – Formulas
DEFINE DEMO_CLNUM DEFINE DEMO_CLNUM FORMULA INTEGER FORMULA INTEGER
<list of dimensions><list of dimensions>
EQ aggregateEQ aggregate
((
DEMO_CLNUM_STORED DEMO_CLNUM_STORED using OBJ771105059using OBJ771105059
))
Aggregation MapsAggregation MapsDEFINE [name] AGGMAPDEFINE [name] AGGMAPAGGMAPAGGMAP
RELATION MONTHS_PARENTREL PRECOMPUTE(ALL) OPERATOR RELATION MONTHS_PARENTREL PRECOMPUTE(ALL) OPERATOR NOAGGNOAGG
RELATION SALES_CHANNELS_PARENTREL RELATION SALES_CHANNELS_PARENTREL PRECOMPUTEPRECOMPUTE(SCHL_AGG_VSET1) OPERATOR ) OPERATOR SUMSUM
RELATION PRODUCTS_PARENTREL RELATION PRODUCTS_PARENTREL PRECOMPUTE(PRECOMPUTE(PROD_AGG_VSET1) OPERATOR ) OPERATOR SUMSUM
RELATION CONTRACT_COUNT_PARENTREL RELATION CONTRACT_COUNT_PARENTREL PRECOMPUTE(CONTRACT_COUNT_LEVELREL 'CONTR_COUNT_L1') PRECOMPUTE(CONTRACT_COUNT_LEVELREL 'CONTR_COUNT_L1') OPERATOR OPERATOR SUMSUM
RELATION CLIENT_STATE_PARENTREL RELATION CLIENT_STATE_PARENTREL PRECOMPUTE(CLIENT_STATE_LEVELREL 'CLIENT_STATE_L2') PRECOMPUTE(CLIENT_STATE_LEVELREL 'CLIENT_STATE_L2') OPERATOR OPERATOR SUMSUM ……ENDEND
Можем ли сами даМожем ли сами да си направим “компресия”?си направим “компресия”?
За даден период За даден период [tk,tm] [tk,tm] имаме неадитивни имаме неадитивни дименсии, в чиито йерархии имаме възли дименсии, в чиито йерархии имаме възли само с 1 наследниксамо с 1 наследник
All
L1 E2L1 E1
L2 E1 L2 E2 … … L2 Ek …
…L3 E2 … L3 Em…
L4 E1 ... … … …
Искаме Искаме OLAP OLAP engine-engine-а точно а точно за тези възли да за тези възли да използва използва обощения обощения “on “on the fly”the fly”
Можем ли сами даМожем ли сами да си направим “компресия”?си направим “компресия”?
Нуждаем се от коректен Нуждаем се от коректен aggregation aggregation mapmap, който да се опреснява при всяко , който да се опреснява при всяко зареждане на даннитезареждане на данните
Например: дименсиите канали на Например: дименсиите канали на продажба и продукти са неадитивни, но продажба и продукти са неадитивни, но в в SCHL_AGG_VSET1 и и PROD_AGG_VSET1 се се съдържат всички елементи освен съдържат всички елементи освен възлите с един единствен наследниквъзлите с един единствен наследник
Можем ли сами даМожем ли сами да си направим “компресия”?си направим “компресия”?
DEFINE DEFINE F_NAMEF_NAME FORMULA INTEGER FORMULA INTEGER EQ EQ IF MONTHS GE '2003-JAN' AND IF MONTHS GE '2003-JAN' AND MONTHS LT '2004-JAN' THEN MONTHS LT '2004-JAN' THEN aggregate(MEASURE_STORED using AGG_MAP1)aggregate(MEASURE_STORED using AGG_MAP1)
ELSE ELSE IF MONTHS GE '2005-JAN' AND IF MONTHS GE '2005-JAN' AND MONTHS LT '2006-JAN' THEN MONTHS LT '2006-JAN' THEN aggregate(MEASURE_STORED using AGG_MAP2)aggregate(MEASURE_STORED using AGG_MAP2)
ELSE ELSE aggregate(MEASURE_STORED using AGG_MAP3)aggregate(MEASURE_STORED using AGG_MAP3)
SQL SQL достъп до многодименсионните масивидостъп до многодименсионните масиви
SQL SQL достъп до многодименсионните масивидостъп до многодименсионните масивиCREATE TYPE row_obj AS OBJECT (
column_first datatype, column_next datatype, column_n datatype);
CREATE TYPE table_obj AS TABLE OF row_obj;
SELECT * FROM TABLE ( OLAP_TABLE ( 'analytic_workspace',
'table_obj', 'olap_command', 'limit_map‘) )
MODEL DIMENSION BY(dimensions, gids) MEASURES(measures, attributes, rowtocell) RULES UPDATE SEQUENTIAL ORDER();
ДругиДруги Полезни изгледи:Полезни изгледи: AAll_olap2_aw_ll_olap2_aw_XXXXXXXX
V$AW_V$AW_XXXXXXXX Имплицитна смяна на текущото Имплицитна смяна на текущото AWAW Отделно Отделно temporary temporary таблично пространство за таблично пространство за OLAP OLAP
потребителитепотребителите Проблеми с освобождаването на паметтаПроблеми с освобождаването на паметта
select sum(dbas.bytes)/1024/1024 as mb from user_lobs dbaljoin user_segments dbas using (segment_name)where dbal.column_name = 'AWLOB' and
dbal.table_name ='AW$ALLIANZDW'; select sum(length(AWLOB)) from AW$ALLIANZDW;
OracleBI Spreadsheet Add-InOracleBI Spreadsheet Add-In
OracleBI Spreadsheet Add-InOracleBI Spreadsheet Add-In
OracleBI Spreadsheet Add-InOracleBI Spreadsheet Add-In
OracleBI Spreadsheet Add-InOracleBI Spreadsheet Add-In
OracleBI Discoverer Plus OLAPOracleBI Discoverer Plus OLAP
във Варна, Стара Загора и Бургас няма застрахователни офиси
Услуги свързани с банковия бизнес
Time: April 2006,….Time: May, Client Type: Private person, …
В заключениеВ заключениеМного е направено, но и има още какво Много е направено, но и има още какво
да се желае да се желае Работи се в нова посока:Работи се в нова посока:
Oracle Oracle BI Suite BI Suite базиран набазиран на Siebel Siebel Analytics Analytics платформатаплатформата
Въпроси ?Въпроси ?