fredag 19 februari 2010
Vem ska använda QlikView?
Min erfarenhet när det gäller valet av QlikView som verktyg framför en traditionell OLAP-lösning baseras på det agila tankesättet att snabbt kunna leverera lösningar på nya krav från användarna. QlikView möjliggör detta genom att, med bibehållen prestanda, lagra stora mängder data på detaljnivå samt tillåta avancerade beräkningar i gränssnittet. Just möjligheten att göra avancerade beräkningar med kalkylerade dimensioner och hierarkier i gränssnittet gör att kravet på QlikView-användaren är högre än i en traditionell OLAP-lösning där nyckeltal, hierarkier m.m. görs av utvecklaren i kuberna. Arbetsuppgiften att beräkna nyckeltalen har delvis flyttats till slutanvändaren vilket ökar risken för att QlikView-användaren gör felaktiga beräkningar av bl.a. nyckeltal och hierarkier som kan leda till felaktiga beslut för företagets framtida satsningar. För att undvika detta så måste QlikViewanvändaren besitta rätt kompetens och bakgrund. En IT-ekonom med kompetens om datamodeller är som klippt och skuren för att ta rollen som QlikViewanvändare.
I vårt fall finns det stora behov av att kunna korsköra resultat ur olika stjärnmodeller. Ett exempel är att titta på alla kunder som har besökt vissa sidor i en webbapplikation (stjärnmodell 1) under en viss period och titta på hur mycket och vilka produkter de har köpt (stjärnmodell 2) före och efter besöken på sidorna. På detta sätt kan man dra vissa slutsatser om hur olika budskap på de besökta sidorna kan påverka inköpen. Dessa korskörningar kräver att användaren har förståelse för hur data hänger ihop så kunskap om datamodeller är av stor vikt för att lyckas med denna korskörning. I ovanstående fall så skulle en marknadsanalytiker på marknadsavdelningen för nya medier med kunskap om datamodeller kunna få fram intressanta resultat genom att använda QlikView som verktyg, och det genom att ad-hoc komma fram till på vilket sätt han/hon vill kategorisera data.
QlikView är ett utmärkt verktyg att använda i en förstudiefas hos marknadsavdelningen där exempelvis kunder ska kategoriseras i olika grupper för en CRM-lösning. Ett exempel kan vara analytisk CRM där QlikView är en del i arbete med att sätta kundgrupper som sedan kan existera över en viss tidsperiod i ett CRM-system. Mer statistisk rapportering bör ske på andra sätt än med QlikView där icke avancerade användare får information. En sådan lösning som inte kräver ständiga förändringar utan utgör en del i en rapporteringsplattform hanteras givetvis bäst av en traditionell OLAP-lösning.
måndag 14 september 2009
QlikView AGGR() vs SUM(TOTAL)
I diagrammet nedan har vi två dimensioner: År och kundnummer.
Uttrycken i diagrammet visar följande:
- sum(pris): en vanlig summering av pris på de varor som varje kund har köpt år 2001.
- AGGR(NODISTINCT sum(pris),År): Summerar pris på de varor som alla 5 kunder har köpt år 2001.
- sum(total <År> Pris): Summerar pris på de varor som alla 5 kunder har köpt år 2001, d.v.s samma som uttryck 2.
sum(pris)/sum(total <År> Pris)

