2014. április 25., péntek

SSRS és MySQL



Feladat: 64 bites windows-os gépen szeretnénk egy távoli szerveren található MySQL adatbázishoz csatlakozni a Report Builder-rel.

Probléma: A Report Builder 32 bites alkalmazás, ezért nem jó a 64 bites MySQL driver.
Egy angol nyelvű cikk az esetről: http://blogs.msdn.com/b/sqlcat/archive/2011/03/31/32-and-64-bit-connectivity-from-the-same-machine.aspx

Megoldás: A 32 bites és 64 bites mysql odbc drivert is fel kell telepíteni az SSRS-t futtató gépre! A 32 bites a Report Builder-hez, a 64 bites drivert pedig a 64 bites adatkapcsolatot igénylő alkalmazásokhoz, amelyek lehetnek pl. SQL Server Management Studio, MS Excel, MS Access, stb.

  1. Driverek letöltése

    A driver-eket innen lehet letölteni: https://dev.mysql.com/downloads/connector/odbc/

  2. Driver-ek telepítése

    Célszerű rendszergazdai jogosultsággal telepíteni, mert - én legalábbis így jártam- ennek hiányában nem teszi fel a driver-eket.
     
  3. ODBC kapcsolatok létrehozása

    Szintén rendszergazdai jogosultsággal biztos ami biztos alapon odbc kapcsolatokat létrehozni (32 és 64 bit, teljesen ugyanazon beállításokkal). A 32 és 64 bites ODBC kapcsolatokról egy Microsoft tudástár bejegyzés: https://support.microsoft.com/en-us/kb/942976
     
  4. SSRS új Data Source létrehozása

    Az SSRS oldalon hozzuk létre az új adatforrást, amit ezután már használhatunk a Report Builder-ben, mint megosztott adatforrást. (Shared Data Source)


Linked server létrehozása:

Ha az SQL szerverhez szeretnénk csatolni egy külső, esetünkben MySQL adatbázist, akkor az 1-3 pont elvégzése után az alábbi cikkben leírtak alapján a művelet elvégezhető: http://www.packtpub.com/article/mysql-linked-server-on-sql-server-2008

Provider String mezőbe a következőt írni: DSN=OdbcKapcsolatNeve;
A többi a cikkben leírtak szerint.


2013. október 26., szombat

BCG mátrix


A BCG mátrix a termékek és szolgáltatásoknál azok növekedési potenciálja és piaci részesedése alapján vizsgálódik és helyezi el őket egy kétdimenziós mátrixban.

Segítségével a vállalat képessé válik

  • a termékek és szolgáltatások életciklusának áttekintésére,
  • a termékek és szolgáltatások piaci helyzetének feltérképezésére,
  • az optimális termékportfólió kialakítására
A vállalat a termékeket 2 szempont szerint osztályozza és helyezi el a következő 4 kategória valamelyikébe:
  • Sztárok (Star)
  • Kérdőjelek (Question)
  • Fejőstehenek (Cash Cow)
  • Döglött kutyák (Dog)


Sztárok
A sztárok a piacon a legjobb pozíciót betöltő termékek, magas piaci részesedés és magas piaci növekedés jellemzi őket, jelentős a kereslet irántuk.

Kérdőjelek
A kérdőjelek azok a viszonylag új termékek, amelyeknek még alacsony a piaci részesedésük, s a gyors piaci növekedés lehetősége jellemző rájuk. Érdemes alapos elemzés alá vonni a terméket, s ezt követően dönteni a termék sorsáról (beruházás, kivonás)

Fejőstehenek
A fejős tehenek kategóriába tartozó termékek piaci részesedése magas, azonban a piaci növekedésre már nem jellemző a magas érték. Fontos, hogy e termékek megtartsák erős piaci pozíciójukat, s a vállalat kihasználja a még bennük rejlő lehetőségeket, ugyanakkor a termékhez kapcsolódóan már nem érdemes új beruházásokat indítani.

Döglött kutyák
A döglött kutyák olyan termékek, amelyeknek sem a piaci részesedése, sem a piaci növekedési lehetősége nem kielégítő.


Linkek:

2013. szeptember 8., vasárnap

Jutalék kalkuláció Excelben



Szeretne (többet) eladni, újabb ügyfeleket, több hasznot hozó szerződést? Hacsak Ön nem egy született értékesítő, akkor szüksége lesz egy szakemberre, aki ezt megteszi Ön helyett.

Lehet már fel is vette legújabb emberét, megállapodtak a fizetésben. Valószínűleg tiszta jutalékos rendszerben alkalmazza, de az is lehet, hogy fix fizetést + jutalékot kap emberünk a munkájáért. A két változatban közös, hogy meg kell határozni a jutalék kifizetésének alapjául szolgáló szabályokat.


