2008. november havi bejegyzések

Kampányelemzés Business Intelligence Development Studioval – screencast

Komplex adatbányászati feladatok megoldásához a Microsoft a Business Intelligence Development Studiot (BIDS) ajánlja. A BIDS a Visual Studio 2008 testreszabott változata, melyet az SQL Server 2008-cal együtt telepíthetünk akár a kiszolgálóra, akár munkaállomásra, és amely fel van készítve Analysis, Integration és Reporting Services projektek fejlesztésére.

Áttekintés

Egy Analysis Services Projectben az első lépés egy Data Source objektum létrehozása. A data source segítségével határozzuk meg azt az adatforrást, amellyel dolgozni fogunk, ehhez a varázslóban az adatok helyét és a kapcsolódáshoz használt felhasználói fiókot kell megadnunk. Az adatforrás bármilyen OLE DB-n vagy .NET-es adat szolgáltatón (provider) keresztül elérhető adatbázis lehet, tehát – a közhiedelemmel ellentétben – nem csak OLAP kockákon tudunk adatbányászati műveleteket végezni, hanem relációs adatokon, Access adatbázisokon vagy akár Excel munkalapokon is.

Az adatforrások komplex adatszerkezetek, melyeknek általában csak egy részhalmazára van szükségünk az adatbányászati feladatunk megoldásához. Azonosítanunk kell tehát azt a táblát, amely az elemzendő eseteket tartalmazza (case table), azon belül azokat a sorokat és oszlopokat, amelyek valóban relevánsak, továbbá azokat a kapcsolódó táblákat, melyek még szükségesek a probléma megoldásához. A teljes adatforrás egy részének ilyen formán történő kivágásához Data Source View (DSV) objektumot kell létrehoznunk. A DSV lehetőséget ad számított oszlopok definiálására is, így akár bővíthetjük is az adatszerkezetünket.

A bemeneti adatok meghatározása után a következő lépés a két legfontosabb objektum, a Mining Structure és azon belül a Mining Model létrehozása. A Mining Structure objektumban írjuk le, hogy a bemeneti adatokat hogyan kívánjuk használni: itt adjuk meg például az egyes oszlopok adattípusát (szám, szöveg, dátum stb.), a tárolt adatok típusát (folytonos, diszkrét stb.), eloszlását (normál, logaritmikus stb.) és célját (bemenet, jóslandó stb.). Mindezek a paraméterek jelentősen befolyásolják a választott algoritmus működését, melyet a struktúrához rendelt modellben határozunk meg és paraméterezünk fel.

Ha megvan a modell, be kell tanítanunk azt, amit a modell feldolgozásának (Process) is neveznek. Az SQL Server 2008 újdonsága, hogy nem kell külön tanító és tesztelő adatokat biztosítanunk, elég megadnunk, hogy a bemeneti adatok hány százalékát használja a rendszer tesztelésre – ez az ún. holdout és tipikusan 30%.

A betanított modell már használható, futtathatunk lekérdezéseket rajta. Előtte azonban célszerű megvizsgálni, hogy a modellünk mennyire sikerült jól. A modell pontosságának meghatározását a BIDS vizuális eszközökkel támogatja, Lift Chart, Profit Chart, Scatter Plots típusú diagramok és Classification Matrix áll rendelkezésünkre. További segítség az SQL Server 2008-ban bevezetett Cross Validation funkció, amely a tanító és tesztelő adathalmazok partícionálásával és forgatásával segíti a modell megbízhatóságának meghatározását.

Miután megbizonyosodtunk a modellünk helyességéről, bevethetjük éles használatra. Ennek legegyszerűbb változata, ha közvetlenül a BIDS eszközeivel végzünk lekérdezéseket a modellen. Hasonló grafikus eszközöket találunk a Management Studioban is, de akár Reporting Servicesből, Excelből és Visioból is kapcsolódhatunk a modellhez.

Első lépések

