2012. június 7., csütörtök
Hatékony eljárás aktív dimenzió rekordok történetének lekérdezésére.
A minap belefutottam egy feladatba, melyben arra volt szükség, hogy egy dimenzió táblából leválogassam azon elemek történetiségét, melyeknek van éppen érvényes rekordja. Első nekifutásra az alábbi megoldással álltam elő:
create table dim_table
(
code_1 number,
desc_1 varchar2(200),
start_of_validity date,
end_of_validity date
);
select
hist.code_1,
hist.desc_1,
hist.start_of_validity,
hist.end_of_validity
from
dim_table curr,
dim_table hist
where curr.start_of_validity <= sysdate
and curr.end_of_validity > sysdate
and curr.code_1 = hist.code_1;
Mivel hatalmas tábláról volt szó és több hónapra visszamenőlegesen kellett futtatni a feldolgozást, ezért elkezdtem gondolkodni rajta, hogyan lehet lefaragni a futási időből. Az alábbi megoldással rukkoltam elő:
select
code_1,
desc_1,
start_of_validity,
end_of_validity
from (
select
curr.code_1,
curr.desc_1,
curr.start_of_validity,
curr.end_of_validity,
max(case
when curr.start_of_validity <= sysdate and curr.end_of_validity > sysdate then 1
else 0
end) over (partition by code_1) as curr_ind
from
dim_table curr
)
where curr_ind = 1;
Ez utóbbi megoldás ugyanazt az eredményhalmazt adja, azonban a végrehajtás során csak egyszer kell felolvasni az alaptáblát. Az én esetemben ez közel megfelezte a végrehajtási időt.
2012. május 2., szerda
SQL Tuning, futó lekérdezések memória és temp használatának megjelenítése végrehajtási lépésenként.
Ambrus Gábor kollégámtól kaptam az alábbi, praktikus script - et, melynek segítségével megtekinthető egy éppen futó sql végrehajtási terve, s a végrehajtási tervhez kapcsolódó egyes lépések aktuális memória és temp használata. Ez a lekérdezés nagyon megtetszett nekem, mert segítségével betekintést nyerhetünk lekérdezésünk végrehajtási állapotába, a memória és temp értékek vizsgálatával könnyen kiszúrhatjuk, ha valahol "hiba" csúszott a végrehajtási tervbe.
A lekérdezés második sorába kell beilleszteni a futtatás előtt a vizsgálandó futó lekérdezés sql_id azonosítóját.
with sqlid as (
select '9c9qwv489rxfk' sql_id from dual
)
select
woac.temp_mb,
woac.mem_mb,
substr(translate(
substr(sys_connect_by_path(branch, ','), 1, length(sys_connect_by_path(branch, ',')) - 2) ||
case when branch = '. ' then '`-' else '|-' end,
',.',
' '
), 4) || operation operation,
plta.options,
plta.object_owner,
plta.object_name,
plta.object_alias,
plta.cardinality,
plta.other_tag,
plta.access_predicates,
plta.filter_predicates,
plta.partition_start,
plta.partition_stop,
plta.partition_id
from
(
select
sql_hash_value,
sql_id,
operation_id,
sum(tempseg_size/1048576) temp_mb,
sum(actual_mem_used/1024/1024) mem_mb
from
v$sql_workarea_active
group by
sql_hash_value,
sql_id,
operation_id
) woac,
(
select
pl.*,
nvl2(lead(pl.id) over (partition by pl.parent_id order by pl.position), '| ', '. ') branch
from
v$sql_plan pl,
sqlid
where
pl.sql_id = sqlid.sql_id and
pl.child_number = 0
) plta
where
woac.sql_hash_value (+) = plta.hash_value and
woac.sql_id (+) = plta.sql_id and
woac.operation_id (+) = plta.id
connect by
prior plta.id = plta.parent_id
start with
plta.parent_id is null
order siblings by plta.position;
2012. január 11., szerda
Ingyenesen elérhető tesztsorok Oracle vizsgákhoz.
Célul tűztem ki magamnak, hogy további Oracle minősítéseket szerzek meg, leteszem az Oracle Database 11g: Administration I (1Z0-052) vizsgát.
Elkezdtem kutakodni az interneten tananyagok, vizsgasorok után s rátaláltam a http://www.examcollection.com/ oldalra. Erről az oldalról ingyenesen letölthetőek vizsgasorok. Az 1Z0-052 vizsgához is van legalább egy tucatnyi vizsgasoruk. Az oldal felhasználóinak visszajelzései alapján a vizsgasorok aktuálisak és jól használhatóak.
Az egyetlen trükk, hogy a Visual CertExam Suite programot meg kell vásárolni a letölthető vce fájlok megtekintéséhez, azonban kisebb kutakodás után sikerült rátalálnom a lenti linken letölthető kis programra, mely képes a vizsgasorok megjelenítésére, azaz használatával sikeresen fel lehet készülni.
Az ExamCollection számos vizsgához nyújt felkészülési anyagokat, ezért egy klikket mindenképpen megér a site.
Sok sikert a vizsgákhoz!
2012. január 2., hétfő
Tippek az Oracle Database 11g: Data Warehousing Certified Implementation Specialist minősítés megszerzéséhez.
A nyáron rátaláltam az Oracle oldalain a fenti, adattárház szakmai minősítésre. Úgy gondoltam, hogy ha már évek óta Oracle alapú adattárházak építésével foglalkozom, akkor illik megszereznem ezt a minősítést.
Átnéztem az Oracle által kiírt vizsgatematikát és az Oracle partnerek számára biztosított oktatási anyagot s világossá vált, hogy ennek a vizsgának is csak úgy érdemes nekimenni, ha előtte egy teszt programmal alaposan felkészülünk.
Az SQL és PL/SQL vizsgák megszerzésénél a uCertify platform bizonyult hasznosnak, ezért most is a uCertify felkészítő anyagát vettük meg. A vizsgán ért minket a meglepetés, hogy a uCertify anyag csak egy harmadában fedi le a tényleges vizsgakérdéseket. Ennek ellenére sikerült első nekifutásra átmenni a vizsgán, azonban ha valaki fel akar készülni, akkor inkább a PassGuide – ot ajánlom, az ő anyaguk jobban illeszkedik a tényleges vizsgakérdésekhez.
A vizsgára való felkészüléskor az alábbi témaköröket célszerű alaposan átnézni:
Oracle 1z0-515 Data Warehousing 11g Essentials 1/2
Oracle 1z0-515 Data Warehousing 11g Essentials 2/2
Átnéztem az Oracle által kiírt vizsgatematikát és az Oracle partnerek számára biztosított oktatási anyagot s világossá vált, hogy ennek a vizsgának is csak úgy érdemes nekimenni, ha előtte egy teszt programmal alaposan felkészülünk.
Az SQL és PL/SQL vizsgák megszerzésénél a uCertify platform bizonyult hasznosnak, ezért most is a uCertify felkészítő anyagát vettük meg. A vizsgán ért minket a meglepetés, hogy a uCertify anyag csak egy harmadában fedi le a tényleges vizsgakérdéseket. Ennek ellenére sikerült első nekifutásra átmenni a vizsgán, azonban ha valaki fel akar készülni, akkor inkább a PassGuide – ot ajánlom, az ő anyaguk jobban illeszkedik a tényleges vizsgakérdésekhez.
A vizsgára való felkészüléskor az alábbi témaköröket célszerű alaposan átnézni:
- Adaptive parallelism
- Oracle Exadata
- teljesítménynövelő módszerek
- adattárolási képességek
- Tömörítési funkciók
- SQL Result Cache működése
- result set – ek típusai
- engedélyezés
- cache tartalom milyen eseményekre változik
- Materializált nézetek, frissítési típusok
- Direct path load – ot eredményező adatbázis műveletek
- Partícionálási típusok
- partícionálás előnyei (pruning)
- partition-wise joins
- Resource Manager működése
- ODI felépítés, template – ek, Knowledge Modul – ok funkciója
Oracle 1z0-515 Data Warehousing 11g Essentials 1/2
Oracle 1z0-515 Data Warehousing 11g Essentials 2/2
2011. július 19., kedd
Az adattárház konzisztenciáját automatikusan ellenőrizni kell!
Az egyik projekt munkám során az adattárház adatainak egy részhalmazát egy különálló szerverre replikáztuk. A replika frissítése deltatöltéseket is tartalmazott. A megvalósítás során felmerült a kérdés, hogy, na de honnan fogjuk észrevenni, ha a replikációs eljárásunk hibázik, azaz az eredeti adathalmazunk és a másolat már nem konzisztens, eltér egymástól.
Ennek a kérdésnek már tervezéskor is fel kellett volna merülnie, nem csak a megvalósítás közben. Azért is írom ezt a blog bejegyzést, hogy legközelebb nekem is hamarabb eszembe jusson, hogy az automatikus konzisztencia ellenőrzéseket is bele kell tervezni a megvalósításba, nem szabad elfeledkezni róluk.
Murphy törvénye szerint, ami elromolhat az előbb utóbb el is romlik. Megelőzendő, hogy a végfelhasználók vegyék először észre a hibát, a töltési folyamat megvalósításába ellenőrzéseket kell beiktatni. Nem kell az ellenőrzés alatt nagyon komoly dologra gondolni, az aktuális szituációban az is elegendőnek bizonyult, hogy egy segédtáblában nyilvántartjuk a forrásrendszerben levő táblák rekordszámát és ezt a rekordszámot ellenőrizzük a delta csomagok bedolgozása után. Egy ilyen egyszerű ellenőrzés már biztosítani tudja azt, hogy automatikusan értesüljünk arról, hogy hiba csúszott a gépezetbe, biztosítani tudja, hogy ne csak késve értesüljünk a hibáról, amikor annak javítása már sokkal időigényesebb lehet.
Egy adattárház feldolgozásai nagyon komplexek is lehetnek, több ponton is van lehetőség hibára, ezért ahol delta csomagok feldolgozása történik, ott célszerű megvalósítani egy egyszerű ellenőrzési eljárást is, hogy biztosak lehessünk adataink konzisztenciájában.
Ennek a kérdésnek már tervezéskor is fel kellett volna merülnie, nem csak a megvalósítás közben. Azért is írom ezt a blog bejegyzést, hogy legközelebb nekem is hamarabb eszembe jusson, hogy az automatikus konzisztencia ellenőrzéseket is bele kell tervezni a megvalósításba, nem szabad elfeledkezni róluk.
Murphy törvénye szerint, ami elromolhat az előbb utóbb el is romlik. Megelőzendő, hogy a végfelhasználók vegyék először észre a hibát, a töltési folyamat megvalósításába ellenőrzéseket kell beiktatni. Nem kell az ellenőrzés alatt nagyon komoly dologra gondolni, az aktuális szituációban az is elegendőnek bizonyult, hogy egy segédtáblában nyilvántartjuk a forrásrendszerben levő táblák rekordszámát és ezt a rekordszámot ellenőrizzük a delta csomagok bedolgozása után. Egy ilyen egyszerű ellenőrzés már biztosítani tudja azt, hogy automatikusan értesüljünk arról, hogy hiba csúszott a gépezetbe, biztosítani tudja, hogy ne csak késve értesüljünk a hibáról, amikor annak javítása már sokkal időigényesebb lehet.
Egy adattárház feldolgozásai nagyon komplexek is lehetnek, több ponton is van lehetőség hibára, ezért ahol delta csomagok feldolgozása történik, ott célszerű megvalósítani egy egyszerű ellenőrzési eljárást is, hogy biztosak lehessünk adataink konzisztenciájában.
2011. június 2., csütörtök
Relációs adatok utófeldolgozása Excel - ben
A vállalati adatok előbb utóbb Excel - ben kötnek ki, így elkerülhetetlen, hogy az üzleti intelligencia területen dolgozó szakember az Excel - hez is értsen valamelyest. Egy aktuális projektemen azon dolgozom, hogy egy Excel – ben levő „adatpiac” – ot átültessek Oracle alapokra.
Elemeztem a meglévő, Excelben megírt adatfeldolgozási módszereket és belefutottam egy klasszikus problémába. Hogyan lehet a VLOOKUP függvényt alkalmazni, ha több mezős feltétel mentén akarunk illeszteni? Azaz hogyan lehet egy összetett kulccsal rendelkező táblázatból kulcs mentén értékeket kivenni? A klasszikus megoldás erre az, hogy a két kulcs mezőt összefűzzük és az összefűzött mezőre keresünk rá. Ez a megoldás relációs adatbázisokhoz szokott szakemberek szívét nem melengeti meg túlságosan, ezért elkezdtem kutatni, hogy az alap Excel funkciókat használva hogyan lehet megoldani a problémát.
A Google a „vlookup multiple criteria” keresésre tömérdek eredményt ad, melyek legtöbbje az INDEX és MATCH függvények trükkös paraméterezését adja meg megoldásul. Nem elégedtem meg ezzel a bonyolult válasszal, tovább gondolkodtam. Néztem a DGET adatbázis függvényt, de ennek a használatához külön cellaterületen kell megadni a kritériumokat, úgy találtam, hogy egy cellában való képletezéssel ennek a függvénynek a használata nem megoldható.
Végül véletlenül rájöttem egy trükkre. Ha az adatokat tartalmazó táblázatunkra épülve létrehozunk egy kimutatást, akkor a GETPIVOTDATA függvényt alkalmazva egész kulturáltan lehet konkrét adatértékeket egy cellában paraméterezve lekérdezni. A GETPIVOTDATA függvénynek meg kell adni, hogy mely tény oszlop értékét akarjuk megkapni, mely PivotTable – ből, majd ezt követően egymást követve megadhatjuk a dimenziók mentén történő szűrési feltételeinket dimenzió név, érték párosokban. Ilyen párosból tetszőlegeset felvehetünk.
Ezzel a módszerrel egy adattábla tartalmát egyszerűen, tetszőleges elrendezésben szétteríthetjük egy Excel munkafüzetekben, az elemzők ízlésének megfelelően.
Ha az olvasóim közül valaki ismert jobb, szebb, praktikusabb megoldást a problémára, kérem, ossza meg velem!
Elemeztem a meglévő, Excelben megírt adatfeldolgozási módszereket és belefutottam egy klasszikus problémába. Hogyan lehet a VLOOKUP függvényt alkalmazni, ha több mezős feltétel mentén akarunk illeszteni? Azaz hogyan lehet egy összetett kulccsal rendelkező táblázatból kulcs mentén értékeket kivenni? A klasszikus megoldás erre az, hogy a két kulcs mezőt összefűzzük és az összefűzött mezőre keresünk rá. Ez a megoldás relációs adatbázisokhoz szokott szakemberek szívét nem melengeti meg túlságosan, ezért elkezdtem kutatni, hogy az alap Excel funkciókat használva hogyan lehet megoldani a problémát.
A Google a „vlookup multiple criteria” keresésre tömérdek eredményt ad, melyek legtöbbje az INDEX és MATCH függvények trükkös paraméterezését adja meg megoldásul. Nem elégedtem meg ezzel a bonyolult válasszal, tovább gondolkodtam. Néztem a DGET adatbázis függvényt, de ennek a használatához külön cellaterületen kell megadni a kritériumokat, úgy találtam, hogy egy cellában való képletezéssel ennek a függvénynek a használata nem megoldható.
Végül véletlenül rájöttem egy trükkre. Ha az adatokat tartalmazó táblázatunkra épülve létrehozunk egy kimutatást, akkor a GETPIVOTDATA függvényt alkalmazva egész kulturáltan lehet konkrét adatértékeket egy cellában paraméterezve lekérdezni. A GETPIVOTDATA függvénynek meg kell adni, hogy mely tény oszlop értékét akarjuk megkapni, mely PivotTable – ből, majd ezt követően egymást követve megadhatjuk a dimenziók mentén történő szűrési feltételeinket dimenzió név, érték párosokban. Ilyen párosból tetszőlegeset felvehetünk.
Ezzel a módszerrel egy adattábla tartalmát egyszerűen, tetszőleges elrendezésben szétteríthetjük egy Excel munkafüzetekben, az elemzők ízlésének megfelelően.
Ha az olvasóim közül valaki ismert jobb, szebb, praktikusabb megoldást a problémára, kérem, ossza meg velem!
2011. március 10., csütörtök
Könyvajánló: Data Warehouse Project Management
![]() | Data Warehouse Project Management Sid Adelman, Larissa T. Moss |
Újabb könyvön rágtam át magam adattárház projekt menedzsment témakörben. A szerző, Sid Adelman több mint 30 éve tevékenykedik az üzleti intelligencia területen. A könyvet olvasva az a gondolat jutott eszembe, hogy „a profi listából dolgozik, nem bízza a dolgokat a véletlenre”. A könyvben minden egyes projekt menedzsment témakör átfogóan, tételesen ismertetésre kerül, melyből könnyen megalkothatjuk a mindennapi munka során alkalmazott saját szamárvezetőinket.
A könyv fejezetei az alábbi témaköröket ölelik fel:
- Az adattárházak általános rövid és hosszú távú céljai.
- DW projektek sikerkritériumai
- Tipikus projekt kockázatok, azok kezelése
- Költség – haszon elemzés
- Szoftver kiválasztás folyamata
- Projektszervezet, szerepkörök
- Rapid Application Development módszertan
- Adatminőségi hibák kezelése
- Projekttervezés, projekt-kommunikáció
A könyvben a szerzők gyakorlati tapasztalataikat osztják meg, számos tanácsuk igen praktikus és hasznos. Ebben a könyvben találkoztam először olyan széleskörű ismertetéssel, mely teljesen felöleli az adattárház projektekben előforduló összes tipikus problémát, kockázatot.
A praktikus felhasználást segíti elő, hogy minden fejezet egy workshop – pal zárul, mely célirányos kérdéseken és feladatokon keresztül támogatja az olvasót abban, hogy rögtön alkalmazza is az újonnan megszerzett ismereteket a saját helyzetére. Ezek a workshop – ok és a könyvben szereplő összes sablon elektronikus formában is elérhető, a könyv CD mellékletén.
A könyvet mindenkinek ajánlom olvasásra, aki érintett üzleti intelligencia projektek vezetésében.
Feliratkozás:
Bejegyzések (Atom)
