ClothesEveryday
Etap 1.
Oracle Data Integrator
– Proces Transportu Danych
Oracle 11g2 (12c)
Baza OLAP w układzie
gwiazdy
Oracle DI
Część 1: Przygotowanie architektury danych
2014-10-24
Clothes Everywhere (Rafał Kowalski)
1
User:
clothes_everyday
clothes_everyday_test
Password: krzaczek123
Projekt: ETL_Clothes_Everyday_IMPORT
Dane źródłowe
OLAP Datamart
ClothesEveryday -
ROLAP
(relacyjny model danych)
Zadanie polega na wygenerowaniu relacyjnej bazy danych analitycznych
„ClothesEveryday” w układzie gwiazdy, którego model relacyjny jest przedstawiony na
diagramie poniżej:
?
2014-10-24
Clothes Everywhere (Rafał Kowalski)
2
ClothesEveryday -
ROLAP
(logiczny model danych)
FAKTY, MIARY, WYMIARY, HIERARCHIE
Fakt(SALES)
Wymiar(CHANNEL)
Wymiar(PRODUCT)
wymiar(CUSTOMER)
wymiar(CUSTOMER)
MIARY
2014-10-24
Clothes Everywhere (Rafał Kowalski)
3
wymiar(DATE)
ClothesEveryday - Hierarchia Wymiaru Logicznego:
CHANNEL
nazwa poziomu
identyfikator i atrybuty dodatkowe
przykładowe wartości
TOTAL
(brak)
CLASS
channel_class
‘Direct’
CHANNEL
channel_id
channel_desc
‘T’,
’Tele Sales’
2014-10-24
Clothes Everywhere (Rafał Kowalski)
4
ClothesEveryday - Hierarchia Wymiaru Logicznego:
PRODUCT
nazwa poziomu
identyfikator i atrybuty dodatkowe przykładowe wartości
TOTAL
(brak)
CATEGORY
prod_category
‘Boys’
SUBCATEGORY
prod_subcategory
‘Shirts - Boys’,
PRODUCT Name
prod_name
‘Yuma 7cm Tee Kids’
PRODUCT Detal
Prod_id
prod_desc
4690
‘this is the famous Yuma 7cm Tee
Kids in color black of size XXL’
2014-10-24
Clothes Everywhere (Rafał Kowalski)
5
ClothesEveryday - Hierarchia Wymiaru Logicznego:
DATE
nazwa poziomu
identyfikator i atrybuty dodatkowe
przykładowe wartości
TOTAL
(brak)
YEAR
calendar_year_num_long
2000
QUARTER
calendar_quarter_yq_num
calendar_quarter_num,
calendar_quarter_yq_long
20003
3
2000 K3
MONTH
calendar_month_ym_num
calendar_month_nam_short,
calendar_month_nam_long,
calendar_month_num,
calendar_month_ym_short,
calendar_month_ym_long,
200009
Sep
September
9
2000 Sep
2000 September
2014-10-24
Clothes Everywhere (Rafał Kowalski)
6
calendar_month_ym_long,
calendar_month_ym_mshort,
calendar_month_ym_mlong
2000 September
2000/09 Sep
2000/09 September
DAY
date_id
07.09.2000 00:00:00
ClothesEveryday - Hierarchia Wymiaru Logicznego:
CUSTOMER
nazwa poziomu
identyfikator i atrybuty dodatkowe
przykładowe wartości
TOTAL
(brak)
CONTINENT
country_region
‘Europe
COUNTRY
country_id
country_name
‘PL’,
’Poland’
REGION
cust_state_province
‘Dolnoslaskie’
CITY
cust_city
‘Wroclaw’
CUSTOMER
cust_id
78769
2014-10-24
Clothes Everywhere (Rafał Kowalski)
7
Schematy bazy danych: clothes_everyday – produkcyjny, clothes_everyday_test – testowy
1.
Uruchomić program Oracle
BI Administration Tool
DROP USER clothes_everyday CASCADE;
CREATE USER clothes_everyday IDENTIFIED BY krzaczek123
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp account unlock;
GRANT CONNECT, RESOURCE, CREATE VIEW TO clothes_everyday;
DROP USER clothes_everyday_test CASCADE;
CREATE USER clothes_everyday_test IDENTIFIED BY krzaczek123
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp account unlock;
1. Uruchomić program Oracle SQL Developer.
Zalogować się na konto
sys
i stworzyć dwa schematy do
testowania procesu zasilania bazy przy pomocy ODI.
2014-10-24
Clothes Everywhere (Rafał Kowalski)
8
DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp account unlock;
GRANT CONNECT, RESOURCE ,CREATE VIEW TO clothes_everyday_test;
/* ================================================================
-- Przestrzeń tabel zostaa stworzona wcześniej.
-- W tym ćwiczeniu nie należy jej kasować !!!
DROP TABLESPACE clothes_everyday_tbs;
CREATE BIGFILE TABLESPACE "CLOTHES_EVERYDAY_TBS"
DATAFILE 'C:\APP\ADMINISTRATOR\ORADATA\ORCL\CLOTHES_EVERYDAY_TBS.DBF'
SIZE 1024M REUSE AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED
LOGGING EXTENT MANAGEMENT LOCAL SEGMENT SPACE MANAGEMENT AUTO ;
*/
ALTER USER clothes_everyday
QUOTA UNLIMITED ON clothes_everyday_tbs;
ALTER USER clothes_everyday_test QUOTA UNLIMITED ON clothes_everyday_tbs;
Nowy projekt ODI
2. Zalogować się do repozytorium ODI.
Hasło
:
krzaczek123
2014-10-24
Clothes Everywhere (Rafał Kowalski)
9
Dwa konteksty działania
zadań:
Testing
i
Production
2014-10-24
Clothes Everywhere (Rafał Kowalski)
10
Architektury fizyczne Oracle (fizyczne serwery) dla dwóch kontekstów działania
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
11
1
3
Schematy fizyczne Oracle (fizyczne bazy danych ETL) dla dwóch kontekstów działania
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
12
3
1
Architektura logiczna Oracle (Logiczny serwer ETL) niezależna od kontekstu działania
1
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
13
2
☺
Model Oracle (Logiczna baza ETL) niezależna od kontekstu działania
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
14
Reinżynieria modelu i stworzenie metadanych
tabel zostanie wykonane w czasie późniejszym,
po stworzeniu tabel obszaru ETL
☺
3
Fizyczny schemat katalogu plików tekstowych
dla dwóch kontekstów działania
ETL
3. Stworzyć folder do
1
2
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
15
C:\temp\ETL_ClothesEveryday_FILE
3. Stworzyć folder do
przechowywania plików
tekstowych
☺
3
4
Logiczny schemat katalogu plików tekstowych
źródło danych
ETL
1
2
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
16
☺
Model danych katalogu plików tekstowych
źródło danych
ETL
1
2
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
17
☺
3
ClothesEveryday
Etap 1.
Oracle Data Integrator
– Proces Transportu Danych
Oracle 11g2 (12c)
Baza OLAP w układzie
gwiazdy
Oracle DI
Część 2: Tworzenie pakietu procedur pomocniczych
2014-10-24
Clothes Everywhere (Rafał Kowalski)
18
Projekt: ETL_Clothes_Everyday_IMPORT
User:
clothes_everyday
clothes_everyday_test
Password: krzaczek123
Projekt: ETL_Clothes_Everyday_IMPORT
Dane źródłowe
OLAP Datamart
Stworzenie zestawu tabel – procedura SQL:
CE_Drop_Tables_DM
2
1
4
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
19
5
3
Stworzenie zestawu tabel – procedura SQL:
CE_Drop_Tables_DM
4. W analogiczny sposób stworzyć polecenia dropowania
pozostałych tabel schematu ClothesEveryday:
-- =========================================
1,2,3,4,5
☺
2014-10-24
Clothes Everywhere (Rafał Kowalski)
20
-- =========================================
-- Drop Schema Objects
-- =========================================
DROP TABLE ce_channels CASCADE CONSTRAINTS;
DROP TABLE ce_countries CASCADE CONSTRAINT;
DROP TABLE ce_customers CASCADE CONSTRAINTS;
DROP TABLE ce_date CASCADE CONSTRAINTS;
DROP TABLE ce_products CASCADE CONSTRAINTS;
DROP TABLE ce_sales CASCADE CONSTRAINTS;
1
2
3
4
5
Stworzenie zestawu tabel – procedura SQL:
CE_Drop_Tables_DM
6. WAŻNE: Wybrać właściwy
kontext wykonania. W tym
przypadku testowanie.
1
3
4
2014-10-24
Clothes Everywhere (Rafał Kowalski)
21
5. Wykonać procedurę
2
Stworzenie zestawu tabel – procedura SQL:
CE_Drop_Tables_DM
7. Sprawdzenie wyników
wykonania procedury
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
22
W logu wykonania ostatniej procedury
widać symbole ostrzeżeń. Gdyby w definicji poleceń
nie zostały zaznaczone opcje „Ignore Errors”,
to wykonanie zostało by przerwane z błędem.
10. Po otworzeniu logu przykładowego polecenia
widać przyczynę błędu - brak tabeli nie jest,
w tym przypadku, błędem krytycznym
☺
Stworzenie zestawu tabel – procedura SQL:
CE_Gen_Tables_DM
1
2
4
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
23
5
Stworzenie zestawu tabel – procedura SQL:
CE_Gen_Tables_DM
11. W analogiczny sposób stworzyć polecenia
generowania pozostałych tabel schematu
ClothesEveryday:
CREATE TABLE ce_countries
( country_id
CHAR(2 char) NOT NULL
, country_name
VARCHAR2(40 char) NOT NULL
, country_subregion VARCHAR2(30 char) NOT NULL
, country_region
VARCHAR2(20 char) NOT NULL
) TABLESPACE clothes_everyday_tbs;
, cust_income_level
VARCHAR2(30 char) NOT NULL
, cust_credit_limit
NUMBER(8) NOT NULL
, cust_email
VARCHAR2(30 char) NOT NULL
) TABLESPACE clothes_everyday_tbs;
CREATE TABLE ce_sales
( prod_id
NUMBER(6) NOT NULL
, cust_id
NUMBER(6) NOT NULL
, date_id
DATE NOT NULL
, channel_id
CHAR(1 char) NOT NULL
, promo_id
NUMBER(6) NOT NULL
, quantity_sold NUMBER(3) NOT NULL
, amount
NUMBER(10,2) NOT NULL
, cost
NUMBER(10,2) NOT NULL
1
☺
1,2,3,4,5
4
5
2014-10-24
Clothes Everywhere (Rafał Kowalski)
24
CREATE TABLE ce_products
( prod_id
NUMBER(6) NOT NULL
, prod_name
VARCHAR2(50 char) NOT NULL
, prod_desc
VARCHAR2(4000 char) NOT NULL
, prod_subcategory
VARCHAR2(50 char) NOT NULL
, prod_subcat_desc
VARCHAR2(2000 char) NOT NULL
, prod_category
VARCHAR2(50 char) NOT NULL
, prod_cat_desc
VARCHAR2(2000 char) NOT NULL
, prod_weight_class
NUMBER(2) NOT NULL
, prod_unit_of_measure VARCHAR2(20 char) NOT NULL
, prod_pack_size
VARCHAR2(30 char) NOT NULL
, supplier_id
NUMBER(6) NOT NULL
, prod_status
VARCHAR2(20 char) NOT NULL
, prod_list_price
NUMBER(8,2) NOT NULL
, prod_min_price
NUMBER(8,2) NOT NULL
) TABLESPACE clothes_everyday_tbs;
CREATE TABLE ce_customers
( cust_id
NUMBER(6) NOT NULL
, cust_first_name
VARCHAR2(20 char) NOT NULL
, cust_last_name
VARCHAR2(40 char) NOT NULL
, cust_gender
CHAR(1 char) NOT NULL
, cust_year_of_birth
NUMBER(4) NOT NULL
, cust_marital_status
VARCHAR2(20 char) NOT NULL
, cust_street_address
VARCHAR2(40 char) NOT NULL
, cust_postal_code
VARCHAR2(10 char) NOT NULL
, cust_city
VARCHAR2(30 char) NOT NULL
, cust_state_province
VARCHAR2(40 char) NOT NULL
, country_id
CHAR(2 char) NOT NULL
, cust_main_phone_number VARCHAR2(25 char) NOT NULL
) TABLESPACE clothes_everyday_tbs;
CREATE TABLE ce_date
( date_id
DATE NOT NULL -- klucz wymiaru
, calendar_month_ym_num
NUMBER(6) NOT NULL -- YYYYMM klucz poziomu
, calendar_month_ym_short
NCHAR(8) NOT NULL -- YYYY Mon
, calendar_month_ym_mshort
NCHAR(11) NOT NULL -- YYYY/MM Mon
, calendar_month_ym_mlong
NVARCHAR2(25) NOT NULL -- YYYY/MM Month
, calendar_month_ym_long
NVARCHAR2(25) NOT NULL -- YYYY Month
, calendar_month_num
NUMBER(2) NOT NULL -- MM
, calendar_month_nam_short
NCHAR(3) NOT NULL -- Mon
, calendar_month_nam_long
NVARCHAR2(15) NOT NULL -- Month
, calendar_quarter_yq_num
NUMBER(5) NOT NULL -- YYYY klucz poziomu
, calendar_quarter_yq_long
NCHAR(7) NOT NULL -- YYYY kQ
, calendar_quarter_num
NUMBER(1) NOT NULL -- Q
, calendar_year_num_long
NUMBER(4) NOT NULL -- YYYY klucz poziomu
);
4
2
3
Stworzenie zestawu tabel – procedura SQL:
CE_Gen_Tables_DM
13. WAŻNE: Wybrać właściwy
kontext wykonania. W tym
przypadku testowanie.
1
3
4
5
2014-10-24
Clothes Everywhere (Rafał Kowalski)
25
12. Wykonać procedurę
Zapis w logu świadczy, że tabele zostały
stworzone prawidłowo. Można to
potwierdzić przy pomocy programu
Oracle SQL Developer
2
☺
Stworzenie obiektów pomocniczych – procedura SQL:
CE_Gen_Auxiliary
1
2
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
26
Stworzenie obiektów pomocniczych – procedura SQL:
CE_Gen_Auxiliary
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
27
Stworzenie obiektów pomocniczych – procedura SQL:
CE_Gen_Auxiliary
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
28
Dwa znaki apostrof ‘ ‘
Stworzenie obiektów pomocniczych – procedura SQL:
CE_Gen_Auxiliary
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
29
Stworzenie obiektów pomocniczych – procedura SQL:
CE_Gen_Auxiliary
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
30
Stworzenie obiektów pomocniczych – procedura SQL:
CE_Gen_Auxiliary
2. WAŻNE: Wybrać właściwy
kontext wykonania. W tym
przypadku testowanie.
3
4
2014-10-24
Clothes Everywhere (Rafał Kowalski)
31
1. Wykonać procedurę
5. Zapis w logu świadczy, że procedura została
wykonana prawidłowo.
Działanie perspektywy MOŻNA potwierdzić przy
pomocy programu Oracle SQL Developer
4
Pakiet:
CE_PrepareTabDM
– Pakiet tworzący przestrzeń Data Martu
CE
CE
CE
1
2
4
2014-10-24
Clothes Everywhere (Rafał Kowalski)
32
3. Przejść do zakładki Diagram
Przenieść procedury na diagram.
Procedura przeniesiona pierwsza uzyskuje status First
Step. Można to zmieniś otwierając menu właściwości.
5
6
Pakiet:
CE_PrepareTabDM
– Pakiet tworzący przestrzeń Data Martu
CE
1. Kliknięcie w ikonę strzałki
WŁĄCZA tryb łączenia
węzłów diagramu
Klikanie w węzeł początkowy i
docelowy, wprowadza połączenie
2
4
Klikanie w węzeł początkowy i
docelowy, wprowadza połączenie
Klikanie w węzeł początkowy i
docelowy, definiuje połączenie
3
7
8
5. Ponowne kliknięcie w
ikonę strzałki WYŁACZA tryb
łączenia węzłów diagramu
2014-10-24
Clothes Everywhere (Rafał Kowalski)
33
6. Potwierdzić
zapisanie zmian i
wykonać pakiet
10. Sprawdzić log
wykonania
CE
CE
7
9
ClothesEveryday
Etap 1.
Oracle Data Integrator
– Proces Transportu Danych
Oracle 11g2 (12c)
Baza OLAP w układzie
gwiazdy
Oracle DI
Część 3:
Stworzenie
dwóch
przepływów
(Interfejsów) i szablonu
pakietu zasilania DM
2014-10-24
Clothes Everywhere (Rafał Kowalski)
34
User:
clothes_everyday
clothes_everyday_test
Password: krzaczek123
Projekt: ETL_Clothes_Everyday_IMPORT
Dane źródłowe
Dane dla OBIEE
User:
clothes_everyday
clothes_everyday_test
Password: krzaczek123
Interfejs:
CE_TablesCardinality_Report
– Aktualizowanie historii zasileń obszaru CE w tabeli
DM_EtlLoadHistory
a)
Historia zasileń obszaru CE jest jest przechowywana w tabeli DM_EtlLoadHistory.
b)
Do zasilania tabeli informacjami o kolejnych zasileniach będzie wykorzystywana
perspektywa v_CE_DmTablesCardinality‘
c)
Zasilanie będzie aktualizowane przy pomocy odpowiedniego interfejsu
CE_TbsCrdnlty_Rprt
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
35
d)
Wypełnić nagłówek interfejsu i pozostawić otwarte okno jego kreatora !
e)
Przed rozpoczęciem dalszych prac trzeba przygotować metadane środowiska tabel i perspektyw, stworzonych
podczas testowania wcześniejszych etapów pracy.
f)
Przed rozpoczęciem dalszych prac trzeba uzupełnić bibliotekę modułów wiedzy projektu o moduł integracji SQL
(IKM).
1
Model
ETL_Clothes_Everyday_DM –
Reinżynieria Metadanych
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
36
1
W bazie logicznej ETL_Clothes_Everyday_DM (kontekst
Testing) znajdują się tabele stworzone w poprzednim etapie
przy pomocy procedury CE_Gen_Tables_DM. Proces
reinżynierii spowoduje wczytanie ich metadanych do słownika
obszaru bazy.
W bazie logicznej ETL_Clothes_Everyday_DM (kontekst
Testing) znajdują się tabele stworzone w poprzednim etapie
przy pomocy procedury CE_Gen_Tables_DM. Proces
reinżynierii spowoduje wczytanie ich metadanych do słownika
obszaru bazy.
Moduły Wiedzy
–
Import niezbędnych modułów
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
37
Do wykonania zadania wystarczy standardowy
moduł integracji dla transformcji SQL.
3
4
Interfejs:
CE_TablesCardinality_Report –
Mapowanie Metadanych
1. Powrócić do okna kreatora interfejsu
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
38
2
4
4. Funkcja automatycznego mapowania atrybutów zaoszczędzi
czas projektowania w przypadku, gdy atrybuty obydwu encji
będą miały takie same nazwy i zgodne typy danych
Interfejs:
CE_TablesCardinality_Report –
Konfigurowanie Interfejsu
2. Tu kliknąć (właściwości
obszaru oczyszczania)
1. Wybrać zakładkę
przepływów
2014-10-24
Clothes Everywhere (Rafał Kowalski)
39
3. Wybrać moduł wiedzy integracji
4. Uzupełnić parametry
Interfejs:
CE_TablesCardinality_Report –
Konfigurowanie Interfejsu
1. Wybrać zakładkę
mapowania
2. Jednym kliknięciem wybrać atrybut, który
nie został zmapowany automatycznie
2014-10-24
Clothes Everywhere (Rafał Kowalski)
40
3. Wprowadzić nazwę zmiennej
systemowej, określającej datę i czas
zasilania.
5. Potwierdzić wybór
4. Wybrać warstwę transportu, w której zostanie wykonane mapowanie.
W tym przypadku jest to strona docelowa – serwer Oracle
Interfejs:
CE_TablesCardinality_Report –
Testowanie Interfejsu
1
2
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
41
4
5
6
7
8
Historia zasileń obszaru CE jest jest
przechowywana w tabeli DM_EtlLoadHistory.
Interfejs już działa. Tabele są na razie jeszcze
puste, co widać w kolumnie NUMROWS.
Interfejs:
CE_Load_SALES
– Wczytanie danych z pliku tekstowego
ce_sales.dat
do tabeli
CE_SALES
CE
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
42
a)
Wypełnić nagłówek interfejsu i pozostawić otwarte okno. Bez wypełnienia wszystkich metadanych zapisanie
interfejsu jest niemożliwe.
b)
Przed rozpoczęciem dalszych prac trzeba przygotować metadane źródłowego pliku tekstowego
ce_sales.dat.
c)
Przed rozpoczęciem dalszych prac trzeba uzupełnić bibliotekę modułów wiedzy projektu o moduł integracji.
Model
ETL_ClothesEveryday_FILES -
Definicja
Metadanych
CE_SALES
(Datastore)
1
2
3
4
2014-10-24
43
Clothes Everywhere (Rafał Kowalski)
2
5
6
Magazyn danych
CE_SALES
w modelu
ETL_ClothesEveryday_FILES
1
SQLLDR
2014-10-24
44
Clothes Everywhere (Rafał Kowalski)
2
3
Magazyn danych
CE_SALES
w modelu
ETL_ClothesEveryday_FILES
Uzupełnić Metadane zgodnie z
definicją tabeli:
( prod_id
NUMBER(6)
, cust_id
NUMBER(6)
, date_id
DATE
, channel_id
CHAR(1 char)
, promo_id
NUMBER(6)
, quantity_sold NUMBER(3)
, amount NUMBER(10,2)
, cost NUMBER(10,2)
1
2014-10-24
45
Clothes Everywhere (Rafał Kowalski)
2
Moduły Wiedzy –
Import niezbędnych modułów
2014-10-24
Clothes Everywhere (Rafał Kowalski)
46
1. Do wykonania interfejsu potrzebne są dwa moduły wiedzy:
LKM File to Oracle (SQLLDR)
IKM SQL Control Append.
W przypadku braku na liście, trzeba je importować
1. Do wykonania interfejsu potrzebne są dwa moduły wiedzy:
LKM File to Oracle (SQLLDR)
IKM SQL Control Append.
W przypadku braku na liście, trzeba je importować
Interfejs:
CE_Load_SALES –
Wczytanie danych do tabeli
CE_SALES
6. Uzupełnić funkcję konwersji
daty. (kliknięcie w pole mapowania
otwiera okno edycji
1
3
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
47
5. Wybrać opcję automatycznego
mapowania.
2
4
7
8
Interfejs:
CE_Load_SALES –
Wczytanie danych do tabeli
CE_SALES
7. Zawartość tabeli docelowej będzie
kasowana przed rozpoczęciem nowego
importu (import nie jest przyrostowy).
1
2
5
2014-10-24
Clothes Everywhere (Rafał Kowalski)
48
4. Import po
„ścieżce bezpośredniej”.
3. Wybrać odpowiednie moduły
wiedzy dla źródła i przeznaczenia .
3,6. Wybrać odpowiednie moduły
wiedzy dla źródła i przeznaczenia.
Interfejs:
CE_Load_SALES –
Wczytanie danych do tabeli
CE_SALES
Zapisać interfejs i uruchomić go.
6. Sprawdzić raport:
czas całkowity: 12s.
czas importu (SQLLDR): 5s.
1
2
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
49
4. Poczekać, aż się
wykona (odświeżać
widok)
5
SQLLDR
2014-10-24
Clothes Everywhere (Rafał Kowalski)
50
Pakiet:
CE_Execute_ETL –
Podstawowy pakiet zasilania tabel DM
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
51
5
To jest jedynie szablon procesu ETL,
zawierający pierwszy i ostatni interfejs.
W kolejnych etapach pracy będą
konfigurowane pozostałe interfejsy
3
4
Pakiet:
CE_Execute_ETL –
Podstawowy pakiet zasilania tabel DM
1. Zapisać pakiet
2. Wykonać pakiet
4. Sprawdzić log wykonania.
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
52
Pakiet:
CE_Execute_ETL –
Podstawowy pakiet zasilania tabel DM
4
2014-10-24
Clothes Everywhere (Rafał Kowalski)
53
3. Sprawdzić zawartość tabeli
z historią procesów ETL.
1
2
ClothesEveryday
Etap 1.
Oracle Data Integrator
– Proces Transportu Danych
Oracle 11g2 (12c)
Baza OLAP w układzie
gwiazdy
Oracle DI
Część 4:
Stworzenie
pozostałych
przepływów
(Interfejsów)
pakietu zasilania DM
2014-10-24
Clothes Everywhere (Rafał Kowalski)
54
User:
clothes_everyday
clothes_everyday_test
Password: krzaczek123
Projekt: ETL_Clothes_Everyday_IMPORT
Dane źródłowe
Dane dla OBIEE
User:
clothes_everyday
clothes_everyday_test
Password: krzaczek123
Interfejs:
CE_Load_DATE –
Zasilenie
tabeli
CE_DATE
na podstawie
CE_SALES
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
55
Tabela (wymiaru) CE_DATE będzie wypełniana datami faktów,
zasilonych do tabeli CE_SALES.
Tabela nie będzie czyszczona przed każdym, kolejnym
procesem zasilania, tylko uzupełniana nowymi wartościami.
Interfejs:
CE_Load_DATE –
Zasilenie
tabeli
CE_DATE
na podstawie
CE_SALES
2
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
56
1
4
Tabela (wymiaru) CE_DATE zawiera wiele kolumn, których
wartości zostaną wyliczone na podstawie daty (klucza
głównego). W tym przypadku mapowanie automatyczne
kolumn z encji źródłowej jest niepotrzebne.
Interfejs:
CE_Load_DATE –
Zasilenie
tabeli
CE_DATE
na podstawie
CE_SALES
2. Kolumna DATE_ID jest mapowana „wprost” i można jej symbol
przeciągnąć myszką z obszaru źródła na obszar docelowy
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
57
INSERT INTO ce_date
SELECT DISTINCT
date_id
, to_char(date_id,'YYYYMM')
, to_char(date_id,'YYYY Mon')
, to_char(date_id,'YYYY') || '/' || to_char(date_id,'MM') || to_char(date_id,' Mon')
, to_char(date_id,'YYYY') || '/' || to_char(date_id,'MM') || to_char(date_id,' Month')
, to_char(date_id,'YYYY Month')
, to_char(date_id,'MM')
, to_char(date_id,'Mon')
, to_char(date_id,'Month')
, to_char(date_id,'YYYYQ')
, to_char(date_id,'YYYY') || ' K' || to_char(date_id,'Q')
, to_char(date_id,'Q')
, to_char(date_id,'YYYY')
FROM ce_sales;
3
Wartości
Wartości pozostałych kolumn trzeba wyznaczyć na podstawie przedstawionych
poniżej wzorów transformacji, zgodne z odpowiednimi typami danych.
Interfejs:
CE_Load_DATE –
Zasilenie
tabeli
CE_DATE
na podstawie
CE_SALES
1
2
3
4
5
6
7
8
9
10
11
12
2014-10-24
Clothes Everywhere (Rafał Kowalski)
58
INSERT INTO ce_date
SELECT DISTINCT
date_id
, to_char(date_id,'YYYYMM')
, to_char(date_id,'YYYY Mon')
, to_char(date_id,'YYYY') || '/' || to_char(date_id,'MM') || to_char(date_id,' Mon')
, to_char(date_id,'YYYY') || '/' || to_char(date_id,'MM') || to_char(date_id,' Month')
, to_char(date_id,'YYYY Month')
, to_char(date_id,'MM')
, to_char(date_id,'Mon')
, to_char(date_id,'Month')
, to_char(date_id,'YYYYQ')
, to_char(date_id,'YYYY') || ' K' || to_char(date_id,'Q')
, to_char(date_id,'Q')
, to_char(date_id,'YYYY')
FROM ce_sales;
Zadanie jest (niestety) dosyć pracochłonne, … ale prawidłowo wykonane
dostarczy wiele satysfakcji.
3
Interfejs:
CE_Load_DATE –
Zasilenie
tabeli
CE_DATE
na podstawie
CE_SALES
5. Zapisać metadane
6,7. Uruchomić interfejs
DWA RAZY
– drugi raz dopiero po
sprawdzeniu, że pierwsze wykonanie interfejsu się zakończyło.
UWAGA: Wykonanie interfejsu zajmuje kilkadziesiąt sekund.
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
59
4. Wprowadzić
parametry.
3. Wymusić unikalność wierszy
tabeli wynikowej (słownika
dat).
1
Interfejs:
CE_Load_DATE –
Zasilenie
tabeli
CE_DATE
na podstawie
CE_SALES
Drugie uruchomienie interfejsu na
tej samej zawartości tabeli
CE_SALES nie wprowadziło już
nowych wierszy do tabeli CE_DATE.
1
2
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
60
Pierwsze uruchomienie spowodowało
wygenerowanie 1030 nowych wierszy
w tabeli CE_DATE
Interfejs:
CE_Load_DATE –
Zasilenie
tabeli
CE_DATE
na podstawie
CE_SALES
1
2
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
61
Interfejs:
CE_Load_CUSTOMERS –
Zasilenie
tabeli
CE_CUSTOMERS
z plików txt
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
62
a)
Wypełnić nagłówek interfejsu i pozostawić otwarte okno. Bez wypełnienia wszystkich metadanych zapisanie
interfejsu jest niemożliwe.
b)
Przed rozpoczęciem dalszych prac - przygotować metadane źródłowych plików tekstowych.
c)
Przed rozpoczęciem dalszych prac - uzupełnić bibliotekę modułów wiedzy projektu o moduł integracji.
Model:
ETL_ClothesEveryday_FILES -
Definicja
CE_CUSTOMERS_MAIN
(Datastore)
2
1
4
5
3
CMAIN
2014-10-24
Clothes Everywhere (Rafał Kowalski)
63
6
3
Model:
ETL_ClothesEveryday_FILES -
Definicja
CE_CUSTOMERS_MAIN
(Datastore)
CUST_ID CUST_FIRST_NAME
CUST_LAST_NAME
CUST_GENDER
CUST_YEAR_OF_BIRTH
CUST_MARITAL_STATUS
CUST_MAIN_PHONE_NUMBER
CUST_EMAIL
10 Abigail
Kessel
M 1946 unknown
127-379-8954 Kessel@company.com
20 Abner
Everett M 1963 married
570-248-9913 Everett@company.com
30 Abraham Odenwalld
M 1951 single 234-540-5189 Odenwalld@company.com
40 Absolom
Sampson
M 1941 unknown
153-771-9447 Sampson@company.com
50 Ada Nenninger
F 1972 married
662-644-2601 Nenninger@company.com
60 Adel Rhodes
F 1953 single 503-526-1044 Rhodes@company.com
70 Angie
Riffken
F 1955 unknown
538-590-1545 Riffken@company.com
80 Angela Wiley
F 1983 married
213-595-7978 Wiley@company.com
90 Anand
Hanes
M 1972 single 348-712-4192 Hanes@company.com
100 Anne
Koch F 1957 unknown
680-327-1419 Koch@company.com
110 Annie Gilmour
F 1969 married
480-399-4143 Gilmour@company.com
2
Fragment zawartości pliku tekstowego
CREATE TABLE ce_customers
( cust_id
NUMBER(6)
, cust_first_name
VARCHAR2(20 char)
, cust_last_name
VARCHAR2(40 char)
, cust_gender
CHAR(1 char)
, cust_year_of_birth
NUMBER(4)
, cust_marital_status
VARCHAR2(20 char)
, cust_street_address
VARCHAR2(40 char)
, cust_postal_code
VARCHAR2(10 char)
, cust_city
VARCHAR2(30 char)
, cust_state_province
VARCHAR2(40 char)
, country_id
CHAR(2 char)
, cust_main_phone_number VARCHAR2(25 char)
, cust_income_level
VARCHAR2(30 char)
, cust_credit_limit
NUMBER
, cust_email
VARCHAR2(30 char)
);
Definicja tabeli docelowej:
Kolumny opisane kolorem czarnym
zostaną zasilone z bieżącego pliku
tekstowego.
Kolumny opisane kolorem szarym zostaną
zasilone z innych plików tekstowych
1
2014-10-24
Clothes Everywhere (Rafał Kowalski)
64
5. Przy pomocy (nie do końca) intuicyjnego
interfejsu trzeba podzielić plik tekstowy na kolumny
informacyjne i wprowadzić ich metadane.
4
3
Model:
ETL_ClothesEveryday_FILES -
Definicja
CE_CUSTOMERS_MAIN
(Datastore)
Po ustawieniu kursora myszy na polu poziomej linijki ukazuje się pionowa linia
odcięcia kolumn atrybutów danych. Należy ją umieścić precyzyjnie przed
pierwszym znakiem zawartości kolejnego atrybutu i kliknąć.
Po kliknięciu, na linijce pozostaje czerwona kropka – symbol kolumny odcięcia
Po ustawieniu kursora myszy na polu poziomej linijki, na ekranie kreatora ukazuje się pionowa linia rozcięcia pól atrybutów
danych. Należy ją umieścić precyzyjnie przed pierwszym znakiem zawartości każdego, kolejnego pola i kliknąć. Po kliknięciu,
na linijce pozostaje czerwona kropka – symbol kolumny rozcięcia. Pierwsze pole danych rozpoczyna się od pierwszej
kolumny tekstu w wierszu. Koniec każdego pola danych wyznacza linia rozcięcia kolumny pola następnego, lub koniec
wiersza tekstu. Kliknięcie w symbol czerwonej kropki powoduje skasowanie linii rozcięcia atrybutów
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
65
Poziomy suwak umożliwia wyświetlenie całej strony pliku
tekstowego i wykonanie podziału wszystkich kolumn.
3,4,5,6, …
Model:
ETL_ClothesEveryday_FILES -
Definicja
CE_CUSTOMERS_MAIN
(Datastore)
(
cust_id
NUMBER(6)
, cust_first_name
VARCHAR2(20 char)
, cust_last_name
VARCHAR2(40 char)
, cust_gender
CHAR(1 char)
, cust_year_of_birth
NUMBER(4)
, cust_marital_status
VARCHAR2(20 char)
, cust_street_address
VARCHAR2(40 char)
, cust_postal_code
VARCHAR2(10 char)
, cust_city
VARCHAR2(30 char)
, cust_state_province
VARCHAR2(40 char)
, country_id
CHAR(2 char)
, cust_main_phone_number VARCHAR2(25 char)
, cust_income_level
VARCHAR2(30 char)
, cust_credit_limit
NUMBER
, cust_email
VARCHAR2(30 char)
Po kliknięciu na domniemaną nazwę pola (C1, C2, C3, ….),
kreator umożliwia zdefiniowanie jego aktualnych
parametrów (zgodnie z definicją tabeli danych).
1
2
Po kliknięciu na domniemaną nazwę pola (C1, C2, C3, ….),
kreator umożliwia zdefiniowanie jego aktualnych
parametrów (zgodnie z definicją tabeli danych).
Po kliknięciu na domniemaną nazwę pola (C1, C2, C3, ….),
kreator umożliwia zdefiniowanie jego aktualnych
parametrów (zgodnie z definicją tabeli danych).
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
66
4,5,6, …
Poziomy suwak umożliwia wyświetlenie całej
strony pliku tekstowego i wykonanie podziału
wszystkich kolumn.
Wypełnić tylko atrybuty nazwy i typu danych.
Pozostałe atrybuty zostaną uzupełnione w
kolejnych etapach pracy
Model:
ETL_ClothesEveryday_FILES -
Definicja
CE_CUSTOMERS_MAIN
(Datastore)
(
cust_id
NUMBER(6)
, cust_first_name
VARCHAR2(20 char)
, cust_last_name
VARCHAR2(40 char)
, cust_gender
CHAR(1 char)
, cust_year_of_birth
NUMBER(4)
, cust_marital_status
VARCHAR2(20 char)
, cust_street_address
VARCHAR2(40 char)
, cust_postal_code
VARCHAR2(10 char)
, cust_city
VARCHAR2(30 char)
, cust_state_province
VARCHAR2(40 char)
, country_id
CHAR(2 char)
, cust_main_phone_number VARCHAR2(25 char)
, cust_income_level
VARCHAR2(30 char)
, cust_credit_limit
NUMBER
, cust_email
VARCHAR2(30 char)
1
2014-10-24
Clothes Everywhere (Rafał Kowalski)
67
Physical length określa długość pola danych w
pliku tekstowym, pomiędzy kolejnymi kolumnami
odcięcia i nie należy tego parameru zmieniać.
Logical length określa faktyczną długość pola
danych i ten parametr należy uzupełnić zgodnie z
definicją tabeli docelowej.
Logical length określa faktyczną długość pola
danych i ten parametr należy uzupełnić zgodnie z
definicją tabeli docelowej.
Model:
ETL_ClothesEveryday_FILES -
Definicja
CE_CUSTOMERS_MAIN
(Datastore)
(
cust_id
NUMBER(6)
, cust_first_name
VARCHAR2(20 char)
, cust_last_name
VARCHAR2(40 char)
, cust_gender
CHAR(1 char)
, cust_year_of_birth
NUMBER(4)
, cust_marital_status
VARCHAR2(20 char)
, cust_street_address
VARCHAR2(40 char)
, cust_postal_code
VARCHAR2(10 char)
, cust_city
VARCHAR2(30 char)
, cust_state_province
VARCHAR2(40 char)
, country_id
CHAR(2 char)
, cust_main_phone_number VARCHAR2(25 char)
, cust_income_level
VARCHAR2(30 char)
, cust_credit_limit
NUMBER
, cust_email
VARCHAR2(30 char)
1. Zapisać metadane
2014-10-24
Clothes Everywhere (Rafał Kowalski)
68
2. Wyświetlić wynik działania metadanych na zawartość pliku tekstowego.
Model:
ETL_ClothesEveryday_FILES -
Definicja
CE_CUSTOMERS_ADDR
(Datastore)
1
2
Przygotować metadane samodzielnie
2014-10-24
Clothes Everywhere (Rafał Kowalski)
69
3
( cust_id
NUMBER(6)
, cust_first_name
VARCHAR2(20 char)
, cust_last_name
VARCHAR2(40 char)
, cust_gender
CHAR(1 char)
, cust_year_of_birth
NUMBER(4)
, cust_marital_status
VARCHAR2(20 char)
, cust_street_address
VARCHAR2(40 char)
, cust_postal_code
VARCHAR2(10 char)
, cust_city
VARCHAR2(30 char)
, cust_state_province
VARCHAR2(40 char)
, country_id
CHAR(2 char)
, cust_main_phone_number VARCHAR2(25 char)
, cust_income_level
VARCHAR2(30 char)
, cust_credit_limit
NUMBER
, cust_email
VARCHAR2(30 char)
Model:
ETL_ClothesEveryday_FILES -
Definicja
CE_CUSTOMERS_ACCN
(Datastore)
1
2
Przygotować metadane samodzielnie
2014-10-24
Clothes Everywhere (Rafał Kowalski)
70
3
( cust_id
NUMBER(6)
, cust_first_name
VARCHAR2(20 char)
, cust_last_name
VARCHAR2(40 char)
, cust_gender
CHAR(1 char)
, cust_year_of_birth
NUMBER(4)
, cust_marital_status
VARCHAR2(20 char)
, cust_street_address
VARCHAR2(40 char)
, cust_postal_code
VARCHAR2(10 char)
, cust_city
VARCHAR2(30 char)
, cust_state_province
VARCHAR2(40 char)
, country_id
CHAR(2 char)
, cust_main_phone_number VARCHAR2(25 char)
, cust_income_level
VARCHAR2(30 char)
, cust_credit_limit
NUMBER
, cust_email
VARCHAR2(30 char)
Interfejs:
CE_Load_CUSTOMERS –
Zasilenie
tabeli
CE_CUSTOMERS
z plików txt
2
3
4
2014-10-24
Clothes Everywhere (Rafał Kowalski)
71
1
Interfejs:
CE_Load_CUSTOMERS –
Zasilenie
tabeli
CE_CUSTOMERS
z plików txt
1
1. Przy pomocy wskaźnika myszy przeciągnąć atrybut
CUST_ID z encji CE_CUSTOMERS_MAIN i opuścić na
atrybut CUST_ID encji CE_CUSTOMERS_ADDR.
2014-10-24
Clothes Everywhere (Rafał Kowalski)
72
3
2. Zweryfikować poprawność, kardynalność i
obowiązkowość definicji złączenia.
2
3. Ustawić unikalne indeksy na atrybutach
złączenia „związek 1 do 1”
Interfejs:
CE_Load_CUSTOMERS –
Zasilenie
tabeli
CE_CUSTOMERS
z plików txt
1
1. W sposób analogiczny do opisanego na
poprzedniej folii, wprowadzić definicję
złączenia encji CE_CUSTOMERS_MAIN i
CE_CUSTOMERS_ACCN
2014-10-24
Clothes Everywhere (Rafał Kowalski)
73
Interfejs:
CE_Load_CUSTOMERS –
Zasilenie
tabeli
CE_CUSTOMERS
z plików txt
1
2014-10-24
Clothes Everywhere (Rafał Kowalski)
74
1. Przenieść ikonę tabeli CE_CUSTOMERS na
pole Target okna kreatora inerfejsu
2
2. Potwierdzić pytanie o automatyczne mapowanie
atrybutów z takimi samymi nazwami. W tym przypadku
znakomicie przyspieszy to czas budowania interfejsu
2. Potwierdzić pytanie o automatyczne mapowanie
atrybutów z takimi samymi nazwami. W tym, konkretnym
przypadku
znakomicie przyspieszy
to czas budowania
interfejsu
Interfejs:
CE_Load_CUSTOMERS –
Zasilenie
tabeli
CE_CUSTOMERS
z plików txt
2
3
4
5
6
7
2014-10-24
Clothes Everywhere (Rafał Kowalski)
75
1
4
5
Interfejs:
CE_Load_CUSTOMERS –
Zasilenie
tabeli
CE_CUSTOMERS
z plików txt
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
76
SUPER: wszystko działa. Sugerowane jest jeszcze
skontrolowanie zawartości tabeli CE_CUSTOMERS
w zakładce Model
Interfejs:
CE_Load_PRODUCTS –
Zasilenie
tabeli
CE_PRODUCTS
z plików xls
1
2
2014-10-24
Clothes Everywhere (Rafał Kowalski)
77
a)
Wypełnić nagłówek interfejsu i pozostawić otwarte okno. Bez wypełnienia wszystkich metadanych zapisanie
interfejsu jest niemożliwe.
b)
Przed rozpoczęciem dalszych prac - przygotować metadane architektury fizycznej i logicznej i modelu danych dla
źródła .XLS.
Architektury:
ODBC
dla dokumentu
MS Excel
2
1
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
78
Architektury:
Fizyczna
– Logiczna – Model
dla dokumentu
MS Excel
1
2
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
79
1
4
5
GOTOWE
Architektury:
Fizyczna –
Logiczna
–
Model
dla dokumentu
MS Excel
1
2
4
2014-10-24
Clothes Everywhere (Rafał Kowalski)
80
3
2014-10-24
Architektury:
Fizyczna – Logiczna –
Model
dla dokumentu
MS Excel
2014-10-24
3
1
2014-10-24
Clothes Everywhere (Rafał Kowalski)
81
2014-10-24
2
4. Należy poprawić długości logiczne i skale
atrybutów , wczytanych z arkusza MS Excel
5
Clothes Everywhere (Rafał Kowalski)
Sprawdzić czy zawartość tabeli
„wygląda” prawidłowo
Interfejs:
CE_Load_PRODUCTS –
Zasilenie
tabeli
CE_PRODUCTS
z plików xls
2
Mapowanie perfekcyjne
2014-10-24
Clothes Everywhere (Rafał Kowalski)
82
3
4
1
Interfejs:
CE_Load_PRODUCTS –
Zasilenie
tabeli
CE_PRODUCTS
z plików xls
1
2
3
2014-10-24
Clothes Everywhere (Rafał Kowalski)
83
2
3
Parametrów nie trzeba było
zmieniać. Wystarczyły wartości
domniemane .
Parametrów nie trzeba było
zmieniać. Wystarczyły wartości
domniemane .
Interfejs:
CE_Load_PRODUCTS –
Zasilenie
tabeli
CE_PRODUCTS
z plików xls
1
2
3
Wykonanie interfejsu bez błędów.
2014-10-24
Clothes Everywhere (Rafał Kowalski)
84
4
Procedura:
CE_Load_CHANNELS
2014-10-24
Clothes Everywhere (Rafał Kowalski)
85
Procedura:
CE_Load_COUNTRIES
2014-10-24
Clothes Everywhere (Rafał Kowalski)
86
Pakiet:
CE_Execute_ETL –
Podstawowy pakiet zasilania tabel DM
1. Uzupełnić pakiet
2014-10-24
Clothes Everywhere (Rafał Kowalski)
87
2. Zapisać pakiet
3. Wykonać pakiet
4. Sprawdzić czy nie ma
błędów wykonania