Célszerű letölteni a hivatalos AdventureWorks példa adatbázist és a hozzá tartozó Analysis Services projektet. Az SQL2008.AdventureWorks_DW_BI_v2008.x86.msi telepítése után a C:Program FilesMicrosoft SQL Server100ToolsSamplesAdventureWorks 2008 Analysis Services ProjectenterpriseAdventure Works DW 2008.dwproj fájlra duplán kattintva megnyithatjuk azt BIDS-ben. Megnyitás után a Build Deploy menüpontot választva telepíthetjük a projektet a helyi SSAS kiszolgálónkra és megnézhetjük a modellek eredményeit.

Jó tudni

Az AdventureWorks példa projekt a helyi SQL példány AdventureWorksDW2008 adatbázisát használja adatforrásként. A projektben bekonfigurált data source objektum Impersonation beállításai között az alapérték a Use the service account. Ez azt jelenti, hogy ha alapértelmezett beállításokkal telepítettük az Analysis Servicest és a Local Service felhasználó nevében fut a szolgáltatás, akkor a Local Service felhasználót be kell engednünk az SQL Server Database Engine AdventureWorksDW2008 adatbázisába, különben a projekt feldolgozásakor hibaüzenetet fogunk kapni.

Demó

A demóban az AdventureWorks példa adatbázisban található ügyfél adatok alapján határozzuk meg azokat a tulajdonságokat, amelyek legjobban befolyásolják az ügyfeleink vásárlási szokásait. Ehhez létrehozunk egy új projektet a Business Intelligence Development Studioban, majd a Microsoft Decision Trees algoritmus felhasználásával építünk modellt az adatokra. A kész modell pontosságát Lift Chart, Profit Chart és Classification Matrix segítségével ellenőrizzük. Az elemzés eredményét a BIDS beépített Tree Viewere segítségével jelenítjük meg, majd grafikus eszközök felhasználásával kérdezzük le az elkészült modellt.

A videó a képre kattintva megtekinthető böngészőben vagy a kép alatti linkre kattintva letölthető:

Kampányelemzés Business Intelligence Development Studioval - screencast

Letöltés: Kampanyelemzes_BIDS_segitsegevel_(Balassy_Gyorgy).wmv (21:51, 87 631 KB)

További információk

 

Reklámok

Microsoft Security Intelligence Report 1H08

Megjelent a Microsoft Security Intelligence Report ötödik kötete, amely a 2008. január és június között gyűjtött adatokat összesíti és elemzi. Nem különösebben szórakoztató olvasmány, de van benne néhány érdekesebb fejezet.

Akit csak a Microsoft által levont következtetések érdekelnek, az talál egy három grafikonos “highlights” összefoglalót a Microsoft weboldalán, aki viszont mélyebben érdeklődik a téma iránt, annak mindenképp érdemes letölteni a 150 oldalas PDF-et vagy a 18 oldalas Key Findings Summary-t.

Vannak általános adatok, például hogy csak a Malicious Software Removal Tool, ami minden hónapban ott virít a Windows Update-en letakarított közel 24 millió számítógépet világszerte. Szép szám, pedig nem egy profi vírusírtóról beszélünk!

Aztán itt egy érdekes adat írról, hogy a Vista mennyivel szebben muzsikál:

CCM (number of computers cleaned for every 1,000 MSRT executions), by operating system, 1H08

Szintén érdekes, hogy mennyire nem szokás figyelembve venni a fizikai biztonságot:

Security breach incidents by type, expressed as percentages of the total, 2H07 and 1H08

Látszik az is, hogy mennyire vagyunk betegek, minden második spam erre hajt:

Inbound messages blocked by Exchange Hosted Services, by category, 1H08

Nem is értem, ki mer interneten keresztül ismeretlen gyógyszereket venni?! Bár ha belegondolok abba, hogy amit a sarki patikában veszek, az is teljesen ismeretlen…

Aztán van külön Magyarországra vonatkozó kimutatás is, 12.5%-kal rosszabbak vagyunk, mint az előző félévben. Szomorú. Íme az összetétel:

Malware and potentially unwanted software in Hungary, by category, in 1H08

A szöveges részből kiderül, hogy nálunk olyan szörnyek is dominálnak, amelyek világméretekben még a legszámottevőbb 25 között sincsenek. Például mert régiek vagy mert IRC-n terjednek.

Vajon elégedettek lehetünk?

 

Technorati Tags:

Induló Készletek újratöltve

