Értékesítési elemzés olap kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf ·...

33
Értékesítési elemzés OLAP kockával Önálló laboratóriumi beszámoló Készítette: Szabó Péter Konzulens: Pálfi Attila Dátum: 2011.05.05. Tárgykód: VIETA386 Budapesti Műszaki- és Gazdaságtudományi Egyetem Villamosmérnöki és Informatikai Kar Elektronikai Technológia Tanszék

Upload: others

Post on 13-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

Értékesítési elemzés OLAP kockával Önálló laboratóriumi beszámoló

Készítette: Szabó Péter

Konzulens: Pálfi Attila

Dátum: 2011.05.05.

Tárgykód: VIETA386

Budapesti Műszaki- és Gazdaságtudományi Egyetem

Villamosmérnöki és Informatikai Kar

Elektronikai Technológia Tanszék

Page 2: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

2

Tartalomjegyzék

Tartalomjegyzék ......................................................................................................................... 2

Bevezetés .................................................................................................................................... 3

1. A feladat bemutatása .......................................................................................................... 3

1.1. A feladat szoftver specifikus bemutatása ..................................................................... 4

2. A feladat által érintett ismeretanyag ................................................................................... 4

2.1. Árképzési gyakorlatok ................................................................................................. 5

2.1.1. Személyre szabott árképzés .................................................................................. 6

2.1.2. Nem lineáris árképzés ........................................................................................... 8

2.2. Adattárházak ................................................................................................................ 8

2.3. Az OLAP kocka ......................................................................................................... 10

2.4. Microsoft Dynamics NAV funkcionális áttekintése .................................................. 11

2.5. Árképzés Microsoft Dynamics NAV környezetben .................................................. 12

3. Az önálló laboratóriumi feladat megvalósítása ................................................................ 13

3.1. A fejlesztőkörnyezet kialakítása ................................................................................ 14

3.2. A Microsoft Dynamics NAV adatstruktúrájának megismerése................................. 14

3.3. Az adattárház struktúrájának kialakítása ................................................................... 15

3.4. Ismerkedés a Business Intelligence Development Studio-val ................................... 18

3.5. Az ETL folyamat elkészítése ..................................................................................... 18

3.5.1. A dimenziótáblák feltöltése ................................................................................ 19

3.5.2. A ténytábla feltöltése .......................................................................................... 21

3.6. Az OLAP kocka felépítése......................................................................................... 24

3.6.1. Dimenziók definiálása ........................................................................................ 24

3.6.2. Kocka építése ...................................................................................................... 25

3.7. Adatbázis kezelő cseréje ............................................................................................ 25

3.8. Ár kialakítása Excel 2010-ben ................................................................................... 26

3.9. Egyéni ár, akciós ár meghatározása ........................................................................... 27

4. Az elkészített implementáció üzleti jelentősége ............................................................... 30

5. Irodalomjegyzék ............................................................................................................... 32

6. Táblázatjegyzék ................................................................................................................ 32

7. Képletjegyzék ................................................................................................................... 32

8. Ábrajegyzék ...................................................................................................................... 32

Page 3: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

3

Bevezetés

A feladatom egy értékesítési elemző rendszer kidolgozása volt. A kész rendszer használatát

nem tartom egy olyan kaliberű feladatnak, amit a vállalat IT dolgozójának kellene elvé-

geznie, sokkal inkább a marketinges(ek)nek. Ezért a feladat megoldása során végig az ve-

zérelt, hogy úgy alakítsam ki a környezetet, hogy az minél jobban elfedje a részleteket és

ne mutasson zavaróan sok adatot egy szakmán kívülinek.

Az egyes modulok vezérlése grafikus felületről néhány kattintással elvégezhető az adatok

áttöltésétől kezdve a kocka felépítésén át az elemzésig. Az elemzésből kinyert adatokat is

inkább Visual Basic (VB) Script-tel átalakítottam egy könnyen átlátható Excel munkafü-

zetbe, hogy ott az árakat meghatározó marketing szakembernek minél kevesebb felesleges

adat vonja el a figyelmét a feladatáról. Majd miután végzett munkájával, megint pár kattin-

tással le tud futtatni egy adatbázis folyamatot annak részletes ismerete nélkül, ezzel létre-

jönnek az új árlisták a vállalatirányítási rendszerben.

Továbbá célom volt még, hogy az elkészített komponensek kellően általánosak legyenek

ahhoz, hogy módosításuk egyszerű legyen, és a részfeladatok különüljenek el minél job-

ban, hogy azokat akár egymástól függetlenül is lehessen cserélni.

1. A feladat bemutatása Az önálló laboratóriumi feladatom egy fiktív vállalat, a Cronus Rt. értékesítési elemzése

OLAP (On-Line Analitical Process) használatával. A munkámban eladó által irányított

piacot fogok bemutatni, így az alkalmazott árképzési stratégia is ennek megfelelően kerül

kiválasztásra. Az eladó által irányított piacon az alábbi peremfeltételeket kell elfogadnunk:

az eladó tökételesen tisztában van az általa kínált áru értékével, minőségével, a többi piaci

szereplő helyzetével, a vevők közti információáramlás tökéletlen, azok csak a keresleti

árrugalmasságukon keresztül, vásárlási hajlandóságukkal tudják befolyásolni a keres-

let/kínálat alakulását. Az eladók a vevők közti tökéleten információáramlást kihasználva

kerülnek olyan pozícióba, hogy ők tudják kialakítani az árakat. (A modellezett piaci kö-

rülményekről részletesen a 2.1.-es fejezetben lesz szó.)

A feladatot Microsoft technológiák felhasználásával oldottam meg.

Az értékesítési elemzés során a következő problémákkal kerültem szembe:

1. Ki kellett alakítanom egy a vállalatirányítási rendszert támogató virtuális környeze-

tet, melyben a feladatom el tudtam végezni. Ehhez fel kellett kutatni a megfelelő

szoftvereket, valamint fel kellett készíteni azokat az egymás közti adatáramlásra.

2. A vállalatirányítási rendszer adatstruktúráját át kellett alakítanom egy, a számomra

megfelelő adattárház struktúrává, amelybe be kellett töltenem a szükséges adatokat.

Implementálnom kellett az ehhez szükséges áttöltő modulokat.

3. Fel kellett készíteni az adattárházat, hogy azon el tudjam végezni az elemzéseket,

azaz fel kellet építeni rá egy OLAP kockát.

4. Módosítani kellett a vállalat árazási rendszerét az elemzés következtében megho-

zott döntéseknek megfelelően.

Page 4: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

4

A tervezett feladat blokkdiagramja:

NAV

AdattárházExcel kliens

Elemzés

Feltétel

Árlista

1. ábra – Az elvégzett részfeladatok

1.1. A feladat szoftver specifikus bemutatása

A feladatom megoldása során a Microsoft Dynamics NAV vállalatirányítási rendszert

használtam, egy demó vállalaton, a Cronus Rt.-n. A vállalatirányítási rendszer az adatok

tárolására MS SQL Server-t használ. Ezen az adatbázis szerveren hoztam létre egy csillag

sémás adattárházat, amiben az elemzéshez ténylegesen szükséges és hasznos adatokat tá-

roltam el.

A vállalatirányítási rendszer által tárolt adatok, adatstruktúrák logikai felépítése eltér az

általam megkívánttól, ezért azok megvalósítása érdekében el kellett készítenem egy áttöltő

modult, amely az áttöltésen felül át is alakítja a Dynamics NAV által használt adatstruktú-

rákat az adattárházamban használtnak megfelelő formára. Ezen áttöltő modult Visual

Studio-ban készítettem el.

Miután elkészült az adattárház és fel van töltve a szükséges adatokkal, felépítettem arra az

OLAP kockát, melyre, mint adatforrásra ezután rácsatlakozom Excelből és ott ki tudom

választani a kocka egyes dimenzióit, melyek az elemzésben különálló csoportokként jelen-

nek meg. A választás azért esett az Excelre, mint az elemzést megvalósító programra, mert

fejlett támogatás létezik bent a kockákra és egyszerűen lehet benne szemléletes diagramo-

kat létrehozni.

Ezen lehetőségek még életszerűbbé teszik a megvalósítást, hiszen a stratégiai döntéseket a

vezetők hozzák, akikre általában vagy nem jellemző az informatikai rendszerek mély isme-

rete vagy nem rendelkeznek túl részletes információkkal a tényleges marketing tevékeny-

ségről, csak a számok és arányok fontosak nekik.

Ahhoz azonban, hogy a vezetői döntéseket operatív megvalósítás is kövessen, azok ered-

ményét vissza kell írni a vállalatirányítási rendszer árazási modulja által használt táblákba

a megfelelő formátumban.

2. A feladat által érintett ismeretanyag A feladatom megoldásához szükséges ismeretanyag túlmutat a mérnök informatikus kép-

zés eddigi tantárgyainak tematikáján, ezért ebben a fejezetben elkészítettem a főbb érintett

Page 5: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

5

területek rövid elméleti összefoglalóját. Így próbálom meg közös alapokra helyezni a dol-

gozatomban a későbbiekben előforduló fogalmakat, kifejezéseket.

2.1. Árképzési gyakorlatok [2] [4]

Az árképzés dinamikája szempontjából két csoportba szokásos felosztani az árazási straté-

giákat. Ezeket részletesen az 1. táblázat mutatja be.

1. táblázat - Árazási mechanizmusok és az árazást befolyásoló tényezők a statikus és a dinamikus árazású piacokon.

Az árazás dina-

mikája

Árazás alapme-

chanizmusa

Típusai Az árazást befo-

lyásoló tényezők

a kínálat oldalán

Az árazást befo-

lyásoló tényezők

a kereslet olda-

lán

Statikus Eladó által „dik-

tált” árazás,

hagyományos

listaárakkal

Diszkontárak Értékesítési csa-

torna

Szezonális keres-

let, divat

Eladó által „dik-

tált” árazás,

speciális diffe-

renciáláson

nyugvó formái

Szegmentálás,

előfizetés, áru-

kapcsolás

Eladott mennyi-

ség. A javak ösz-

szekapcsolása