A legegyszerűbb ösztönzési formulát kiszámíthatjuk úgy, hogy vesszük az adott termék értékesítésének bizonyos százalékát, és azt fizetjük ki az értékesítőnek. (Árbevétel * Jutalék%) Ez jól működik akkor, ha az értékesítőnek kicsi, vagy nincs mozgástere az ár meghatározására.

Ha az értékesítőnek nagy a mozgástere az ár meghatározására (és ezen nincs vezetői kontroll), előfordulhat, hogy olyan alacsony árrést határoz meg, hogy egy forgalomhoz kötött fix jutalék% veszteséget termel a cégnek. Sokszor ez fel sem tűnik, hiszen itt nemcsak a közvetlen költséget (anyagköltség, értékesítői jutalék, stb.) kell hogy fedezze az árrés, hanem a szervezet társosztályainak adott termékre/szolgáltatásra jutó működési költségeit is. (A tulajdonos profitjáról nem is szólva :-) ) Ezeket termék szinten számszerűsíteni nehéz.

Mi a helyzet abban az esetben, ha az értékesítőnek nem az új ügyfelek felkutatása és a közvetlen értékesítés a feladata, hanem egy már meglévő állomány gondozása? Ezek az ügyfelek jobbára maguktól is rendelnek, és szinte lehetetlen meghatározni, hogy az értékesítés melyik részére volt ráhatása az ügyfélmenedzsernek. Olyan értékesítés után pedig nem szeretnénk fizetni, amelyben nem működött közre.

Vagy akár olyan (időszakos) feladatok elvégzésére is utasíthatjuk üzletkötőnket, amely közvetlen plusz árbevételt nem fog hozni. Ilyen lehet az adminisztrációs munka (ügyféllátogatások és telefonbeszélgetések témája, értékesítési előrejelzések, stb.) minél pontosabb elvégzése, amit szintén honorálni illik. Ekkor azt mondjuk, hogy erre van a fix fizetés, vagy beépítjük a jutalékrendszerbe.

Az értékesítő számára motiváló és egyben a vállalat számára is hasznot hozó jutalékos rendszer kialakítása komplex feladat lehet. Ha ez már megvan, akkor a következő lépés az eredményesség visszamérésének kialakítása, illetve magának a jutaléknak az elszámolása.

A jutalékok elszámolását - a motivációs csomag bonyolultságától függően - többféleképpen meg lehet oldani.

  • Ha a forgalomtól függ a jutalék, és a jutalék meghatározásának logikája nem bonyolult és időben állandó, illetve a használt vállalatirányítási rendszer már tartalmaz is ilyen modult, célszerű azt használatba venni.
  • Ha sok paramétertől függ a jutalék mértéke és nagyon sok értékesítőnek/ügynöknek kell jutalékot számolni, akkor egy kifejezetten a jutalékszámításra kifejlesztett szoftvert érdemes vásárolni.
  • Minden másra ott az Excel. :-)

Amennyiben úgy látja, hogy az első 2 opció nem megfelelő/alkalmazható, de nem tudja, hogyan kezdjen neki egy ilyen rendszert táblázatkezelőben kialakítani, akkor Ön most jó helyen jár!

Ha kíváncsi és érdeklődik, hogy milyen lehetőségek vannak egy Excel alapú jutalékszámítási rendszerben, nyugodtan keressen meg kérdéseivel.



2013. július 17., szerda

WITH AS használata az SQL lekérdezésekben


Amennyiben azzal szembesülünk, hogy a SELECT utasításunk átláthatatlanná vagy nehezen olvashatóvá vált a beágyazott SQL lekérdezések (subquery) miatt, akkor érdemes fontolóra vennünk a WITH AS használatát.

Mit tud a WITH AS?

Segítségével az SQL lekérdezésünkből kiemelhetjük a beágyazott lekérdezéseket, és helyettük egy 'alias'-szal, egy névvel hivatkozhatunk rájuk. Pont úgy, mintha tábla vagy view lennének. Ez tapasztalataim szerint meggyorsítja a komplex lekérdezések futtatását, átláthatóbbá teszi a SELECT utasítást.

Hogyan használjuk?

Az így kiemelt beágyazott lekérdezéseket még a fő lekérdezés (ami a beágyazott lekérdezésekből olvas) futtatása előtt definiálnunk kell. Lehetőség van több ilyen "átmeneti tábla" létrehozására is a 'WITH AS' kifejezés után.

Példa:

WITH CTE_Tabla1 AS 

 (
  SELECT Mezo1, Mezo2, Mezo3 FROM tbl_Vers
  WHERE Mezo4 in ('Ecc', 'Pecc', 'Kimehetsz')
 ),