Az MSDN Kompetencia Központ munkatársai az elmúlt években számos induló készlet összeállításával segítették a megjelenő fejlesztői technológiák elsajátítását. Ezeket korábban a devportal.hu szerverén lehetett megtalálni, de mivel ott a tartalom átszervezésével sok link törötté vált és továbbra is sokan keresitek rajtunk ezeket az anyagokat, kézbe vettük a probléma megoldását.

Az MSDN Kompetencia Központ honlapjára feltöltöttük az összes eddigi induló készletünk anyagát. Minden anyag közvetlenül letölthető, nincs többé lassú streaming media, offline módon is megtekinthetők az előadások. Jelenleg az alábbi csomagok érhetőek el:

Sokan kértétek, hogy ismét tegyük közzé a Blog és az AutoShop példaalkalmazásokat, ezek most ismét letölthetővé váltak az ASP.NET Induló Készlet oldaláról a hozzájuk kapcsolódó útmutatókkal együtt. Szintén többen kértétek a CDShop példa alkalmazás kódját, ez is letölthető.

Az induló készletek teljes listája megtalálható a http://www.msdnkk.hu/InduloKeszlet címen. Természetesen ezzel nincs vége, hamarosan újabb adaggal jelentkezünk!

 

C# programozás állásinterjú kérdések

Tegnap volt szerencsém egy hazánkban is fejlesztőket foglalkoztató multi állásinterjúkon alkalmazott C# tesztsorával egészen közelről megismerkedni. 12 papíron megválaszolandó kérdés, a szintidő 40 perc. Meg tudod oldani?

A teszt eredetileg angol, a fordítás tőlem származik.

1. Mire jó a new kulcsszó?

2. Írjon kódot, amelyben definiál egy eseményt (event), feliratkozik rá egy metódussal, elsüti az eseményt, majd leiratkozik róla!

3. Nevezzen meg négy hozzáférés módosítót (access modifier) és magyarázza meg a jelentésüket! Van-e ötödik?

4. Mi a különbség az absztrakt osztály és az interfész között elsősorban implementáció és öröklés szempontjából?

5. Írjon kódot, amelyben:

  • Definiál egy IDoSomething interfészt egy f() metódussal.
  • Definiál egy IDoSomethingElse interfészt egy f() és egy g() metódussal.
  • Készítsen egy osztályt, amelyikben implementálja az IDoSomething és az IDoSomethingElse interfészeket úgy, hogy mindegyik metódus kiírja a konzolra a az interfész és a metódus nevét.
  • Készítsen egy példányt az osztályból és hívja meg a metódusait.

6. Nevezzen meg legalább négy különbséget az érték típus és a referencia típus között!

7. Mi a reflexió (reflection), mikor használatos, mik az előnyei és a hátrányai?

8. Írja le, hogyan működik a szemétgyűjtő (garbage collector)!

9. Az alábbi egy Windows Forms vezérlő kódjának a részlete. A btnOK_Click metódus a felhasználói felületen található gombhoz rendelt eseménykezelő, az AsyncCallback pedig egy háttérben másik szálon futó művelet végén a rendszer által meghívott callback metódus. Helyes-e így az implementáció és ha nem, akkor hogyan lehet javítani?

    public class MyControl : Control
    {
        //...

        void UpdateTextBox()
        {
            this.txtName.Text = DateTime.Now.ToString();
        }

        void btnOK_Click( object sender, EventArgs e )
        {
            this.UpdateTextBox();
        }

        void AsyncCallback( IAsyncResult result )
        {
            this.UpdateTextBox();
        }
    }

10. A 9. feladatban bemutatott kód alábbiak szerint módosított változatával sikerült-e kijavítani a hibát? Lehetséges-e deadlock a kódban és ha igen, mikor?

        void btnOK_Click( object sender, EventArgs e )
        {
            lock( this )
            {
                this.UpdateTextBox();                
            }
        }

        void AsyncCallback( IAsyncResult result )
        {
            lock( this )
            {
                this.UpdateTextBox();
            }
        }

11. Mit ír ki:

    using System.Threading;

    namespace ThreadSample
    {
        class Program
        {
            public static int i;

            public static void ThreadProc()
            {
                System.Console.WriteLine( i++ );
            }

            static void Main( string[] args )
            {
                for( int i = 0; i < 4; i++ )
                {
                    Thread t = new Thread( new ThreadStart( ThreadProc ) );
                    t.Start();
                }
            }
        }
    }