Különböző cso-

portokba tartozó

vevők eltérő árér-

zékenysége

Dinamikus Vevői aktív ár-

alkotó szerepet

feltételező mo-

dellek

Aukció, tőzsde,

csoportos vásárlás

A termék jellege,

az eladók száma

Vevői szolidari-

tás, potenciális

vevők száma

Az eladó által

irányított, a ve-

vőket elszigetelő

módszerek

Árak személyre

szabása, termék-

változatok, cso-

magban történő

értékesítés

A termék sze-

mélyre szabásá-

nak lehetőségei, a

termékek adott

volumene

A vevőkről be-

gyűjthető infor-

mációk, adatbá-

nyászat

A statikus árazási stratégiák jól illeszkednek az ipari klasszicizmus szelleméhez, vagyis,

hogy a kínálati oldal a domináns. Az árakat elsősorban az eladók szabják meg, úgynevezett

„one-to-many” módon, amikor a vállalat a vevőkre, mint fogyasztók tömegére tekint. Eb-

ben az esetben a vevők közti információáramlás tökéletlen, a vevők emiatt nem tudnak élni

a tömegükből adódó lehetőségeikkel a kedvezőbb ár kialakítására nézve, azt csak fizetési

hajlandóságukon és a keresleti árrugalmasságon keresztül, közvetetten képesek befolyásol-

ni.

A dinamikus árképzési stratégia kiteljesedését nagymértékben elősegítette a web kettes

világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette az infor-

máció áramlását. Többé már nem voltak elszigeteltek a vevők. Az információ minden hon-

nét ömlött rájuk, a kereső szolgáltatásokkal minden elérhetővé vált, amit csak meg akartak

tudni egy termékről. Ezáltal elillant az eladók előnye. A vevők ettől a pillanattól kezdve

pontosan meg tudták állapítani az áruk és a csatolt szolgáltatások értékét és egy adott ér-

tékhez pillanatok alatt meg tudták határozni a legkedvezőbb árat, vagy az adott áron elér-

hető legkedvezőbb szolgáltatásokat. A jól informált vevők az árak diktálóivá váltak. Vil-

Page 6: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

6

lámgyorsan terjedni kezdtek a különböző aukciós oldalak, tőzsdei mintára szerveződő

adok-veszek típusú portálok és a csoportos vásárlásra buzdító site-ok.

Az internet adta lehetőségekre azonban nem csak a vevők figyeltek fel, az eladók is gyor-

san idomultak a változásokhoz, érthető módon céljuk a mielőbbi visszaszorítása volt az új

trendnek és az ár diktálási jogának visszavétele a vevőktől.

A vevők egyre magabiztosabban mozognak a web áruházakban, azokra ők leginkább ké-

nyelmi funkcióként tekintenek, valamint informálódnak rajtuk keresztül az egyes termékek

árairól, azonban keresgélésük során rengeteg információt hagynak a rendszerben maguk

után, amelyek rendkívül hasznosak az eladók számára a vásárlói szokások feltérképezésé-

hez. Ezen információk alapján az árdiktálás visszaszerzéséhez a cél a vevők megosztása,

egyéni árak, csoportokra szabott kedvezmények kialakítása.

E felhasználói adatok elemzése és az ügyfelek szegmentációja hatékony megoldás lehet

annak a klasszikus dilemmának a kezelésében, melyben az eladónak egyetlen egy árat kell

meghatároznia. Ha ezt az árat azonban túl magasra teszi, akkor ez sokakat elriaszt a vásár-

lástól, akik csak mérsékeltebb áron mutatnának hajlandóságot arra. Ha az ár túl alacsony,

akkor pedig a vállalat a haszon egy részét azoknál a fogyasztóknál hagyja, akik hajlandóak

lettek volna többet is áldozni a termékre, szolgáltatásra.

Dolgozatomban a vevők szegmentációra építő módszereket vizsgáltam.

2.1.1. Személyre szabott árképzés [4]

Az előző bekezdésekből világossá válhatott, hogy a fogyasztó által érzékelt értéknek kitün-

tetett szerepe van az árképzés során. Például ha rohanunk a vonatra, és közben szeretnénk

ételt vásárolni magunknak az útra, akkor a vasútállomáson a büfében vásárolható szendvics

felértékelődik bennünk, mert a szendvics értékébe az az idő is bele fog számítani, amit

azzal nyerünk, hogy nem kell a messzebb lévő sarki kisboltba kiszaladnunk. Ezért cserébe

hajlandóak vagyunk többet fizetni a büfében, csakhogy időt nyerjünk. Ebben és az ilyen

helyzetek minél jobb felismerésében rejlik a személyre szabott árképzés profitnövelő lehe-

tősége.

A személyre szabott árak logikus magyarázata a következőkben rejlik: egy adott ter-

mék/szolgáltatás keresleti görbéjét tekintsük adottnak, azon nem tudunk változtatni. Ekkor

az értékesítésből adódó profit az előállítási költség és a bevétel különbsége, a 2. ábrán lát-

ható téglalap területe. Látható, hogy a teljes elérhető bevétel a háromszög alatti terület len-

ne, de ettől messze elmarad a vállalat. A maximális bevételtől való elmaradás a két három-

szög területével magyarázható. Elszalasztott nyereség alatt azt a mennyiséget értjük,

amennyivel többet lettek volna hajlandóak áldozni a vásárlók, de a vállalat annál alacso-

nyabb árat szabtunk ki nekik, asztalon hagyottnak pedig azt a mennyiséget nevezzük, amit

azért bukik el, mert ezen ügyfelek nem vásárolják meg a szolgáltatást a jelenlegi áron, de

annál alacsonyabban megvették volna. Egyik eset sem szerencsés, ezért ezen háromszögek

területének minimalizálása és ezáltal a profit maximalizálása a cél.

Page 7: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

7

2. ábra – A profitnégyzet a hozzá tartozó háromszögekkel

3. ábra – Több ár meghatározása

A 2. és 3. ábra alapján, a teljesség igénye nélkül belátható, ha több árat határozunk meg,

ezáltal egyre jobban szétosztjuk a vásárlókat, akkor a vállalat árbevétele és ezáltal a profit-

ja csökkenő ütemben, de növekszik ugyan. Maximális akkor lesz, ha a négyszögek terület-

összege megegyezik a háromszög területével, ezáltal az ügyfelek szeparációja teljessé vá-

lik, azaz minden vevőhöz egyedi árat határozunk meg.

Azon felhasználók megtalálása, akik hajlandóak többet fizetni, mindegy, hogy milyen mó-

don történik, úgyis nyerünk rajta és megéri a fáradságot, amennyiben az így elért nyere-

ségnövekedés fedezi a többletmunka költségét. (csökkenő hasznosság elve) A gyakorlatban

emellett fontos eltérés az elmélethez képest, hogy a vásárlók jól definiált többletszolgálta-

Page 8: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

8

tásokat várnak el a többletfizetésért, ezért nem finomodhatnak a téglalapok minden határon

túl.

A személyre szabott ár kialakítása történhet:

földrajzi alapon (vasúti büfé példája)

vásárolt mennyiség alapján (lásd: 2.1.2 Nem lineáris árképzés)

kínált szolgáltatás színvonal alapján (1. és 2. osztályú vasúti menetjegyek)

vásárlás ideje alapján (előfoglalási kedvezmények)

A módszer sikerességére ékes példa Sir Collin Marshall, a British Airways elnökének nyi-

latkozata az ár „kismértékű” személyre szabásának eredményükre gyakorolt hatásáról:

„… az utazóközönség nagy rész meghatározott áron fog utazni… [de] néhányan közülük

valamivel többet fognak fizetni. Hangsúlyozom azonban, hogy amikor „kismértékű” kü-

lönbségekről beszélek, akkor arra is gondolok. Esetünkben 5%-os átlagos eltérésről be-

szélhetünk. […] Ez az 5% plusz 440 millió $-t hoz évente.”

2.1.2. Nem lineáris árképzés [4]

Sok vezető költségcsökkenéssel magyarázza a nem lineáris árszabás bevezetését. A ked-

vezmények hatására a megnövekedett rendelési tételnagyság miatt csökkennek az eladó

szállítási és raktározási költségei. Nem lineáris árképzés során mennyiségi kedvezményben

részesíti a vállalat a partnereit, azaz az egyes eladott termékeken érvényesített határnyere-

ség egyre csökken az értékesített mennyiség növekedésekor. Jövedelmező lehet a nem li-

neáris árképzési stratégia akkor, ha a kedvezmény megnöveli a vásárlási hajlandóságot, így

az eladások megnövekedett száma kompenzálja a határnyereség csökkenését. Tipikus eset

a nem lineáris árképzésre a bérletek árusítása. Például egy színházi előadás 1000 Ft-ba

kerül, de az 5 alkalmas bérletet már 4000 Ft-ért meg lehet vásárolni.

2.2. Adattárházak [5] [8]

Az adattárház az információtechnológia viszonylag frissen önálló életre kelt ága, mintegy

egy évtizedes múltra visszatekintő területe. Rohamléptekkel, egyszerre több irányba fejlő-

dő, kiforratlan és már bizonyított technológiák halmaza, kevés elismert szabvánnyal, sok

eltérő szolgáltatással és termékkel. Nehéz rá jó definíciót adni. Bill Inmon, a téma egyik

apostolának legtöbbet idézett definíciója így szól: "A data warehouse is a subject oriented,

integrated, nonvolatile, and time variant collection of data in support of management's

decisions.", vagyis tárgy orientált, integrált, tartós és idő független gyűjteménye az adatok-

nak, mely a vezetői döntéshozást támogatja. Jobban végiggondolva a definíciót, kellően

világos képet kaphatunk az adattárházak miben létéről:

Subject oriented (tárgy orientált): Az adattárházakat mindig valamilyen jól definiált

céllal hozzuk létre, azok meghatározott adatok köré épülnek, például az értékesítési

adatok köré.

Integrated (integrált): Az előz pontban említettet tárgyorientált, adatvezérelt terve-

zéshez szorosan kapcsolódik az integráltság fogalma abban az értelemben, hogy az

