Anvisningar för projektarbete och dokumentation (v3-v10) Anteckna (för egen del) vilka medlemmar som ingår i din grupp. Se till att samma uppgifter är mejlade till kursansvarig jesper.hakerod@hh.se senast kl 17:00 efter kursintroduktionen. Gruppnamn: E-post till kontaktperson: Utsedd kontaktperson: Förnamn Efternamn Personnummer Gärna telefon Projektdelen (3p) bygger på de nyckelkoncept som tagits upp tidigare i kursen och utgörs av ett praktiskt projekt där Ni är tre till fyra studenter i varje grupp. Ni ska utveckla en BI-lösning efter styrd idé, där ett specifikt antal nyckelkoncept måste användas. Projektet inkluderar även en dokumentation där ni redovisar bland annat hur de olika nyckelkoncepten använts i ert projekt. Vidare skall Ni dokumentera utifrån de rubriker som föreslås lite senare i detta pm. I många projekt är processerna under systemutveckling mycket viktiga. Kvaliteten är till stor del beroende av att ha bra processer under systemutvecklingen. För att ha en möjlighet att göra bra ifrån sig under arbetets fortskridande är det bra att ha ett strukturerat tillvägagångssätt. Det är viktigt med en klar och genomgående designidé där tankearbetet kan följas på papper med hjälp av metoder och verktyg t.ex. mappningsschema, databasskisser, pappersprototyper etc. Ni ska kunna visa att Ni analyserat och bearbetat de problem som finns i projektet och lösa dessa på ett strukturerat sätt och undvika att tekniken styr Er design i alltför stor grad. Titta gärna på Microsofts BI-webb: http://msdn.microsoft.com/en-us/library/ms173767(sql.90).aspx På Microsofts teknikwebb finns mycket hjälp om själva verktyget: http://msdn.microsoft.com/en-us/library/ms130214.aspx 2
Inlämning: Färdig BI-lösningen lämnas in och vara körbar i de verktyg Ni har till förfogande till (MS SQL Server 2005) och all källkod (hela mappen) skall inkluderas. Bakgrund: Företaget Bike (i Jeeves) har som många andra företag under året börjat känna av de sämre ekonomiska tiderna och styrelsen vill göra en bättre analys med hjälp av sina nyckeltal för att följa upp verksamheten. De har investerat i senaste versionen av affärssystemet Jeeves Universal men de har också andra typer av system sedan tidigare som de vill ta med i dataunderlaget och de vill kunna se trender i vad som händer i ett större och bredare perspektiv än med bara informationen som finns i Jeeves. De inser också att ju tidigare man har information, desto tidigare kan man sätta in korrigeringsåtgärder t.ex. genom ökad marknadsföring eller justeringar i sortimentet för att bättre anpassa sig mot marknadens krav. Därför har de valt att satsa på ett BI-projekt, de har också valt att ha kompetensen inom företaget, vilket innebär att Ni fått uppdraget att leverera en BI-lösning. Scenario: Det som skall göras är att ifrån Jeeves interna databaser skall man extrahera ut historiska order, nuvarande order och befintliga offerter som ligger ute, dessa skall kombineras med uppgifter på inkomna men ej registrerade orders från säljare som reser runt. Säljarna registrerar dessa i ett Excelark, datakvaliteten är dock är oftast mycket låg, man skriver fel kundnummer, fel datumformat m. fl. då de har inte någon online uppkoppling för sitt system. Samtidigt är datan viktig då detta är de senaste uppgifterna (order från aktuell vecka). Säljarna antecknar även uppgifter som de snappar upp t.ex. missnöje med produkterna eller information om andra konkurrerande leverantörer t.ex. nya kampanjer eller erbjudande. Informationen från dessa datakällor skall sammanställas, ev. aggregeras och rensas och läggas (så kallad ETL extract, transform, load) i en data warehouse databas. Nedanstående skiss ser Du en schematisk skiss över BI-lösningen med datakällor och rapportdelen. 3
Jeeves orders Reporting Services Dataware house Jeeves offerter Excelark Excelark från säljare Övrigt: Ni får en kopia av Jeeves databas av oss, som Ni kan utgå ifrån. Det finns ett företag företagskod 9998 som innehåller en del transaktionsdata som Ni kan använda. Det kommer inte att finnas något gränssnitt (Jeeves klient) för denna databas, utan Ni får logga in på ordinarie Jeeves Universal i så fall för att kunna se hur datan presenteras. Det finns även hjälpfiler som kan vara behjälpliga för er analys. Dokumentation Den bör på ett klart och tydligt sätt redogöra för hur ni har gått tillväga i ert utvecklingsarbete. De viktigaste valen (metodmässigt, systemutvecklingsmässigt, testning, tekniskt etc.) ska argumenteras för och vara kopplade till lämplig litteratur. Det ska klart och tydligt framgå att det finns teori i form av litteraturstudier kopplat till dokumentationen. Dokumentation bör därför behandla följande huvudavsnitt (exempel på upplägg). 4
Detaljer som skall vara med: Jeeves databas, o En databas kommer att finnas tillgänglig för Ert bruk och gör Ni förändringar vid överföring av data skall det finnas en förteckning över vilka fält, datatyper m.m som förändrats, förklara vad dessa förändringar har för syfte. Mappningar Excelark (om vi hinner), ett ark för registrering av orderuppgifter som säljaren har med sig på sina resor. Detta skall innehålla uppgifter som är väsentliga för en order, uppgifter om kan inhämtas från Jeeves hjälp eller genom att studera Jeeves gränssnitt. Det rör sig om 5-10 fält och dessa kan vara enkla strängfält utan formatering. Vid ETL av datawarehouse skall Ni använda funktioner för att rensa dessa fält förslagsvis en lookup och en datumformatering. Jeeves BI-databas med dokumentation o Modell (Star-, Snowflake, flat argumentera för val) o denormaliseringsgrad o varför o förteckningar fält (data dictionary) o aggregeringar, hur är dessa sammansatta? o ETL flödesschema Rapporter generade utifrån denna BI-databas. Metoder för datarensning Metadataförteckning o Ursprungsfält o Tidsstämplar o Aggregering Metoder för felhantering Delredovisning 1 Två grupper kommer att få presentera sina projekt vilket lottas i början av redovisningen. Ni som deltar uppmanas till att ställa frågor och bidra med egna erfarenheter. Vid första redovisningstillfället ska ni muntligen kunna presentera ert projekt och även lämna in en kort sammanfattning av ert arbetes status fram till 5
redovisningsdatumet. Dokumentationen som lämnas in skall, förutom formalia på försättsbladet (se anvisningar för delredovisning 4 för namnuppgifter, etc) innehålla: Namn + pnr på samtliga deltagare på försättsblad en databasmodell över er måldatabas (så den ser ut nu) data dictionary för entiteter, relationer och attribut Delredovisning 2 (Slutredovisning) Färdig BI-lösning visas upp och presenteras i sin helhet. Vidare skall även all dokumentationen överlämnas till kursledare på CD/DVD skiva med projektet. Varje grupp har 20 min på sig att redovisa. Ni bör nu även kunna redogöra för: mappningsdiagram ETL process flow diagram (t ex skärmdumpar av era controlflöden, samt data flow diagram) Rapporter Observera att inlämnat material skall vara märkt med kursnamn, gruppnamn, inlämningsdatum, fullständiga namn, mailadresser och personnummer för samtliga deltagare. Bedömningskriterier och examination För projektet kan ni erhåll betyget U-G. Kravet är att ni fullföljt alla kraven som ställts upp ovan. Lycka till! Jesper & Torben 6
Bilaga: Erfarenheter ifrån labbar i databashantering och beslutsstöd Måldatabasen som ni konstruerat har stor potential att generera fel om den inte konstrueras med stor omsorg. Några aspekter som ni kan kontrollera i designläget för era tabeller när ni är inne i SQL server Management Studio är att: alla attribut i tabellen tillåter nullvärden. Se till att kryssa för allow nulls för alla fälten i er tabell eftersom Jeeves10 innehåller null-värden för en hel del attribut. Det går aldrig att sätta allow nulls för en primärnyckel vilket innebär att ni får lösa detta med en ny primärnyckel en sk surrogatnyckel. Ni skapar alltså en ny primärnyckel (oftast numerisk eftersom den är snabbast, välj tex datatypen int) och tar därefter bort den gamla så att ni kan kryssa allow nulls för den. Nu kan ej nullvärden sätta stopp för överföringen av data till denna tabell. datatyperna för mappning mellan källdatabas och måldatabas måste vara exakt likadana. Håll musmarkören på fälten som ni ser i mappningsschemat. Ni får upp information om datatyp, längd och codepage, etc. Jämför datatyperna för källdatabas och måldatabas så att de är exakt likadana. Är det inte likadana måste måldatabasens datatyp ändras så att den blir exakt likadan. Detta arbete är väldigt tidsödande om det görs i efterhand. Ett bättre sätt är att vid konstruktion av måldatabasen utgå ifrån ett framarbetat data dictionary där källdatabasens datatyper i stort sett styr den datatyp som är lämplig för samma attribut i måldatabasen (givet att det inte är meningen att datan ska konverteras till en annan datatyp under överföringen). Till exempel kan ni för ett ordernummer välja mellan smallint, int, bigint för att växla mellan 2-, 4- och 8-bitars integer jämför alltså med datatypen i Jeeves10 är den 8-bitars integer väljs datatypen bigint för motsvarande attribut i måldatabasen. Kontrollera även att teckenuppsättningen är lika, dvs att t ex codepage är typ 1252 för både källa och mål i mappade attribut. om det verkar strula med duplicate keys eller om poster verkar krocka med befintliga poster, kan ni testa att rensa bort allt gammalt skräp i måldatabasens tabeller som kan vara orsaken till krockarna och felen. Ni kan välja att skapa en New Query och där skriva SQLkommandot DROP FROM [tabellens namn] (glöm ej att slutligen köra frågan) för att slänga alla poster i den tabellen. 7
Några viktiga aspekter som är bra att känna till när ni arbetar i Visual Studio 2008 och arbetar med era flöden är att: när ni skapar dataflow och kör dem så körs alla dataflows oavsett vad ni markerat. Finns det fel i ett helt annat dataflow än det ni för tillfället arbetar i stannar körningen på grund av det andra datafödets fel. Håll med andra ord koll på fel i samtliga dataflow. Om ni vill lägga in en conditional split eller något annat kontrollobjekt i ert dataflow, kan ni markera och ta bort den befintliga gröna pilen ifrån källdatabasobjektet och därefter dra om den nya pilen till ett skapat conditional splitobjekt. Det är således enkelt att bygga om era flöden efter hand utan att era redan utlagda objekt i dataflödet försvinner. Per visade ett sådant exempel där företaget 9998 skulle selekteras ut och där villkoret foretagkod==9998 lades in i en conditional split. Kika i processfliken om fel uppstår för att få vägledning i vad felet kan bero på. Till sist kan det vara bra att nämna lite om hur ni gör felsökningen mycket lättare genom att närma er den färdiga lösningen successivt genom att börja med några få attribut - och om detta fungerar bra - successivt öka på komplexiteten med allt fler attribut. Skapa t ex ett dataflow för överföring av offerter ifrån Jeeves, ett annat dataflow för att överföra ordrarna, ett tredje dataflow för att föra över säljarnas exceldata, ett fjärde för att sammaställa faktatabellen i er data warehouse om ni använder starmodell för er måldatabasdesign. Eftersom ni använder er av star-modellen för er databasdesign kan det vara bra att kika i motsvarande kapitel i kurslitteraturen eller i Connolly & Begg för att få mer kött på benen kring konstruktion av olika dimensionstabeller och faktatabellen, inte minst avseende behov av surrogatnycklar. 8