12. Mit ír ki:

    using System;

    namespace CtorSample
    {
        class Base
        {
            public Base()
            {
                Console.WriteLine( "Base()" );
            }

            static Base()
            {
                Console.WriteLine( "static Base()" );
            }
        }


        class Child : Base
        {
            public Child()
            {
                Console.WriteLine( "Child()" );
            }

            static Child()
            {
                Console.WriteLine( "static Child()" );
            }
        }


        class Program
        {
            static void Main( string[] args )
            {
                Child b = new Child();
            }
        }
    }

És ez csak a teszt volt. Érdekel valakit, hogy miről beszélgettünk még utána például SQL témában?

A Mit ír ki kérdések kódjait letölthetővé tettem (ThreadSample, CtorSample), ki lehet próbálni!

 

További interjú kérdések találhatók az alábbi címeken:

 

Technorati Tags: ,,

Előrejelzés készítése Business Intelligence Development Studioval – screencast

Komplex adatbányászati feladatok megoldásához a Microsoft a Business Intelligence Development Studiot (BIDS) ajánlja. A BIDS a Visual Studio 2008 testreszabott változata, melyet az SQL Server 2008-cal együtt telepíthetünk akár a kiszolgálóra, akár munkaállomásra, és amely fel van készítve Analysis, Integration és Reporting Services projektek fejlesztésére.

Áttekintés

Egy Analysis Services Projectben az első lépés egy Data Source objektum létrehozása. A data source segítségével határozzuk meg azt az adatforrást, amellyel dolgozni fogunk, ehhez a varázslóban az adatok helyét és a kapcsolódáshoz használt felhasználói fiókot kell megadnunk. Az adatforrás bármilyen OLE DB-n vagy .NET-es adat szolgáltatón (provider) keresztül elérhető adatbázis lehet, tehát – a közhiedelemmel ellentétben – nem csak OLAP kockákon tudunk adatbányászati műveleteket végezni, hanem relációs adatokon, Access adatbázisokon vagy akár Excel munkalapokon is.

Az adatforrások komplex adatszerkezetek, melyeknek általában csak egy részhalmazára van szükségünk az adatbányászati feladatunk megoldásához. Azonosítanunk kell tehát azt a táblát, amely az elemzendő eseteket tartalmazza (case table), azon belül azokat a sorokat és oszlopokat, amelyek valóban relevánsak, továbbá azokat a kapcsolódó táblákat, melyek még szükségesek a probléma megoldásához. A teljes adatforrás egy részének ilyen formán történő kivágásához Data Source View (DSV) objektumot kell létrehoznunk. A DSV lehetőséget ad számított oszlopok definiálására is, így akár bővíthetjük is az adatszerkezetünket.

A bemeneti adatok meghatározása után a következő lépés a két legfontosabb objektum, a Mining Structure és azon belül a Mining Model létrehozása. A Mining Structure objektumban írjuk le, hogy a bemeneti adatokat hogyan kívánjuk használni: itt adjuk meg például az egyes oszlopok adattípusát (szám, szöveg, dátum stb.), a tárolt adatok típusát (folytonos, diszkrét stb.), eloszlását (normál, logaritmikus stb.) és célját (bemenet, jóslandó stb.). Mindezek a paraméterek jelentősen befolyásolják a választott algoritmus működését, melyet a struktúrához rendelt modellben határozunk meg és paraméterezünk fel.

Ha megvan a modell, be kell tanítanunk azt, amit a modell feldolgozásának (Process) is neveznek. Az SQL Server 2008 újdonsága, hogy nem kell külön tanító és tesztelő adatokat biztosítanunk, elég megadnunk, hogy a bemeneti adatok hány százalékát használja a rendszer tesztelésre – ez az ún. holdout és tipikusan 30%.