adattárházban tárolt adatokat egy az adott tárgyterületre jellemzően csoportosítva

célszerű tárolni.

Nonvolatile (nem illékony): Azaz alapelvárás az adattárházba betöltött adatokkal

szemben, hogy azok változatlanok legyenek. Amennyiben a forrásrendszer mégis

megváltoztatná azokat, abban az esetben megfelelő időbélyegekkel kell ellátni őket.

Time variant (időfüggetlen): Az adatokat általában jelen pillanatban töltjük be az

adattárházba, de az elemzéseket múltbeli forrásokra támaszkodva végezzük el, és

abból következtetünk jövőbeli eseményekre. Ezért az adatokat időponttól függetle-

Page 9: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

9

nül kell időszakokhoz tárolnunk, hogy abból a szükséges riportok könnyen elérhe-

tők legyenek.

Az adattárház műveletek alatt általában a következőket értjük:

a) Adatkinyerés tranzakciós, vagy más rendszerből, pl.: a vállalatirányítási rendszer-

ből

b) A kinyert adatok átalakítása a beszámoló elkészítéséhez alkalmas formára.

c) A riportok, beszámolók elérhetővé tétele a döntéshozók számára.

Az adattárház felépítése e céloknak megfelelően eltér az Adatbázisok című tárgyból tanul-

taktól. [1] Ebben az esetben az elsődleges szempont az adatok hatékony kinyerése az elem-

zések elkészítéséhez, azaz megengedhető némi redundancia a teljesítmény növeléséhez. Az

adattárházakat általában csillag vagy hópihe sémában építik fel. Mindkét esetben az elem-

zés szempontjából fontos adatokat a ténytáblában helyezik el. Ide kerül be a vállalatirányí-

tási rendszer törzs adatállományának megfelelő transzformáltja. Eköré, az úgynevezett

dimenzió táblákba kerülnek be azon információk, melyek szerint a szűréseket, csoportosí-

tásokat elkészíthetik. Ezen táblákban, az ezek adatsémáiban, a köztük kapcsolatokban tér el

egymástól a csillag és a hópihe séma. Csillagsémánál az elemzési dimenziók idegen kulcs-

csal kapcsolódnak közvetlenül a ténytáblához a 4. ábrán látható módon.

4. ábra – Csillagséma ER diagramja

Ezzel szemben hópihe séma esetében az egyes dimenziótáblák a természetes logikát kö-

vetve egymással is kapcsolatban álnak, például az egyes üzletek városokban vannak, a vá-

rosok megyékhez tartoznak, és így tovább. A hópihe séma ER (Entitás Relációs) diagram-

jára példa az 5. ábrán látható.

Page 10: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

10

5. ábra – Hópihe séma ER diagramja

A témám feldolgozása során csillag sémás adattárházat építettem fel.

A csillag séma összehasonlítása a hópihével:

Előnyei:

egyszerű, intuitív adatmodell

használata kevés join adatbázis műveletet igényel

használata kevés tábla olvasását igényli

könnyű megvalósíthatóság, a modell meta adatai (adatokat leíró adat) egyszerűek

Hátrányai:

aggregációk (összegek) képzése nehézkes

nagy dimenziótáblák esetén a hierarchiakezelés nagyon lassíthatja a lekérdezéseket

a dimenzióadatok tárolása redundáns

2.3. Az OLAP kocka

A vállalatirányítás rendszerek On Line Transaction Process (OLTP) elven működnek, azaz

fő rendező elvük a tranzakciók végrehajtása. A felhasználók, a programok apró, elemi mű-

veletek sorozatát hajtják végre a tranzakciókban, ezáltal egyes adatbázis objektumok álla-

potát kérdezik le, frissítik egymástól függetlenül, konkurens módon.

Az elemzésekhez azonban ez a megközelítés nem megfelelő. Ilyen célokra az On Line

Analysis Process (OLAP) megközelítés használatos. Az OLAP módszerek mindig maguk-

ba foglalják az adatok interaktív lekérdezését, valamint azok elemzését is. A felépített adat-

tárház adatstruktúrája már úgy van megtervezve, hogy az a lehető leghatékonyabban segít-

se ezt a szemléletet, emiatt az adattárház és az OLAP fogalmak a gyakorlatban teljesen

összefonódtak.

Page 11: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

11

6. ábra – Értékesítési OLAP kocka 3 dimenziós reprezentációja

Az OLAP kocka egy adatszerkezet az adattárházban tárolt adatok elemzéséhez, csoportosí-

tásához. A kocka egyes dimenzióit az adattárház dimenzió táblái képzik, ezek szerint tud-

juk beazonosítani a ténytáblában tárolt adatok egyes összetett részhalmazait. A kocka fel-

építését a 6. ábra tartalmazza. Gyakran tárolják el az egyes termékek a részhalmazok egye-

sítésekor, aggregálásukkor az egyes halmazok összesített mutatószámait. Így jelentős telje-

sítménynövekedés érhető el. A gyakorlatban természetesen több dimenziót is alkalmazha-

tunk, azonban ez ritkán indokolt és könnyen vezethet nehezen áttekinthető végeredmény-

hez. A sok dimenzió szerinti analízis már inkább az adatbányászat területébe nyúlik át.

2.4. Microsoft Dynamics NAV funkcionális áttekintése

A Dynamics NAV (más nevén Navision) a Microsoft ERP rendszere, kifejezetten kis- és

középvállalatok számára. A vállalat napi teendőinek ellátásához teljes körű segítséget

nyújt, minden elvégzendő vállalati feladathoz rendelkezik megfelelő modullal.

Főbb moduljai a pénzügy, kereskedelem, CRM, termelésirányítás, raktárkezelés, projekt

menedzsment, humán erőforrás és üzleti elemzés.

A felhasználói felület felépítése és a megjelenő űrlapok nagyban hasonlítanak a félév során

a QAD EA-ban és SAP Business One-ban megismertekre.

A pénzügyi modulban állíthatók be a vállalat főkönyvi adatai, kezelhetők az eszközök és a

bankszámlák, de itt kérdezhetők le a vállalat cash-flow és likviditási adatai is.

A kereskedelem modulban találhatók meg a szállítói beszerzéseket és az értékesítést támo-

gató modulok. Ezek egymáshoz rendkívül hasonlóak, hiszen a két műveletnél ugyanazon

folyamatnak a két oldalán van a vállalat, ettől eltekintve a fogalmak hasonlóak: ajánlatok,

megrendelések, visszaigazolások, számlák.

A CRM rendszeren keresztül kerül kapcsolatba a termelés a vevőkkel, itt kerülnek megva-

lósításra azon funkciók, melyek az ügyféladatok kiértékelésében és az árképzésben támo-

gatják a felhasználót.

A termelésirányítási modulban nyílik lehetőségünk az agyagjegyzékek, a termékútvonalak,

a kapacitás, az ütemezés, és a gyártási megrendelések létrehozására, karbantartására.

A raktározás blokkjában a belső és külső árumozgatások összehangolása történik meg a

tárolási költségek minimalizálása és a vevői kiszolgálás színvonalának növelése érdekében.

A projektmenedzsment menüponton keresztül érhetők el az egyes projektek adatai, mint

például az előrehaladása, költségei.

Page 12: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

12

A humán erőforrás modulban tarthatók karban az egyes dolgozók törzsadatai, mint a mun-

kaidő, a munkabér, az alkalmazottakhoz kapcsolódó ráfordítások vagy a személyi jellegű

költségek.

Az üzleti elemzés modul a vállalat főbb mutatóit fogja össze egy csoportba, azokat viszo-

nyítja a tervezési adatokhoz.

Könyvelés

Keresés

Ajánlat

Megrendelés

Szállító Vevő

Megkeresés

Ajánlat

Megrendelés

Készletvizsgálat

RaktárTermelésProjektSzerviz

Anyag raktár

Szállítás Szállítás

Szállítás

SzámlaSzámlázás Számlázás

Bank ÁtutalásÁtutalás

7. ábra – Üzleti folyamatok egymásra épülése a Microsoft Dynamics NAV-ban

2.5. Árképzés Microsoft Dynamics NAV környezetben

Az árképzéssel elsősorban az értékesítés kapcsán kell foglalkoznunk a Navisionben. Ennek

elhelyezkedése a program hierarchiájában a 7. ábrán látható. Mivel ez képzi a feladatom

központi problémáját, ezért a későbbiekben erre fektetek nagyobb hangsúlyt.

Az árképzésért nem egy modul felelős, az egy hosszú folyamat, mely több rendszert is

érint. Alapvetően az CRM hatásköréhez tartozik azon vevők felderítése, akik hajlandóak

magasabb árat fizetni a nekik kínált termékért, de mint a 8. ábra is mutatja, ezt nem képes

egymagában ellátni. Nem kaphatunk pontos képet a vevőinkről, anélkül, hogy ne ismer-

nénk a múltjukat, korábbi vásárlásaikat, szokásaikat. Ehhez a történeti adatokhoz kell visz-

szanyúlnunk, melyeket a vállalatirányítási rendszer adatbázisában találunk. A kialakítandó

árat mindig a jelenlegi helyzet alapján, a jövőbeni tervek érdekében, a múltbéli adatok fi-

gyelembevételével kell meghatározni. Ez a vállalati rendszer részeinek a szerves együtt

működését követeli meg. Az ERP és a CRM közösen kísérik végig a vevőt a megkereséstől

a termék egész életútján a 8. ábrán látható módon.

Page 13: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

13

8. ábra - A CRM és az ERP kapcsolata az áralkotásban

Az árakat alapbeállításként a terméktörzsben lehet definiálni. Ettől eltérni ennek módosítá-

sa nélkül az Eladás és marketing/Készlet és árképzés/Eladási ár munkalapon lehet. Itt tu-

dunk definiálni különféle kedvezményeket, egyedi árakat.

Lehetőségünk van beállítani az új árazási stratégia kezdő és befejezési dátumát, annak ér-

vényességi körét, mind termékre, mint vásárlóra, vagy akár könyvelési vagy árcsoportra.

Új egyéni ár létrehozásakor az alábbi paraméterek megadására van szükség:

Kezdési/befejezési dátum: az ár érvényességi idejét szabja meg

Eladás típusa: itt adható meg, hogy az Eladási kód mezőben szereplő érték mely

paraméterre értendő

Cikkszám: az új ár az itt megadott termékre lesz csak érvényes

Mértékegység

Minimális mennyiség: azt a minimális rendelési mennyiséget jelenti, ami alatt nem

érvényes az egyedi ár

Új egységár: az az ár, amelyen az előbbi feltételek teljesülésekor az adott termék

megvásárolható

Sorengedmény %: az árengedmény az eredeti ár százalékában kifejezve

3. Az önálló laboratóriumi feladat megvalósítása A félév első felében az eddig leírtakban igyekeztem elmélyülni, hogy az elkészített megol-

dásom kellően átgondolt legyen. Úgy vélem, hogy ezen ismeretanyag elsajátítása után kel-

lően tudatosan tudtam nekiállni a probléma vizsgálatának. Ezt követően került megfogal-

mazásra, hogy mi is az a konkrét feladat, mit fogok a félév során elkészíteni.

Ebben a fejezetben a megoldás főbb lépéseit, tervezés fázisait mutatom be. Próbálom tisz-

tázni az egyes tervezői döntésekhez vezető okokat, előzményeket.

Page 14: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

14

3.1. A fejlesztőkörnyezet kialakítása

A feladatom a hozzá szükséges fejlesztési környezet kialakításával kezdtem. A megoldás-

ban virtuális gépen futtatok Windows XP Professional SP3 operációs rendszert, és rajta

Microsoft SQL SERVER 2008 R2 Standard adatbázisszervert. Az adatbázis-kezelőt a kö-

vetkező szolgáltatásokkal telepítettem: SQL Server, Analysis Server valamint SQL Server

Business Intelligence Development Studio. A Business Intelligence Development Studio a

Visual Studio 2008 speciális konfigurációja, adatbázis folyamatok fejlesztésére. Az elem-

zéseket Excel 2010 programban készítem el a fejlettebb Analysis Service támogatás miatt.

Az alkalmazott vállalatirányítási rendszer Microsoft Dynamics NAV 5.0.

A Dynamics NAV telepítése után létrehoztam benne a Microsoft Demó vállalatát a Cronus

Rt.-t, azt az adatbázis kiszolgálom tároltam el. Ahhoz, hogy az ERP elérje az adatbázis

szervert a következő beállításokat kellett elvégeznem:

- az xp_ndo.dll elhelyezése az MSSQL telepítési könyvtárában, alapesetben a

C:\Program

Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Binn\xp_ndo.dll

útvonalon [3]

- az SQL szerveren be kellett állítani a xp_ndo_enumusergroups és

xp_ndo_enumusersids távoli eljáráshívásokat (Remote Procedure Call, RPC) [3]

3.2. A Microsoft Dynamics NAV adatstruktúrájának megismerése

Mint minden vállalatirányítási rendszer a Navision is rengeteg adatot tárol el, rendkívül

összetett, először kuszának tűnő struktúrában. Természetesen nem célom ezek részletes

bemutatása, csupán az árelemzés során felhasznál táblák bemutatása és a köztük lévő kap-

csolatok felderítése.

A program telepítésekor és a vállalat létrehozásakor az adatok tárolására két lehetőségünk

van: vagy a merevlemezen tároljuk azt fájlban, vagy adatbázis szerveren. Én ez utóbbit

választottam, ehhez a 3.1-es pontban ismertetett távoli eljáráshívásokat be kellett állítani.

A táblákhoz kétféle módon lehet hozzáférni: közvetlenül megkereshetjük az adatbázisban

azt, vagy Dynamics NAV-ban kiválasztunk egy menüpontot, például az Eladás és marke-

ting/Eladás/Vevők útvonalon feljövő űrlapon tudjuk kezelni a vevői törzsadatainkat. Ekkor

a fejlécben megváltozik a felirat:

9. ábra - A Navision fejléce

A szögletes zárójelek közötti részben olvasható, mely formon járunk, és az mely táblát

használja. Jelen esetben a Vevőkarton táblát használjuk. Az adatbázisban azonban angol

nevükön szerepelnek a táblák. A magyar-angol megfeleltetést a táblanevek között legegy-

szerűbben az Obejct Designer-rel tudjuk megtalálni. Ezt az Eszközök menüből érjük el

vagy a Shift+F12 billentyűkombinációval. A táblák magyar neve nem jelenik meg alapból,

azt külön be kell kapcsolni az oszlopok megjelenítésénél, a Caption-t bepipálva.

Ezek után már tudjuk azonosítani, hogy az adattárházhoz szükséges információk mely táb-

lákból nyerhetjük ki. Az árelemzéshez feladatomban a tényadatokat az Eladás, Eladási

számla és Eladási jóváírás táblákból nyerem főrészt. Ezen bizonylatok adataikat több táb-

lában tárolják el. Minden bizonylathoz tartozik egy fej tábla bejegyzés, ami a partnerek

általános törzsadatait, a kapcsolattartás, számlázás, fizetés, szállítás és a külkereskedelem

adatait tárolja a rendszer. Valamint minden bizonylattípushoz tartozik egy adat tábla is,

amiben a bizonylatok egyes sorai tárolódnak. Itt jelenik meg, a számlaazonosító, mint ide-

Page 15: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

15

gen kulcs a számla fejére, a vevő azonosítója, cikkazonosító, mennyiség, egységár, ked-

vezmény, ÁFA, sorösszeg, stb.

10. ábra - A számla általános felépítése

Ahogy a 10. ábra is mutatja, a számlafej és a számlatörzs között egy-több kapcsolat van,

több számlatörzs rekordból és egy fejrekordból épül fel egy számla. Ezenkívül még renge-

teg egyéb kapcsolatban állnak ezen táblák az idegen kulcsaikon keresztül, például a vevő-,

cikk-, könyvelési csoport, fizetési feltételek táblával.

Miután megismertük az OLAP kocka alapjait, és megtaláltuk azon adatokat az ERP-ben,

amik majd a kocka ténytábláját alkothatják, meg kell határozni azon attribútumokat, me-

lyek alkalmasak rá, hogy dimenzióként használjuk őket.

A dimenzió megválasztásakor érdemes előre gondolkodni, hogy melyek lehetnek azok az

adatok, amelyek mentén lehet csoportosítani az adatainkat, és az eredményre is vezethet.

Érdemes lehet például elemezni az egyes cikkek eladásait, vásárlóink fogyasztását, ked-

vezményeiket, területi elhelyezkedésüket, azt, hogy vásárlásaikat mely időszakokra üteme-

zik. Ezek közül a legtöbb adatot pusztán a vállalatirányítási rendszerből ki tudjuk nyerni a

fent ismertetett módon. Én dimenzióként vettem fel, több, a vállalatirányítási rendszerben

használt paramétert, törzsadatot, mint például a könyvelési-, ár-, és kedvezménycsoportot,

a cikkeket, határidőket, vevőket és azok földrajzi elhelyezkedését. Ezen adatok mind az

adatbázis egyes tábláiban érhetők el, melyeket az Object Designer-rel találtam meg.

Az értékesítési elemzéshez lassan minden tábla rendelkezésre állt. Ahhoz azonban, hogy az

elemzés ne csak egy statikus folyamat legyen, hanem a felhasználó könnyedén hozhasson

létre engedményeket, egyedi árakat az eredmények függvényében, meg kellett keresni azt

ahol ezek tárolva vannak. A keresett funkciót megtaláljuk az Eladás és marke-

ting/Eladás/Vevő útvonalon, majd ott az Eladás gombra, majd a Sorengedményekre kat-

tintva. Ezután megkereshetjük a tároló táblát: Vevői sorengedmények.

3.3. Az adattárház struktúrájának kialakítása

Az elemzés megvalósításához az adatokat a vállalatirányítási rendszer adatbázisából át

töltöttem egy adattárházba. Az adattárházban nem a vállalat aktuális „működési” adatai

szerepelnek, hanem az archivált adatok lehető legbővebb gyűjteménye. Itt már nem szem-

pont a vállalat napi ügyeinek a nyomon követése. Mivel az adattárház szerepe, feladata sok

esetben eltér a normál adatbázisokétól, ezért létrehozásukkor is más szempontok szerint

kell eljárni. Az adatbázisba általában adatokat viszünk be, tároljuk azokat, ezért a legfonto-

sabb szempont a struktúra megalkotásakor a redundancia mentesség és a függőségek vesz-

teségmentes feloldása. Lekérdezéseket ritkábban futtatunk, és azok eredményhalmaza a

teljes struktúra viszonylag kis részét fedi le. Emiatt dominál a tárhely kedvezőbb kihaszná-

lása a join műveleteknél elszenvedett plusz műveleti idő felett.

Ezzel szemben az adattárházakban sokkal nagyobb hangsúlyt kap az adatok elérése a dön-

tések meghozatalakor egy jól strukturált, áttekinthető formában. Ezért az információt azzal

a céllal tároljuk, hogy onnét azt szakaszos beírás után többször kinyerjük. Ennek köszönhe-

tően az adat esetleg redundánsan több táblában is elhelyezkedik.

Az adattárház felépítéséhez csillag sémát választottam, főként a kisszámú tábla és a modell

egyszerűsége miatt.

Page 16: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

16

A következő táblák szerepelnek benne:

- DimCustomer: A vevők adatait tartalmazó dimenziótábla

- DimDiscountGroup: A vevői árcsoportokat tartalmazó dimenzió

- DimItem: A cikkek tulajdonságai

- DimLocation: A vevők földrajzi elhelyezkedésének dimenziója

- DimPostingGroup: Az ERP-ben tárolt könyvelési csoportok

- DimPriceGroup: A tárolt vevői árcsoportok

- DimTime: Idő dimenzió a könyvelési és szállítási határidőhöz

- FactTable: Az adattárház ténytáblája

Az adattárház tábláit a következő SQL scripttel hoztam létre:

Dimenziótáblák létrehozása:

-- A ténytáblák létrehozása