tisdag 19 maj 2009
QlikView Set-analys är en kioskvältare!
Jag har testat denna set-analys och så här långt så fungerar det mycket bra och håller vad som lovas av leverantören. Ett exempel på hur jag har använt set-analysfunktionen är följande:
Exempel ur verkligheten
I ett och samma diagram ska jämförelser göras mellan olika försäljningsställen på olika nyckeltal. Ibland vill man jämföra en vecka mot en annan eller flera veckor mot varandra. Ibland vill man jämföra tre veckor mot tre andra. Veckorna ska vara valfria så att användaren kan jämföra exempelvis vecka 200915 mot 200913 och nästa gång 200915 och 200916 mot 200913 och 200914. I detta exempel så behöver man göra urval av två olika tider i ett och samma diagram, where-villkoren görs i uttrycken. Detta kan man lösa genom att lägga till en tabell som innehåller veckor och som endast fungerar som input i form av en variabel till urvalet i uttrycket. Ingen koppling av dessa veckor till någon annan tabell i QlikView, endast en fristående tabell som fungerar som en jämförelsetabell.
De två nyckeltalen som ska jämföras är försäljning och ställs upp enligt följande uttryck:
- sum(försäljning): Uttrycket räknar ut försäljning per försäljningsställe för aktuella val. Detta är ett vanligt enkelt uttryck.
- sum({$<Vecka={$(=(GetFieldSelections(Jämförelsetid.Vecka)))},Årtal=,Månad=>}[försäljning]): Uttryck med set-analys.
I uttryck nr.2 så nollställs urvalen Årtal och Månad. För att välja nya veckor för uttryck nr 2 så väljs Jämförelsetid.Vecka i en urvalslista som fungerar som ett nytt urval av veckor till fältet Vecka. Lägg märke till $ som betyder att det är en parameter innehållande värden som utgör ett nytt urval och funktionen GetFieldSelections som tar ut värdena från urvalet i den fristående tabellen Jämförelsetid.Vecka. Sedan kan uttryck nr 1 och 2 ingå i andra uttryck för att räkna på differenser, rankingar osv. På detta sätt får man en mycket flexibel hantering av olika jämförelser som inkluderar aktuell vecka i jämförelse med föregående vecka eller samma vecka föregående år osv.
Mycket imponerande prestanda i dessa funktioner som på flera hundra miljoner rader endast tar ett par sekunder att beräkna.
Slutsatsen är att Set-analys är en mycket bra funktion som gör att användaren själv kan skapa sina jämförelser och inte behöver involvera IT-avdelningen i speciellt stor utsträckning.
tisdag 31 mars 2009
CDC eller Streams AQ
CDC är ett enkelt sätt att fånga förändringar i källsystemens tabeller och sedan propagera dessa till datalagret eller integrationshubben för bearbetning via förändringsvyer. DBMS_CDC-paketen är ett API ovanpå Streams AQ, dvs anrop till DBMS_CDC sätter upp köer, förändringstabeller osv (se tidigare inlägg om CDC). CDC är snabbt och relativt enkelt att sätta upp. CDC-paketen kom senare och frågan är om CDC alltid kan användas eller om det finns situationer när det är bättre att sätta upp Streams AQ direkt?
Enligt min mening så kan CDC användas i de fall när propagering av förändringar endast ska ske till ett ställe, s.k. punkt-till-punkt. Prenumeration på förändringar kan ske av flera användare på den mottagande sidan. Om data från källsystemen däremot ska propageras till flera ställen med många olika prenumeranter i flera databaser så är det bättre att sätta upp Streams AQ för att fånga förändringar och sedan propagera dessa till alla intressenter. Man kan med fördel använda Oracles egen Capture- och Applyprocess för att åstadkomma LCR (Logical Change Records) som skickas vidare till mottagande köer i olika databaser via meddelandetypen ANYDATA.
Fördelen med Streams i jämförelse med CDC är följande:
En utkö i källsystemet för vidare transport av förändringar istället för flera köer.
Propagering till flera olika databaser istället för punkt till punkt.
Kontroll på start av transaktioner att flytta över via SCN (System Change Number).
Skapa kanonisk xml direkt från LCR-meddelanden via paket.
Nackdelen med Streams i jämförelse med CDC:
- Tar längre tid att sätta upp
- Process för att ta hand om LCR-meddelanden på mottagande sida.
tisdag 21 oktober 2008
CDC - integrationshub och datalager
fredag 15 augusti 2008
Internetportal lanseras i början på september
onsdag 28 maj 2008
SOA och Masterdata
Införandet av en integrationshub (Enterprise MDM) med centraliserad data är ett första steg mot en lyckad integrationsarkitektur. I detta första steg finns mycket erfarenhet hos personer som har jobbat med datalager eftersom de stött på problemet med olika definitioner på samma begrepp i de källsystemen som integreras med datalagret.
Läs mer om masterdatahantering:
http://www.intelligententerprise.com/showArticle.jhtml?articleID=197004155&pgno=1
I nästa inlägg presenterar jag mina åsikter om datalagrets ETL-process och SOA.