A betanított modell már használható, futtathatunk lekérdezéseket rajta. Előtte azonban célszerű megvizsgálni, hogy a modellünk mennyire sikerült jól. A modell pontosságának meghatározását a BIDS vizuális eszközökkel támogatja, Lift Chart, Profit Chart, Scatter Plots típusú diagramok és Classification Matrix áll rendelkezésünkre. További segítség az SQL Server 2008-ban bevezetett Cross Validation funkció, amely a tanító és tesztelő adathalmazok partícionálásával és forgatásával segíti a modell megbízhatóságának meghatározását.

Miután megbizonyosodtunk a modellünk helyességéről, bevethetjük éles használatra. Ennek legegyszerűbb változata, ha közvetlenül a BIDS eszközeivel végzünk lekérdezéseket a modellen. Hasonló grafikus eszközöket találunk a Management Studioban is, de akár Reporting Servicesből, Excelből és Visioból is kapcsolódhatunk a modellhez.

Első lépések

Célszerű letölteni a hivatalos AdventureWorks példa adatbázist és a hozzá tartozó Analysis Services projektet. Az SQL2008.AdventureWorks_DW_BI_v2008.x86.msi telepítése után a C:Program FilesMicrosoft SQL Server100ToolsSamplesAdventureWorks 2008 Analysis Services ProjectenterpriseAdventure Works DW 2008.dwproj fájlra duplán kattintva megnyithatjuk azt BIDS-ben. Megnyitás után a Build à Deploy menüpontot választva telepíthetjük a projektet a helyi SSAS kiszolgálónkra és megnézhetjük a modellek eredményeit.

Jó tudni

Az AdventureWorks példa projekt a helyi SQL példány AdventureWorksDW2008 adatbázisát használja adatforrásként. A projektben bekonfigurált data source objektum Impersonation beállításai között az alapérték a Use the service account. Ez azt jelenti, hogy ha alapértelmezett beállításokkal telepítettük az Analysis Servicest és a Local Service felhasználó nevében fut a szolgáltatás, akkor a Local Service felhasználót be kell engednünk az SQL Server Database Engine AdventureWorksDW2008 adatbázisába, különben a projekt feldolgozásakor hibaüzenetet fogunk kapni.

Demó

A demóban az AdventureWorks példa adatbázisban található értékesítési adatok alapján határozzuk meg egy adott termék értékesítésének várható alakulását az elkövetkezendő időszakra. Ehhez létrehozunk egy új projektet a Business Intelligence Development Studioban, majd a Microsoft Time Series algoritmus felhasználásával építünk modellt az idősoros adatokra. A kész modellen a BIDS valamint az SQL Server Management Studio segítségével grafikusan, majd pedig parancssorból, Data Mining Extensions (DMX) nyelvű lekérdezéseket futtatunk. A videó a képre kattintva megtekinthető böngészőben vagy a kép alatti linkre kattintva letölthető:

Előrejelzés készítése Business Intelligence Development Studioval - screencast

Letöltés:

További információk

 

Gondolatok a PDC-ről

Aki az elmúlt héten követte a Microsoft háza tájáról érkező híreket biztosan tapasztalta, hogy a Los Angelesben tartott Professional Developer Conference (PDC) idején számos újdonságot jelentett be a cég. Megint beindult a “szőnyegbombázás”, nagy rakás új technológia hullott a fejünkre.

Sajnos nem voltam ott a rendezvényen, blogokból és sajtóhírekből tájékozódom. Magyar nyelven a devPortalon jelent meg néhány hír és Kőnig Tibi blogja próbálta követni az eseményeket. Angolul első sorban a The Region oldal bizonyult jó forrásnak, itt ugyanis a Microsoft regionális igazgatók blogjainak szűrt összesítése tömören áttekinthetővé tette a lényeget.

Az írások általában egy-egy termékkel vagy technológiával foglalkoznak, Tibor például nagyon részletesen írt az Azure-ról, ezúton is köszönet érte. Külön örültem Stephen Forte Thoughts from the PDC című blogbejegyzésének, ez ugyanis a trendeket próbálja összesíteni, érdemes elolvasni, még ha feltételezéseken alapul és személyes is. Aki a nagy testvérnél közel van a tűzhöz igazán megmondhatná, hogy mit gondol igaznak ebből…

Két dolog ragadott meg különösen, nem csak ebből a blogból, hanem más forrásokból is. Az egyik, hogy megint szeretjük majd a Windowst. Ez például tetszett:

“Windows is sexy again to develop on. Forget about Vista, that never happened. Our bad.” 🙂

A másik, hogy a Silverlightot nem lehet kihagyni, neki is fogok esni Csala Péter videóinak a devPortalon. Kicsit szkeptikus vagyok az eszköztámogatás hiánya miatt, és kíváncsi vagyok, hogy Nacsa Sanyi Silverlight cikksorozata kitér-e majd erre a kérdésre. Hogy a technológia ütős, afelől nincs kétségem, az olimpia közvetítés is bizonyította.

A harmadik fontos újdonságnak a cloud computingnak kellene lennie, de bevallom, ez még nem hoz lázba. Majd ha minden eljut RTW státuszba, és a Föld megkerüli még vagy háromszor a Napot és ezek a szolgáltatások kis hazánkban is elérhetőek lesznek, talán majd akkor…

Ti mit gondoltok, mit hallottatok?

 

Technorati Tags: ,,,

SQL Server Analysis Services adatbázisok mentése és visszaállítása – screencast

Az SQL Server Analysis Services adatbázisainak mentésével és visszatöltésével kapcsolatos műveletek az SQL Server Management Studioból grafikusan, vagy akár szkriptből is elvégezhetőek. Bár ez utóbbi esetben Analysis Services Scripting Language (ASSL) formátumú XML-t kell írnunk, nem kell megijednünk a feladattól, messze nincs annyi opció, mint hagyományos SQL adatbázisok mentése esetén.

Íme a mentést végző szkript, melynek kimenete egyetlen .abf (Analysis Services Backup File) fájl:

    <Backup xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
        <Object>
            <DatabaseID>Bikes</DatabaseID>
        </Object>
        <File>D:BackupBikes.abf</File>
        <AllowOverwrite>false</AllowOverwrite>d
        <ApplyCompression>true</ApplyCompression>
        <Password>T1tko5jel52o!</Password>
        <Security>CopyAll</Security>
    </Backup>

A visszaállítás nagyon hasonló, csak a Backup helyett a Restore elemet kell használnunk:

    <Restore xmlns="http://schemas.microsoft.com/analysisservices/2003/engine">
        <File>D:BackupBikes.abf</File>
        <DatabaseName>Bikes</DatabaseName>
        <AllowOverwrite>true</AllowOverwrite>
        <Password>T1tko5jel52o!</Password>
        <Security>CopyAll</Security>
        <DbStorageLocation xmlns="http://schemas.microsoft.com/analysisservices/2008/engine/100/100">
            D:Data
        </DbStorageLocation>
    </Restore>

Első lépések

SQL Server Management Studioban bármelyik adatbázison jobb egérgombbal kattintva választhatunk a Back Up és a Restore opciók közül. A megjelenő ablakban a paraméterek beállítása után közvetlenül kattinthatunk az OK gombra, vagy a Script Script Action… gombra kattintva legenerálhatjuk azt a szkriptet, amelyet később a példa programok között található ascmd.exe segítségével futtathatunk.

Jó tudni

Bár mentés esetén az ApplyCompression és a Password elemek megadása opcionális, ha elhagyjuk, az adatbázisban lévő Data Source objektumoknál megadott Connection String kódolatlanul kerül a fájlba, azaz bárki elolvashatja az adatforrásokhoz történő kapcsolódáshoz használt jelszót.

Figyeljünk oda a jogosultságok visszaállítására (ld. Security elem), mert előfordulhat, hogy ha a mentés idején még nem rendelkeztünk rendszergazdai joggal az adott adatbázisban, most a visszaállítás után nem fogunk tudni hozzáférni az adatainkhoz.

Demó

A demóban áttekintjük az SQL Server Management Studio mentési és visszaállítási szolgáltatásait, valamint kitérünk a szkriptelési lehetőségekre és az ascmd.exe használatára. A videó a képre kattintva megtekinthető böngészőben vagy a kép alatti linkre kattintva letölthető:

SQL Server Analysis Services adatbázisok mentése és visszaállítása - screencast

Letöltés: SSAS_adatbazisok_mentese_es_visszaallitasa_(Balassy_Gyorgy).wmv (16:28, 66 871 KB)

További információk