CTE_Tabla2 AS
 (SELECT Field1, Field2 FROM tbl_Mondoka
  WHERE Field3 = 'Holnapután bejöhetsz'
 )

SELECT * 
   FROM CTE_Tabla1 Inner Join CTE_Tabla2 ON CTE_Tabla1.Mezo1 = CTE_Tabla2.Field1
                       Inner Join tbl_AltatoMese ON CTE_Tabla2.Field2 = tbl_AltatoMese.ID


Egyéb tudnivalók:
  • Az utolsó SELECT-ben fel kell használnunk az összes definiált "átmeneti táblát", különben nem fut le a lekérdezés
  • Az utolsó SELECT utasításban az így létrehozott "táblákból" csak az ott megadott mezőneveket használhatjuk.
  • Használható a VIEW készítés során is!


2013. május 27., hétfő

SWOT elemzés


A SWOT elemzés célja

A SWOT elemzés rávilágít egy vállalat, iparág, projekt, termék, szolgáltatás, szervezeti részleg vagy akár egy konkrét személy GYengeségeire, Erősségeire, Lehetőségeire, ill. a kapcsolódó Veszélyekre. (Az előző szavak kezdőbetűit összeolvasva a SWOT elemzést szokták még GYELV elemzésnek is fordítani.)

A SWOT egy angol mozaikszó, 4 szó kezdőbetűiből áll össze:

Strengths - erősségek
Weaknesses - gyengeségek
Opportunities - lehetőségek
Threats - veszélyek


Részletesen

Vegyük szépen sorba a SWOT elemzés egyes elemeit. Mit takarnak igazából, hogyan kell őket meghatározni, illetve pár példát is megnézünk.

Strengths (Erősségek)

Azok a képességek, tulajdonságok, erőforrások, viszonyok, amelyekkel a vállalat/iparág/termék/... már rendelkezik, azokra jelentős ráhatással bír, és amelyek kiemelik a többi versenytárs közül és sikeressé teszik.

Weaknesses (Gyengeségek)

Azok a vállalatra jellemző tulajdonságok, amelyek miatt a vállalat teljesítménye elmarad az iparági átlagtól/versenytársaktól.

Az alábbiakban felsorolok pár szempontot, amelyeket értékelve vagy az Erősségekhez (pozitív) vagy a Gyengeségekhez (negatív) sorolunk:
  • Cég/brand/termék image
  • Technológiai tudás
  • Innovációs képesség
  • Partneri viszonyok
  • Munkatársak (Lojalitás, elkötelezettség, fluktuáció)
  • Tulajdoni viszonyok
  • Menedzsment kompetencia, felkészültség
  • Termék szortiment/választék
  • Pénzügyi helyzet
  • Folyamatok hatékonysága
  • Költséghatékonyság
  • Üzleti modell
  • Vevőkör
  • Döntéstámogatás

Opportunities (Lehetőségek)

Azok a külső körülmények, amelyekre a vállalatnak nincs, vagy csekély ráhatása van, és a vállalat működésére, piaci részesedésére, nyereségességére pozitív hatással lehetnek.

Threats (Veszélyek)

Azok a változások a vállalat környezetében (belül ill. kívül), amelyekre a vállalat csak reagálni tud, érdemben nem tudja befolyásolni a történéseket. Az események kimenetele negatív a vállalatra nézve.

Pár szempont, amelyeket a Lehetőségekhez vagy a Veszélyekhez sorolhatunk:

  • Piaci verseny alakulása
  • Szezonalitás a keresletben/kínálatban/stb.
  • Cég/Termék megjelenési lehetőség a sajtóban
  • Makrogazdasági környezet alakulása
  • Politikai környezet alakulása
  • Változó adórendszer
  • Technológiai változások
  • Vevői igények átalakulása


A SWOT analízis elkészítésekor törekedjünk arra, hogy a stratégia megvalósítását befolyásoló főbb tényezőket soroljuk fel és azokat értékelve dolgozzunk ki intézkedési terveket
Ne essünk abba a hibába, hogy túl szorgalmasak vagyunk és olyan tényezőket is felsorolunk, amelyek csak rendkívül kis mértékben vannak hatással a stratégiai céljainkra. Ne vesszünk el a részletekben, fókuszáljunk a jelentős hatással bíró elemekre.

Témához kapcsolódó linkek:
http://startupguide.hu/mi_az_a_swot_analizis
http://www.veniens.hu/vallalatepito/2009/07/04/betekintes-a-kockazatitokebfektetesek-vilagaba-interju/

2013. március 15., péntek

Excel oszlopokból sorok


Aki dolgozott már marketing címlistával, annak ismerős lehet a következő helyzet. Tegyük fel, hogy Ön vásárolt/letöltött egy címlistát, ahol a címzett kapcsolati adatainál több elérhetőséget (Telefon 1, Telefon 2, E-mail 1, E-mail 2, ...) is megadtak, mindezeket külön oszlopokban.