CREATE TABLE onlab.dbo.DimTime(

[DateKey] int IDENTITY (1, 1) PRIMARY KEY,

[Date] datetime UNIQUE NOT NULL,

[DayNumberOfWeek] int NOT NULL,

[DayNumberOfMonth] int NOT NULL,

[DayNumberOfYear] int NOT NULL,

[WeekNumberOfYear] int NOT NULL,

[MonthNumberOfYear] int NOT NULL,

[QuarterOfYear] int NOT NULL,

[SemesterOfYear] int NOT NULL,

[Year] int NOT NULL,

-- Az idő táblába való beszúrás előtt leellenőrzöm a dátum constraint-

eket.

CONSTRAINT C_DimTable_DNOW CHECK (DayNumberOfWeek BETWEEN '1' AND '7'),

CONSTRAINT C_DimTable_DNOM CHECK (DayNumberOfMonth BETWEEN '1' AND '31'),

CONSTRAINT C_DimTable_DNOY CHECK (DayNumberOfYear BETWEEN '1' AND '366'),

CONSTRAINT C_DimTable_WNOY CHECK (WeekNumberOfYear BETWEEN '1' AND '53'),

CONSTRAINT C_DimTable_MNOY CHECK (MonthNumberOfYear BETWEEN '1' AND

'12'),

CONSTRAINT C_DimTable_QOY CHECK (QuarterOfYear BETWEEN '1' AND '4'),

CONSTRAINT C_DimTable_SOY CHECK (SemesterOfYear BETWEEN '1' AND '2')

);

-- A földrajzi elhelyezkedés táblájának létrehozása

CREATE TABLE onlab.dbo.DimLocation(

[CountryCode] nvarchar(2),

[City] nvarchar(30),

[CustomerID] nvarchar(20) PRIMARY KEY,

[Country] nvarchar(255)

);

-- A könyvelési csoport táblájának létrehozása

CREATE TABLE onlab.dbo.DimPostingGroup(

[PostingCode] int IDENTITY (1, 1) PRIMARY KEY,

[PostingGroup] nvarchar(30) UNIQUE NOT NULL

);

-- A vevői árcsoport táblájának létrehozása

CREATE TABLE onlab.dbo.DimPriceGroup(

[Code] nvarchar(10) PRIMARY KEY NOT NULL,

[Description] nvarchar(30) NOT NULL

);

Page 17: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

17

-- A kedvezmény csoport táblájának létrehozása

CREATE TABLE onlab.dbo.DimDiscountGroup(

[Code] nvarchar(10) PRIMARY KEY,

[Description] nvarchar(30) NOT NULL

);

-- Az eszköz tábla létrehozása

CREATE TABLE onlab.dbo.DimItem(

[No] nvarchar(20) NOT NULL PRIMARY KEY,

[Description] nvarchar(30)

);

-- A vevő tábla létrehozása

CREATE TABLE onlab.dbo.DimCustomer(

[IDNumber] varchar(20) PRIMARY KEY NOT NULL,

[Name] varchar(50) UNIQUE NOT NULL

);

A ténytáblában el kell tárolni a dimenziótáblák kulcsait is idegen kulcsként, a függőségek

megőrzéséhez. Emiatt, valamint a tárolt adatok sokfélesége miatt a tábla attribútumainak

száma bőven meghaladja a dimenziótáblákét.

A ténytáblát létrehozó script:

-- A ténytábla létrehozása

CREATE TABLE onlab.dbo.FactTable (

"No_" nvarchar(20),

"Sell-to Customer No_" nvarchar(20),

"Bill-to Name" nvarchar(50),

"Bill-to Address" nvarchar(50),

"Bill-to City" nvarchar(30),

"Posting Date" datetime,

"Shipment Date" datetime,

"Payment Discount %" numeric(38,20),

"Customer Posting Group" nvarchar(10),

"Currency Code" nvarchar(10),

"Currency Factor" numeric(38,20),

"Customer Price Code" nvarchar(10),

"Customer Discount Code" nvarchar(10),

"ItemNo" nvarchar(20),

"Description" nvarchar(50),

"Unit of Measure" nvarchar(10),

"Quantity" numeric(38,20),

"Unit Price" numeric(38,20),

"Unit Cost (LCY)" numeric(38,20),

"VAT %" numeric(38,20),

"Line Discount %" numeric(38,20),

"Line Discount Amount" numeric(38,20),

"Amount" numeric(38,20),

"Amount Including VAT" numeric(38,20),

"Country Code" nvarchar(2),

"Shipment Date Code" int,

"Posting Date Code" int,

"Customer Posting Code" int

);

Page 18: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

18

3.4. Ismerkedés a Business Intelligence Development Studio-val [6]

Az MS SQL Server beépítetten tartalmazza a Visual Studio egy speciálisan konfigurált

változatát, a Business Intelligence Development Studio-t, amellyel egy LabView szerű,

grafikus programozói felületen tudunk áttöltő modulokat készíteni.

A program használatának megtanulásához könnyen érthető demók találhatók a

social.msdn.microsoft.com web helyen. A rendszer működésének megismeréséhez, vala-

mint demók készítéséhez elérhető egy AdventureWorks nevű alkalmazás is, mely telepíté-

se során több mintaadatbázist hoz létre a kiszolgálón. Ennek telepítése nagy segítséget je-

lentett a rendszerrel való ismerkedés folyamán.

A félév során megismerkedtem a Business Intelligence Development Studio grafikus prog-

ramozói felületével, és a programozással benne. [7] Az önálló laborom megoldásához a

programban elkészített folyamatok a 12-14. és a 18. ábrákon láthatók.

Az így elkészített folyamatok aciklikus gráfok, melyek csomópontjaiban helyezkednek el

az adatokat átalakító műveletek, élei pedig csővezetékeket hoznak létre az adat áramlásá-

hoz.

3.5. Az ETL folyamat elkészítése

Az adattárház struktúrájának létrehozása önmagában még nem túl nagy feladat, hiszen az

még üres, nincs bent adat. A feltöltése a vállalatirányítási rendszer adatbázisából történik

meg. A Navision adatbázisát tanulmányozva hamar rájöhetünk arra, hogy annak felépítése

nem egyezik meg az előzőekben létrehozott adattárház-struktúrával, az adatokat át kell

alakítani betöltés előtt.

Az ilyen adatbázis folyamatokat Extract, Transform, Load-nak (kinyer, átalakít, betölt

(ETL)) nevezik.

A minél könnyebb továbbfejleszthetőség miatt a következő névkonvenciót vezettem be a

dimenziótáblákra: az általam létrehozott dimenziótábla neve a „Dim” előtaggal kezdődik,

majd utána következik a forrástábla NAV által használt angol neve.

A folyamatot próbáltam a lehetőségeimhez mérten minél inkább automatizálni, hogy üte-

mezetten is futtatható legyen kis változtatással. Az emberi beavatkozás szükségességét

természetesen nem lehet elkerülni, hiszen az árképzés stratégiai döntés.

Az ETL folyamatom state-chart diagramja a 11. ábrán látható. A process elején hozom

létre az adattárház sémáját a fent bemutatott SQL script segítségével. Ezután megkezdődik

a dimenzió táblák adatainak áttöltése az ERP adatbázisából az adattárház megfelelő táblái-

ba. Ezek általában egyszerű SQL lekérdezésekből állnak, majd az eredmény beíródik a

megfelelő adattáblába. Végül az elkészült dimenzió táblák alapján, már fel lehet tölteni a

ténytáblát is. A ténytáblába az adatokat némi átalakítás után az egyes értékesítési bizonyla-

tok soraiból veszem.

Page 19: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

19

11. ábra - Az elkészített ETL folyamat state-chart-ja

Ahhoz, hogy az egyes adatfolyamatokat definiálni tudjam, először létre kellett hoznom a

vezérlési folyamatot Visual Studio-ban a state-chart alapján, majd az egyes állapotokat

bővítettem ki adatfolyamokkal.

3.5.1. A dimenziótáblák feltöltése

Az egyes dimenziótáblák feltöltése nagyon hasonlóan néz ki a feladatomban. Ezért részle-

tesen csak a vevői árcsoport szerinti feltöltést ismertetem részletesen, illetve az ehhez kép-

esti eltérésekre térek ki a többi esetben.

A dimenzió táblák feltöltése többnyire egyszerű. A projekthez definiálni kellett egy kap-

csolatot, mely rendelkezik az adatbázishoz való hozzáférést biztosító proterty stringgel.

Ezután létre hoztam az adatfolyamot: két objektum, csővezetékkel összekötve. Kell egy,

ami kiolvas az ERP adatbázisából és egy, ami a kiolvasott adatokat beírja az adattárház

megfelelő táblájába. Az árcsoport táblához tartozó adatfolyamot a 12. ábra mutatja.

Page 20: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

20

12. ábra - Egyszerű adatfolyam

Az adatfolyam ténylegesen csak egy forrásból és egy célból áll. A forrásban választható ki,

hogy mely adatkapcsolatból olvasson ki adatokat. Itt beállítottam az ERP adatbázisára mu-

tató korábbi kapcsolat objektumot, ez után kiválaszthatóvá válik, hogy mely táblából aka-

runk olvasni. Emellett elérhető egy saját SQL parancs kiadását lehetővé tevő opció is. Én

azt választottam. A döntésem indoka a következő volt: általában a táblák nagyon sok attri-

bútumot tartalmaznak, ezeknek csak a töredékére van szükségem, ezért csak azokat kér-

deztem le, amik ténylegesen bekerülnek az adattárházba. Így biztosan kisebb lesz az adat-

forgalom az adatbázis szerver és az adattárház között, valamint a folyamat rövidebb pro-

cesszoridőt igényel a kevesebb feldolgozandó adat miatt.

A cél beállítása hasonló a forráséhoz. Itt is ki kell választani a célobjektum leíróját, ezért

definiáltam egy további kapcsolatot, de ez esetben az adattárházhoz. Majd itt is beállítható

a cél adatbázis, illetve annak egy már létező táblája, vagy új tábla hozható létre. Mivel az

adattárházban az adatokat időszakonként töltjük be, ilyen és ehhez hasonló folyamatokkal