Klikk a képre a nagyobb méretért!

Elképzelhető, hogy nekünk valamilyen ok folytán ez a formátum nem megfelelő (pl. a marketing adatbázisunk tábláinak belső felépítése miatt), és szeretnénk az oszloponkénti megjelenítést átkonvertálni úgy, hogy ezek az információk soronként jelenjenek meg.

Mik a lehetőségeink, ha mindezt Excel-ben szeretnénk megtenni? A jó hír, hogy megoldható. Az Excel klasszikus kimutatás varázslóját fogjuk erre a célra használni. Az Excel 2007-es verziójától kezdődően ez a funkció alapból nem elérhető a szalagon, vagy a gyorselérési eszköztáron, de az alábbi módszerrel elérhetővé tehetjük.

Menjünk a Fájl fülre, ott válasszuk a Beállítás menüpontot.

Klikk a képre a nagyobb méretért!
Válasszuk a 'Gyorselérési eszköztár' menüpontot. Ezután a 'Választható parancsok helye' legördülő menüből válasszuk a 'A menüszalagon nem szereplő parancsok' értéket, majd az alatta lévő listában görgessünk a 'Kimutatás és kimutatásdiagram varászló' értékhez. Nyomjuk meg a 'Felvétel > >' gombot.

Klikk a képre a nagyobb méretért!


Kattintsunk az újonnan felkerült ikonra, majd a megjelenő képernyőn váltsunk a 'Több tartomány (összesítés)' opcióra.

Klikk a képre a nagyobb méretért!

Klikk a képre a nagyobb méretért!

Adjuk meg az adattartományt, amin végre szeretnénk hajtani a transzformációt, majd nyomjuk meg a 'Hozzáadás' gombot.

Klikk a képre a nagyobb méretért!

 Egy kimutatást kaptunk eredményül, ahol kattintsunk bele jobb alsó sarokban található Végösszeg cellába.

Klikk a képre a nagyobb méretért!

Az alábbi listát kapjuk eredményül, ahol utána az 'Érték' (C oszlop) mezőben rászűrve a nem üres cellákra megkapjuk a kívánt listát.

Klikk a képre a nagyobb méretért!


2013. március 8., péntek

Hónap első és utolsó napja

A hónap kezdő és végdátumának meghatározása különböző alkalmazásokban:

PL/SQL (ORACLE):

Aktuális hónap első napja:
trunc(sysdate, 'month') vagy trunc(sysdate, 'MM')

Aktuális hónap utolsó napja:
last_day(sysdate)

Egyéb:

 Az év első napja:
 trunc(sysdate, 'year')

 2 hónap múlva:
 add_months(sysdate, 2)



T-SQL:

Aktuális hónap első napja:
DATEADD(m, DATEDIFF(m,0,getdate() ), 0)

Aktuális hónap utolsó napja:
DATEADD(ms,-3,DATEADD(m, DATEDIFF(m,0,getdate() )+1, 0))

Előző év azonos hónapjának első napja:
DATEADD(m, DATEDIFF(m,0,getdate() )-12, 0)

Előző év azonos hónapjának utolsó napja:
DATEADD(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate() )-11 , 0))

Év első és utolsó napja:
Select DATEFROMPARTS(year(getdate()),1,1) Datum_ev_elso_napja
     , DATEFROMPARTS(year(getdate()),12,31) Datum_ev_utolso_napja

select DATEtimeFROMPARTs(year(getdate())-1,1,1,0,0,0,0) DatumIdo_tavaly_elso_napja
     , DATEtimeFROMPARTs(year(getdate())-1,12,31,23,59,59,997) DatumIdo_tavaly_utolso_napja

Egyéb:

 Szövegként megadott dátum átalakítása:
 CONVERT(DATETIME,'19980101',101)

 Rendszerdátum előtt 2 nap:
 DATEADD(d, 0, DATEADD  (d, -2, getdate() ))



Report Builder (SSRS):

Aktuális hónap első napja:
=DateSerial(DatePart("yyyy",today()),DatePart("m",today()),1)

Aktuális hónap utolsó napja:

=DateAdd(DateInterval.Day,-1, DateAdd(DateInterval.Month,1, DateSerial(DatePart("yyyy",today()),DatePart("m",today()),1)))

Előző hónap első napja:
=DateSerial(DatePart("yyyy",today()),DatePart("m",today())-1,1)

Előző hónap utolsó napja:
=DateAdd(DateInterval.Day,-1, DateAdd(DateInterval.Month,1, DateSerial(DatePart("yyyy",today()),DatePart("m",today())-1,1)))