ezért az inicializálásnál hoztam létre a táblát, hogy most, az áttöltés során már csak bele

kelljen írni abba. Ezáltal többször használható, bővíthető lesz a projekt. A már létező tábla

attribútumaihoz ezután hozzá kell rendelni az adatfolyam attribútumait, ezt angolul

mapping-nak nevezik. Ez egy egy-egy kapcsolat, amely meghatározza, hogy az adatfolyam

mely adatai pontosan melyik tulajdonságnak feleljenek majd meg a kimeneten. Ha nem

található a bemeneten adat, akkor a kimenetre automatikusan NULL érték kerül.

A többi dimenzió tábla feltöltése ehhez hasonlóan zajlik, természetesen mások a be- és

kimeneti táblák azoknál.

Lényegesebb eltérés van azonban az időt és a földrajzi elhelyezkedést definiáló dimenzió-

táblákban az eddigiekhez képest.

Az idő dimenziónál az adatokat egy Excel táblába generáltam le, az AdventureWorks de-

mótáblájának mintájára, melyet a 13. ábra mutat.

2. táblázat - Az idő dimenzió paramétereit tartalmazó Excel tábla részlete

Tehát az idő dimenziót tartalmazó adattáblát nem adatbázisból, hanem Excel táblából kell

feltölteni. Ehhez speciális kapcsolatot kell létrehozni az adatbázis kapcsolathoz hasonlóan,

amelyben a kapcsolat leíró objektum egy munkafüzetre tartalmaz mutatót. Ezután külön

definiálni kell hozzá új adatforrást a megfelelő állapothoz, amely Excel munkafüzetből

Page 21: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

21

képes adatokat beolvasni. A kimenet kezelése megegyezik az árcsoport dimenziónál leír-

takkal, hiszen a cél itt is egy tábla lesz az adattárházban.

A dimenziótáblák feltöltése közül a legösszetettebb a földrajzi elhelyezkedést tároló tábláé.

Ennek menetét a 14. ábrán követhetjük végig.

13. ábra - A földrajzi elhelyezkedés tábla feltöltése

Itt két adatforrásból nyertem ki az összes szükséges információt. Egyrészt a vállalatirányí-

tási rendszer vevői törzsadatait tartalmazó táblából a vevő országának rövidítését, városát

és azonosítóját, másrészt készítettem egy Excel munkafüzetet, melyben eltároltam az or-

szágok rövidítését és tejes nevüket. Miután beolvastam az adatot mindkét forrásból, azokat

össze kell illeszteni, hiszen közösen fognak egy rekordot alkotni. Erre való a Merge Join

művelet a Visual Studio-ban, ami négy bemenő paramétert vár: a két illesztendő, illesztési

kulcs szerint rendezett adathalmazt, és az illesztési attribútumok nevét az adathalmazok-

ban. A rendezett bemenetek megteremtéséhez rendező objektumokat illesztettem be az

adatfolyam gráfba, az illesztési attribútumokat pedig az illesztő objektum tulajdonságainál

határoztam meg. Az így előálló n+m-1 attribútumú adathalmazt, - ahol m és n a bemenetek

attribútumainak száma - a már ismertetett módon hozzácsatoltam egy cél objektumhoz,

amely beszúrja azt az adattárház megfelelő táblájába.

3.5.2. A ténytábla feltöltése

A dimenziók megtervezése és létrehozása után minden feltétel adottá vált, az adattárház

ténytáblájának elkészítéséhez. Az ERP adatainak áttöltése a ténytáblába bonyolult feladat,

amely sok, apróbb részfeladatból áll össze. Ezen kisebb részfeladatokat mutatom be ebben

a fejezetben, a betöltő teljes adatfolyam-diagramja a 15. ábrán látható.

Az adatok kinyerése a vállalatirányítási rendszer adatbázisából itt is hasonló kapcsolat leíró

objektumokon keresztül történik, mint a dimenziótáblák elkészítésénél. Igyekeztem itt is

Page 22: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

22

csupán a szükséges attribútumokat lekérdezni ezeken keresztül, hogy az adatmozgatást és a

vele járó hálózatterhelést minimalizálni tudjam. A dimenzióktól eltérő módon azonban

minden egyes vevői bizonylat adatállománya kettő adattáblában van szétosztva. Ezért az

egyes táblákból különböző adatokat érünk el a bizonylatokról, melyeket egyértelműen

azonosít és az adataikat összekapcsolja a bizonylat azonosítója a földrajzi elhelyezkedésnél

már bemutatott join merge művelet segítségével. Ehhez itt is rendezni kell a bemeneti

adatfolyamokat.

A bizonylatok soraiban szereplő adatok nagyon hasonlóak, azonban a jelentésük eltérő

lehet, ezért nem szabad meggondolatlanul áttölteni azokat az adattárházba, hiszen bizony-

lattípustól függően más és más jelentése lehet számunkra az adott mezőknek, még ha ne-

vük azonos is. Például az eladási jóváírások esetében az eladott áruk mennyisége és a be-

vételünk nem növekszik, noha ezen mennyiségek pozitívan jelennek meg a bizonylatokon

(ellentétben a QAD EA-val, ahol a stornózáskor negatív mennyiséggel is felkerül a tétel).

Ahhoz, hogy ez ne okozzon téves forgalmat a statisztikai adatokban, és ne torzítsa el az

elemzés eredményét, ezen számlák végösszege és darabszáma negatívan kell, hogy beke-

rüljön az adattárházba. Ehhez a Derived Culomn nevű komponenst használtam, ami a be-

menetére kötött adatfolyam attribútumain képes aritmetikai műveleteket elvégezni.

Miután minden bizonylatsor és a hozzá tartozó bizonylatfej egyesítésre került, a három

adatállomány szerkezete teljesen egységes és semmi sem indokolja a külön kezelésüket a

továbbiakban, ezért a három adathalmaz unióját képzem a további műveletek előtt az Uni-

on All metódus segítségével.

Ebben a pillanatban az adatfolyamban előállt minden adattal, amit a ténytáblából az elem-

zés során ki szeretnék majd nyerni. Egy fontos szakasz azonban még hátra van, mielőtt az

adattárházba be lehetne írni: el kell helyezni a dimenziótáblák kulcsait, ugyanis jelenlegi

állapotában az adatállomány soraihoz nem, vagy csak nagyon erőforrás igényes művele-

tekkel lehetne hozzárendelni a dimenziókat. Ennek elkerülése végett a dimenziótáblák kul-

csait idegen kulcsként el kell helyezni a formálódó adatállományba.

A kulcsok beszúrásához az úgynevezett Lookup komponenseket használom fel. Mint a

neve is mutatja, egy lookup táblát megvalósító feltételes szerkezet, ami ha … akkor …

típusú ellenőrzésekre használható. Általánosságban véve nagy hátránya, hogy nagyon me-

rev a szerkezet, nem képes tanulásra, csak a táblából képes visszaadni értéket. Ez itt nem

jelent problémát, hiszen az ERP rendszerből úgy sem lehet kinyerni természetes működés

mellett olyan adatot, ami nem szerepel bent. Másik hátránya a tábla méretéből adódó kere-

sés komplexitása, ezt azonban speciális adatbázis környezetben lehet például ritkaindexe-

léssel javítani. Minden dimenziótábla kulcsa egy lookup tábla segítségével kerül bele egy

új attribútumként az átalakítandó adathalmazba

Miután minden kulcsot megkapott a kiolvasott, átalakított adat, az elérte azt a végső for-

máját, ami már kompatibilis az adattárház ténytáblájával. Ekkor nincs más művelet hátra,

mint beírni azt a megfelelő táblába. Ez a dimenziótábláknál ismertetettel teljesen azonos

elven történik.

Page 23: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

23

14. ábra - A ténytábla feltöltése az ERP adatbázisából

Page 24: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

24

3.6. Az OLAP kocka felépítése

Miután az adattárház struktúráját kialakítottam és megtöltöttem azt az elemzéshez szüksé-

ges adatokkal a következő lépés az volt, hogy az adatokat olyan módon kell összefogni,

hogy abból elemzéseket lehessen készíteni. Mivel elemzőeszköznek Excelt választottam,

ezért adott volt a lehetőség, hogy a kockát Analysis Service projektként hozom létre Visual

Studio-ban, mert az mind Excel-ben, mind pedig az SQL Serveren támogatva van.

Analysis projektben is először adatkapcsolatot kell létrehozni a forrásként használni kívánt

adatbázissal. Ez hasonló módon történik az ETL-nél megismerthez, vagyis itt is létrejön

egy konnektor objektum a projekt és az adatbázis között.

Ezen kapcsoló objektumon keresztül ezután létrehozhatunk egy nézet objektumot a pro-

jekthez, melyben az adatbázis táblái között további kapcsolatokat, új kulcsokat hozhatunk

létre, új attribútumokat származtathatunk már meglévőkből.

Mindez azonban csak virtuális változás, csak ebben a projektben jön létre, a tényleges

adatbázis nem módosul.

Létrehoztuk a virtuális adatmodellünket, neki láthatunk a kocka felépítésének.

3.6.1. Dimenziók definiálása

A kocka építése előtt azonban definiálni kellett még azokat a dimenziókat, melyek szerint

az adatok elemezhetők, csoportosíthatók lesznek majd. A dimenziókat varázslóval hoztam

létre. Ehhez meg kellett adni, hogy melyik tábla alapján akarom elkészíteni, a tábla mely

mérőszámait akarom felhasználni, illetve azt is, hogy melyik tábla adatain értelmezett az a

dimenzió. Ez utóbbit minden dimenzió esetében az adattárház ténytáblájára állítottam. A

varázsló végigkattintgatása után létrejövő formon tudtam beállítani azt egyes dimenziók-

ban megjelenő objektumokat, azok hierarchiáját. A hierarchia létrehozásával keletkező

hibaüzenetek megszüntetésére be kellett állítani a kapcsolatokat a hierarchiában résztvevő

attribútumok között.

Kialakított hierarchia Attribútumok közti relációk Kész dimenzió

3. táblázat - A kocka dimenzióinak létrehozásának lépései

Page 25: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

25

3.6.2. Kocka építése

A dimenziók elkészítése után futtatható a kockát elkészítő varázsló. Ebben lehetőségünk

van beállítani, hogy mely táblákat kezelje ténytáblaként a rendszer, azokon milyen méré-

seket végezzen el, valamint mely dimenziókat rendelje hozzá.

A varázsló lefuttatása után ismét egy formot kapunk, melynek első fülén a táblák közti

kapcsolatok láthatók. A többi fülön van lehetőségünk beállítani új számított értékeket a

kockára, a feliratokhoz, értékek nevéhez új fordításokat definiálni, illetve böngészni a koc-

kában.

Miután megépítettem a kockát, valamint beállítottam az aggregációk mentén az egyes mé-

rések típusát, már csak telepíteni kellett a kockát egy adatbázis kiszolgálóra. Mivel mind a

vállalatirányítási rendszer adatbázisa, mind az adattárház és ezekből kifolyólag a kocka is

csupán tesztelési, fejlesztési céllal lett létrehozva, különösebb terhelésnek nincsenek kité-

ve, ezért úgy döntöttem, hogy mindet egy MS SQL Server példány fog kiszolgálni.

15. ábra - Az OLAP kocka „csillag” sémája

3.7. Adatbázis kezelő cseréje

Az OLAP kocka adatbázisba való telepítése közben a következő hibaüzenetet kaptam:

Errors related to feature availability and configuration:

The 'Perspectives' feature is not included in the 'Standard Edition' SKU.

Page 26: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

26

A hiba okának keresése közben hamar egyértelművé vált, hogy az csak XP SP3-nál jelent-

kezik. Tovább keresgélve, megtaláltam az SQL Server különböző kiadásait összehasonlító

listában, hogy a Standard nem támogatja az Analysis Serices-t. Ezért MSDNAA-ról töltöt-

tem le SQL Server Developer-t, és felkészültem az adatok migrálására.

Próbálkoztam a régi adatbázisok többféle módon történő kiexportálására, de egyik sem

hozta az általam elvárt eredményt, ezért azokról a fájlokról készítettem biztonsági másola-

tot, amelyekben az adatbázis el van tárolva.

A régi verzió eltávolítása előtt megpróbáltam megoldani a problémát a telepítőbe épített

kiadásfrissítési lehetőségekkel, azok azonban nem használtak, ezért az adatbázis kiszolgáló

teljes törlése mellett döntöttem.

Miután újra telepítettem és újra konfiguráltam a kiszolgálót, most már a Developer válto-

zatát, sikerült a kocka telepítése az adatbázisba.

A kötelező újraindítás követően azonban ismételten hiba fogadott a kocka ismételt felépí-

tésekor:

Unable to connect to the Analysis server.

SQL Server Configuration Manager-rel megnézve a szolgáltatásokat, észrevettem, hogy

nem indult el automatikusan az Analysis Service, ezért megpróbáltam kézzel elindítani,

amire a következő hibaüzenetet kaptam válaszul:

The request failed or the service did not respond in a timely fashion.

Consult the event log or other application error logs for details.

Rövid keresgélés után rájöttem, hogy ez a hiba szintén XP-n jelenik csak meg. A megoldás

megtalálásához viszont már sokkal több idő kellett, mire egy fórumon ráleltem: Ki kell

törölni minden bejegyzést a rendszernapló alkalmazások csoportjából.

Mióta kitöröltem a naplóbejegyzéseket ismét hibátlanul tudom használni a szolgáltatást.

3.8. Ár kialakítása Excel 2010-ben

Miután sikerült visszaírni a kockát az adatbázis kiszolgálóra, annak tartalma könnyedén

elérhető Excelből, csak adatforrást kell definiálni hozzá.

Az adatforrást az Adatok/Egyéb forrásból/Az Analysis Services szolgáltatásból útvonalon

lehet létrehozni az adatbázis szerverre való bejelentkezés után a kocka kiválasztásával.

Ezután a baloldalon megjelenő Kimutatás mezőlista menüből drag&drop lehet összerakni a

különböző jelentéseket, diagramokat.

A jelentésekből a felhasználó tetszőleges szisztéma szerint kialakíthatja az elképzeléseihez

leginkább igazodó árakat, akciókat.

Az általam megvalósított egyéni árképzés szintén Excelben történik, kettő dimenzió men-

tén. Az árképzés során a vevőket és a termékeket használtam fel az árlisták megvalósításá-

hoz, mint két független dimenziót. Az elemzés mérőszámaként ebben a konkrét implemen-

tációban a bizonylatokból kinyert összegeket használtam fel, de a feladat további részét

úgy alakítottam ki, hogy e két dimenzió mentén tetszőleges mérőszám segítségével lehes-

sen árlistát készíteni. Az elemzésben a dimenziókat nem egymásba ágyazva helyeztem el,

hanem X és Y irányban, így az Excel által generált nézet egy mátrixként jelenik meg,

melynek oszlopainak száma megegyezik a vevők számával és oszlopazonosítói a vevők

cégneve. Hasonlóan a sorok száma megegyezik az ERP-ben definiált termékek számával,

melyeket szintén a termék megnevezésével azonosítottam. A mátrix (i,j)-dik eleme az az

összeg, amennyit az i-edik partnere fizetett a j-edik termékért összesen a vállalatnak. Ezen

mátrixnak természetesen csak abban az esetben lesz feltöltve minden sora és oszlopa, ha az

adattárházban szereplő minden vevő vásárolt már legalább egy darabot minden termékből.

A minta vállalat adatbázisából emiatt egy erősen hiányos mátrix képezhető, azonban ennyi

is elég a feladat végiggondolásához és megvalósításához.

Page 27: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

27

16. ábra - Automatikusan generált diagram: Értékesített cikkmennyiség negyedéves bontásban

3.9. Egyéni ár, akciós ár meghatározása

A kockából képzett ritka mátrixból sok tanulság leszűrhető az egyes termékekről vagy a

vásárlóink szokásairól, arra azonban teljesen alkalmatlan, hogy belőle adat egyszerűen

visszatölthető legyen a Navision-be. Az egyes vevőkre vonatkozó árak, kedvezmények

felvétele ugyan lehetséges lenne a mátrixba is, azonban az arra vonatkozó egyéb paraméte-

rek beállítása itt nem, vagy csak nehezen áttekinthető módon lenne kivitelezhető.

Ennek kezelésére egy Visual Basic scriptet írtam, amely átalakítja a mátrixot olyan táblá-

zatos formára, amiben az egyéni árak kialakításához szükséges minden paraméter egysze-

rűen megadható és azok könnyen áttekinthetők. Az így kialakított táblázatban szereplő

oszlopok a vevők, az értékesített termékek, a kijelölt mérési eredmények, az adott vevőre

vonatkozó sorkedvezmény százalékban kifejezve, a kedvezményes ár használatának időtar-

tama és az a minimális rendelési mennyiség, amely felett a kedvezményes árra jogosul a

vevő.

A ritkamátrixot táblázattá átalakító kódrészlet a scriptből:

’A vevők összeszámolása a munkafüzet 2. sorában

Do Until ExcelReader.Cells(2, intCustomerNumber) = ""

intCustomerNumber = intCustomerNumber + 1

Loop

’A cikkek összeszámolása az első oszlopban

Do Until ExcelReader.Cells(intItemNumber, 1) = ""

intItemNumber = intItemNumber + 1

Loop

’...

’Egymásba ágyazott ciklusokkal végig pásztázom a ritka mátrixot és

Page 28: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

28

’ha értékes elemet találok benne, akkor azt átmásolom a táblázatba

For i=1 To intCustomerNumber

For j=1 To intItemNumber

If ExcelReader.cells(j+2, i+1).Value <> "" And

ExcelReader.cells(j+2, i+1).Value <> "0" Then

WrittenSheet.Cells(intRow, 1).Value =

ExcelReader.Cells(2, i+1)

WrittenSheet.Cells(intRow, 2).Value =

ExcelReader.Cells(j+2, 1)

WrittenSheet.Cells(intRow, 3).Value =

ExcelReader.cells(j+2, i+1)

intRow = intRow + 1

End if

Next

Next

A táblázat előre kitöltött részeit létrehozó kódrészlet:

’Kitöltendő oszlpok nevének kitöltése, megjelölésként

WrittenSheet.Cells(1, 1).Value = "Vevők"

WrittenSheet.Cells(1, 2).Value = "Termékek"

WrittenSheet.Cells(1, 3).Value = ExcelReader.Cells(1, 1)

WrittenSheet.Cells(1, 4).Value = "Kezdési dátum"

WrittenSheet.Cells(1, 5).Value = "Befejezési dátum"

WrittenSheet.Cells(1, 6).Value = "Minimális rendelési mennyiség"

WrittenSheet.Cells(1, 7).Value = "Sorengedmény %"

4. táblázat - A VB Script által generált táblázat részlete

Ezen oszlopok közül az időszakot, a minimális rendelési mennyiséget és a sorengedmény

százalékos értékét a felhasználónak kell meghatároznia. Az így elkészített táblázatos forma

már nem tartalmazza azokat az elemeit a mátrixnak, ahol az nem tartalmazott értéket.

Emellett a táblázat visszatöltése az adatbázisba sokkal egyszerűbben algoritmizálható is.

A táblázat feltöltését, ezzel a vásárlói engedmények megállapítását Excelben végeztem el,

ezzel egyúttal teszteltem a kialakuló megoldásom, hogy az ténylegesen képes-e nyújtani az

elvárt működést. Az átláthatóság kedvéért minden sorban a kezdési és befejezési dátum,

valamint a minimális rendelési mennyiség mezőket azonosra állítottam. Természetesen ez

nem kötelező a későbbiek során.

A feladat megoldás során a következő adatokkal töltöttem fel az Excel táblát: Kezdési dá-

tum: 2008.01.15. Befejezési dátum: 2008.02.10. Minimális rendelési mennyiség: 100 db.

A sorengedmény meghatározása során törekedtem azoknak a bonyolult szabályoknak a

követésére, amelyek alapján a valós életben a kedvezmény megállapításra kerül, csupán

egy egyszerű képlet alapján számolom azt (1. képlet). Természetesen a felhasználó tetsző-

leges bonyolultságú, az Excelben megvalósítható képletet találhat ki az engedmény megha-

tározására.

1. képlet – A sorengedmény % kiszámítása

Page 29: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

29

Ahhoz, hogy az így meghatározott árlistát is felhasználja a Navision a bizonylat felvételé-

nél a fizetendő ár meghatározására, annak tartalmát vissza kell tölteni az adatbázisba. Eh-

hez meg kellett határoznom az adatok exportálásakor ismertetett módon, hogy melyik

adatbázistáblában tárolja az ERP ezeket az adatokat.

A dolgozat témáját képző feladat megoldásához nem maradt más hátra, minthogy vissza

kell töltenem az adatokat a Sales Discount Line táblába. Ehhez egy az adatok adattárházba

való betöltése során használt ETL folyamatokhoz hasonlót készítettem el ismét, melynek

adat forrásként a már egy marketing szakember által módosított Excel táblát adtam meg,

valamint a betöltéshez szükséges egyéb kapcsolótáblákat. Az ETL modul adatfolyam diag-

ramját a 17. ábra szemlélteti.

17. ábra - Az egyéni árlistát visszatöltő ETL process adatfolyam diagramja

Page 30: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

30

Ahhoz, hogy a fentiekben elkészített munkafüzetet vissza tudjam tölteni a vállalatirányítási

rendszer adatbázisának megfelelő táblájába, hozzá kell csatolni a constraint-ek kielégítésé-

hez szükséges külső kulcsokat. A cikkek azonosítóját a kocka cikk dimenzió táblájából

csatoltam hozzá, a vevő azonosítót pedig a vevő dimenzióból. Van még néhány kulcs, amit

fel kellett vennem, de ezek e feladatban statikusak, ezért nem csatoltam őket hozzá az adat-

folyamhoz, hanem csak beállítottam azok értékét statikusan. Egy újabb join számításigé-

nyes művelet, és már így is van jó pár a process-ben, valamint értékük nem változhat, mert

az a fizikai valóságot sértené meg. Például mindig csak a vevő jellegű partnereinknek tu-

dunk kedvezményeket adni, a szállítóktól legfeljebb csak kaphatunk kedvezményt, de ve-

lük úgysem foglalkoztam a feladatom során. Végül hozzácsatoltam az ERP cikkekre vo-

natkozó törzsadatokat tároló táblájából még hozzácsatoltam a mennyiség mértékegységét.

Miután minden kényszert kialakít az adatfolyam, nincs más feladat hátra, be kell írni azt a

megfelelő táblába.

Az adatbázis műveletek optimalizálása érdekében kiszűrtem a ritka mátrix azon sorait,

amiben nincs érték már a táblázattá alakítás során, most pedig betöltés előtt szűröm ki azon

rekordokat az adatfolyamból, amelyekben a kedvezmény mértéke 0%. Ezek tárolása értel-

metlen és felesleges az adatbázisban, illetve ha mégis megtörténik, akkor teljesítményrom-

lást okozhat a Navision futásában is, hiszen minden új bizonylat felvételénél az ár megha-

tározásakor több látszólagosan „kedvezményes” árból kellene kiválasztani a minimálist,

amire ezen adatok semmilyen hatással sincsenek.

Az elemzés eredményének az ERP adatbázisába történő visszatöltésével bezárult a 1. ábrán

felvázolt kör. Ez azt jelenti, hogy a vállalatirányítási rendszer árlistái már tartalmazzák a

felhasználó által meghatározott egyéni kedvezményeket, árakat, vagyis mindig, ha ezután

új bizonylatot vesz fel valaki a rendszerben, akkor annak létrehozásakor a rendszer már

figyelembe veszi a most beállított új kedvezményeket is.

5. táblázat - A kedvezmény automatikus érvényesítése bizonylat készítésekor

4. Az elkészített implementáció üzleti jelentősége Az általam elvégzett feladat jelentős részét meg lehetett volna oldani a Microsoft Dyna-

mics NAV-on belül is. Árlisták definiálására, kedvezmények megadására természetesen ott

is van lehetőség. Arra a döntésre, hogy a feladatot az adatok külső adattárházba exportálá-

sával oldjam meg az vezetett, hogy az így elkészített megoldás sokkal dinamikusabb,

mintha az ERP-n belül oldottam volna meg a feladatot.

Vegyünk például egy multinacionális vállalatot, amelynek több országban is jelen van le-

ányvállalata. Ebben az esetben közös ERP-t nem, vagy csak nehezen használhatnának,

hiszen, pl. országonként más és más számviteli törvényeknek kellene megfelelniük. Ezért

saját ERP-ben tárolják a tranzakciós adataikat.

A vállalati adatok elosztott kezelése egyszerűbben konfigurálhatóvá és üzemeltethetővé

teszi a vállalatirányítási rendszereket, ugyanakkor az adatok centrális tárolásának hiánya

nehézkessé teszi mind az elemzést, mind az anyavállalat közös árképzési politikájának

meghatározását. Erre a problémára nyújtottam egy megoldást a dolgozatom során, ahol

meghagytam a lehetőséget arra, hogy a vállalat egyes divíziói saját vállalatirányítási rend-

Page 31: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

31

szereket üzemeltethessenek úgy, hogy a cégvezetés stratégiailag fontos döntéseihez szük-

séges adatokat újragondolt struktúrában, egy központi adattárházban is eltároltam. Fontos

észrevenni, hogy a feladat nem követeli meg azt sem, hogy az egyes leányvállalatok azo-

nos vállalatirányítási rendszereket használjanak, így különösen kedvező megoldásként

szolgál több cég egyesítésére is.

Önálló laboratóriumi munkám során biztosítottam a lehetőséget az ERP-k egymástól minél

függetlenebb implementációjára a centrális, dinamikus árpolitika lehetőségének biztosítása

mellett.

Page 32: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

32

5. Irodalomjegyzék

[1] Gajdos, S. (1999). Adatbázisok. Budapest: Műegyetemi Kiadó.

[2] Hámori, B., & Szabó, K. (2006). Információgazdaság. Budapest: Akadémiai Kiadó.

[3] Lohndorf-Larsen, L. (2008. november 5). Basic SQL - Creating Extended Stored

Procedure / xp_ndo.dll. Letöltés dátuma: 2011. március 10, forrás: Nav developer's

blog: http://blogs.msdn.com/b/nav_developer/archive/2008/11/05/basic-sql-

creating-extended-stored-procedure-xp-ndo-dll.aspx

[4] Robert J. Dolan, & Hermann Simon. (2000). Árképzés okosan. Budapest: Geomédia

Szakkönyvek.

[5] Sildó, C. (2004. augusztus). Adattárház összefoglaló. Letöltés dátuma: 2011. április

25., forrás: Adattárház összefoglaló:

http://scs.web.elte.hu/Work/DW/adattarhazak.htm

[6] social.msdn.microsoft.com. (dátum nélk.). Letöltés dátuma: 2011. május 5., forrás:

MSDN fórum: social.msdn.microsoft.com

[7] SSIS Tutorial: Creating a Simple ETL Package. (dátum nélk.). Letöltés dátuma: 2011.

május 5., forrás: Microsoft Developer Network: http://msdn.microsoft.com/en-

us/library/ms169917(v=sql.90).aspx

[8] Whitehorn, M., & Burns, K. (2008. július). Best Practices for Data Warehousing with

SQL Server 2008. Letöltés dátuma: 2011. május 5., forrás: Microsoft Developer

Network: http://msdn.microsoft.com/en-us/library/cc719165(v=sql.100).aspx

6. Táblázatjegyzék

1. táblázat - Árazási mechanizmusok és az árazást befolyásoló tényezők a statikus és a

dinamikus árazású piacokon. ...................................................................................................... 5

2. táblázat - Az idő dimenzió paramétereit tartalmazó Excel tábla részlete ............................. 20

3. táblázat - A kocka dimenzióinak létrehozásának lépései ..................................................... 24

4. táblázat - A VB Script által generált táblázat részlete .......................................................... 28

5. táblázat - A kedvezmény automatikus érvényesítése bizonylat készítésekor....................... 30

7. Képletjegyzék

1. képlet – A sorengedmény % kiszámítása ............................................................................. 28

8. Ábrajegyzék

1. ábra – Az elvégzett részfeladatok ........................................................................................... 4

2. ábra – A profitnégyzet a hozzá tartozó háromszögekkel ........................................................ 7

3. ábra – Több ár meghatározása ................................................................................................ 7

4. ábra – Csillagséma ER diagramja ........................................................................................... 9

5. ábra – Hópihe séma ER diagramja ....................................................................................... 10

6. ábra – Értékesítési OLAP kocka 3 dimenziós reprezentációja ............................................. 11

7. ábra – Üzleti folyamatok egymásra épülése a Microsoft Dynamics NAV-ban ................... 12

8. ábra - A CRM és az ERP kapcsolata az áralkotásban .......................................................... 13

Page 33: Értékesítési elemzés OLAP kockávalcentaur.sch.bme.hu/~saatetyi/doc/onlab.pdf · 2011-05-05 · világ térhódítása. Ekkor ugyanis a technikai fejlődés döbbenetesen fellendítette

33

9. ábra - A Navision fejléce ...................................................................................................... 14

10. ábra - A számla általános felépítése ................................................................................... 15

11. ábra - Az elkészített ETL folyamat state-chart-ja ............................................................... 19

12. ábra - Egyszerű adatfolyam ................................................................................................ 20

13. ábra - A földrajzi elhelyezkedés tábla feltöltése ................................................................. 21

14. ábra - A ténytábla feltöltése az ERP adatbázisából ............................................................ 23

15. ábra - Az OLAP kocka „csillag” sémája ............................................................................ 25

16. ábra - Automatikusan generált diagram: Értékesített cikkmennyiség negyedéves

bontásban .................................................................................................................................. 27

18. ábra - Az egyéni árlistát visszatöltő ETL process adatfolyam diagramja .......................... 29