Upload
mili
View
56
Download
0
Embed Size (px)
DESCRIPTION
FIRST FRIDAY. Workshop – Analysemodell for vinanmeldelser Pål Hellesnes. Analysemodell for vinanmeldelser. Vi ønsker oss en gjenbrukbar BI løsning for rask og effektiv analyse av alle anmeldelser av nye viner som blir lansert ved et av vinslippene til Vinmonopolet. - PowerPoint PPT Presentation
Citation preview
Workshop – Analysemodell for vinanmeldelserPål Hellesnes
FIRST FRIDAY
Analysemodell for vinanmeldelser
Beste kjøp: Vi ønsker a finne det beste kjøpet i vår prisklasse Middagsvin: Vi ønsker å servere den beste vinen til gjestene våre Til kjelleren: Vi ønsker de beste kandidatene til å legge i kjelleren Vindistrikt: Vi ønsker å prøve en ny vin fra vårt favorittdistrikt
Vi ønsker oss en gjenbrukbar BI løsning for rask og effektiv analyse av alle anmeldelser av nye viner som blir lansert ved et av vinslippene til Vinmonopolet.
Mulige bruksområder vil være:
For å støtte dette vil vi implementere:
En standard metode for å laste inn kildedata for vin og anmeldelser En standard metode for å konsolidere anmeldt vin og score En datamodell som lar brukerne å utføre analysere og lage egne
rapporter
introduksjon(målsetning, verktøy og metode)
Analyse av vinanmeldelser målsetning
Vinmonopolet
Nettaviser
nye viner
anmeldelser
Excel med Power Query og Power Pivot verktøy
Power Query
Power Pivot
Pivot Table
• laste inn kildedata• transformere data• konsolidere data• kalkulere verdier• tilrettelegge dimensjoner• tilrettelegge fakta
• designe analysemodell• kalkulere verdier
• analysere• rapportere
Add-ins:
• Microsoft Office PowerPivot for Excel 2013• Microsoft Power Query for Excel
Publiser resultat
Steg i analyseprosessen metode
Tilrettelegg kildedata
Konsolider kildedata
Analyser
Bygg en analysemodell
Finn kildedata
en CSV-fil for hver
anmelder en tabell for alle nye viner og en tabell for alle anmeldelser
vinlister fra Vinmonopolet og
anmelselser i nettaviser
et stjernediagram med score som fakta
en rapport over viner med minst 3
anmeldelser sortert etter høyest score
den beste vin med alle vinens
anmeldelser
Notepad
Pivot Table
Power Pivot
Power Query
finn kildedata(surf på nettet)
Vininformasjon fra Vinmonopolet finn kildedata
http://www.vinmonopolet.no/artikkel/om-vinmonopolet/nye-produkter-i-september
Nettsider med vinanmeldelser finn kildedata
http://www.adressa.no/kultur/vin/vinslipp/
http://www.dn.no/matvin/vin/
http://www.aperitif.no/Vintips/tester/
http://dinmat.no/Artikler/
http://vinofil.no/2014/09/nyhetsslippet/http://www.klikk.no/mat/drikke/
http://www.oblad.no/nyttig/
tilrettelegg kildedata(lag en csv-fil for hver anmelder)
Nyheter i basisutvalget tilrettelegg kildedata
Nyheter i basis-, parti- og testutvalget september 2014.xlsx
Nyheter i bestillingsutvalget tilrettelegg kildedata
Nyheter i bestillingsutvalget september 2014.xlsx
Vininformasjon fra Vinmonopolet tilrettelegg kildedata
Nyheter i bestillingsutvalget september 2014.xlsx
Nyheter i basis-, parti- og testutvalget september 2014.xlsx
varenummer
varenavn
prisvaregrup
peland distrikt
produsent
volum
I tillegg ønsker vi å registrere URL til Vinmonopolets informasjonsside for hver av vinene. Vi vil da kunne innhente ytterligere informasjon om vinen som f.eks. smaksnotat, lagringsanbefaling og hvilke
retter vinen passer til.
Vininformasjon fra Vinmonopolet tilrettelegg kildedata
http://www.vinmonopolet.no/vareutvalg/hvitvin/frankrike/ch-carbonnieux-2012/sku-1716001
url
beskrivelse passer til
lagringsgrad
Vinanmeldelser fra Vinofil tilrettelegg kildedata
Masi Masianco 2013;Middels dyp strågul. Tiltalende duft i retning eple/melon, sitrus, toppet med urter. Mildt syrefriskt anslag med ytterligere underbygging av duftinntrykket.;5;84;125,00;42221Brauneberger Juffer Sonnenuhr Riesling Trocken GG 2013;Middels dyp grønngul. Tiltalende aroma i retning gule sommerepler ispedd florale toner, sitrus med lette grønne urtetoner. Friskt anslag i balanse, med toner som bekrefter og forsterker aromainntrykket. Lang.;6;90;307,10;17144Von Winning Ungeheuer Riesling GG 2013;Blek grønngul. Konsentrert aroma i retning sitrus, gule sommerepler, ispedd florale toner med mildt preg som fra grønne urter.I munnen forsterkes og underbygges aromainntrykket, lett mineralsk preg i avslutningen.;6;90;279,80;17145Bassermann-Jordan Grainhübel Riesling 2013;Lys grønngul. Fruktpreget aroma med florale toner i retning friske blomster, grønn melon og urter.Saftig anslag med flott syre/frukt-preg i balanse.;6;88;215,00;17104Fischer Ockfener Bockstein Riesling Kabinett 2013;Lys strågul, grønne toner. Forfriskende fruktig aroma med preg som fra moden gul sitrusfrukt toppet med florale toner. Aromainntrykket underbygges og bekreftes i munnen. Bra lengde.;5;85;175,70;17055DonnaTá Nero d'Avola 2012;Dyp mørkerød, middel tett kjerne, blålig rand. Tiltalende aroma som av modne mørke skogsbær, svisker, lakris/urter og en aning florale toner.Anslag med avrundede/bløte tanniner, tiltalende fruktsødme-preg i behagelig rund avslutning som varer lenge.;5;87;139,90;16964Louis Pascal Signature Cahors Malbec 2012;Dyp mørk rød, fiolette toner i kanten.Velutviklet aroma som av godt modne mørke skogsbær ispedd lette toner i retning urtekrydder. Mildt tiltalende fatpreg.Konsentrert fasthet i anslaget med ytterligere bekreftelse av aromainntrykket. Lang.;5;86;124,90;17123Cauvard Beaune Clos de la Maladière Monopole 2012;Dyp rød, middels kjernepreg, fiolett rand.Aroma i retning røde, modne hagebær, florale toner ispedd urter. For en Nese! Ung, saftig preg som underbygger og forsterker aromainntrykket.;6;90;219,90;16481Deutz Brut Classic;Lys gyllen farge. Aroma av grønt eple, sitrusskall og moden frukt. Publikumsfrier med flott syrlighet og balansert mousse.;5;86;339,90;11609
vinofil.csv
kildedata for vinanmeldelser tilrettelegg kildedata
vinofil.csv
dinmat.csv
aperitif.csv
dagbladet.csv
dn.csv
klikk.csv
oblad.csv
adressa.csv
kildedata for vinanmeldelser tilrettelegg kildedata
varenummer
varenavn pris
smaksnotat
poeng
terning
stjerner
adressa x x x x
aperitif x x x (x)1 x
dagbladet x x x x
dn x x x x x
klikk x x x
oblad x x x x
vinofil x x x x x x
(vinforum)2 (x)2 (x)2 (x)2 (x)2 (x)2
vin anmeldelse
score
1) Må klikke in på underside for å lese smaksnotatet. Vil bare bli gjort på de beste vinene.2) Anmeldelsene til Vinforum er ikke med i analysen da dette er en betalt tjeneste.
konsolider kildedata(lag en tabell for viner og en for
anmeldelser)
Tabell for alle viner konsolider kildedata
distrikt url
produsent url
Tabell for alle viner konsolider kildedata
varenavn
distrikt
lagringsgrad
produsent
Tabell for alle viner konsolider kildedata
varebeskrivelse *
prisvarenummer
varetypefargelukt
smakpasser tildistrikt
lagringsgrad
*) Beskrivelse av produktene i bestillingsutvalget er foretatt av grossistene. Produktbeskrivelsene av varer i basis-, parti- og testutvalget er, etter sensorisk prøving og kvalitetskontroll, foretatt av Vinmonopolet.
Tabell for alle viner konsolider kildedata
Demo 1konsolidering av tabeller for viner
Tabell for alle viner konsolider kildedata
Demo 2én felles tabell for alle viner
Tabell for alle anmeldelser konsolider kildedata
varenummer
varenavn
pris
poeng
smaksnotat
Tabell for alle anmeldelser konsolider kildedata
Demo 3konsolidering av tabeller for anmeldelser
Tabell for alle anmeldelser konsolider kildedata
Demo 4én felles tabell for alle anmeldelser
Konsolidering av varenummer konsolider kildedata
De 2 siste sifferne i varenummeret angir ulike volum av varen. De fleste anmeldere sløyfer disse sifferne fordi de ikke kreves for å identifisere selve varen.
Tabell for alle vinslipp konsolider kildedata
Demo 5en tabell for alle vinslipp
analysemodell(lag en tabell for viner og en for
anmeldelser)
Analysemodell for vinanmeldelser stjernediagram
Anmeldelse
Anmeldelse KeyAnmeldelseKildeVin KeyVarenummerVarenavnPrisSmaksnotatTerningPoengStjerner
Anmeldelse Dimensjonvinen gjenkjennes ved varenummer, varenavn
og pris
Vinland – distrikt
Vin KeyVareVarenummerVarenavnVarebeskrivelseVaretypePrisDistriktDistrikt URLProdusentProdusent URLFargeLuktSmakPasser tilLagringsgradAntall anmeldelser
Vin Dimensjon
Scoreen rad pr vin pr vinslipp pr
anmeldelse
Vinslippår – måned
Vinslipp KeyVinslippÅrMåned
Vinslipp Dimensjon
score kalkuleres ut i fra terning, poeng og
stjerner
antall anmeldelser bestemmes ved å telle
antall anmeldelser
Hva gjør vi hvis produktet endres i en
kontrakt som er opprettet i Core?
Da vil det ikke være det samme produktet som er
knyttet til søknaden i Front. Dette vil medføre at
vi ikke har en entydig kobling mellom produkter i
Front og Core!
Dimensjonstabell for vinslipp analysemodell
let Source = Excel.Workbook(File.Contents("D:\Prosjekter\BedreInnsikt\Vin\2014-5-September-Analysemodell\vinslipp.xlsx")), Vinslipp1 = Source{[Name="Vinslipp"]}[Data], FirstRowAsHeader = Table.PromoteHeaders(Vinslipp1), InsertedIndex = Table.AddIndexColumn(FirstRowAsHeader,"Index"), RenamedColumns = Table.RenameColumns(InsertedIndex,{{"Index", "Vinslipp Key"}}), ReorderedColumns = Table.ReorderColumns(RenamedColumns,{"Vinslipp Key", "Vinslipp", "År", "Måned"})in ReorderedColumns
Dimensjonstabell for vinslipp analysemodell
Demo 6dimensjonstabell for vinslipp
Dimensjonstabell for viner analysemodell
let Source = Excel.Workbook(File.Contents("D:\Prosjekter\BedreInnsikt\Vin\2014-5-September-Analysemodell\viner.xlsx")), Viner = Source{[Name="Viner"]}[Data], FirstRowAsHeader = Table.PromoteHeaders(Viner), InsertedIndex = Table.AddIndexColumn(FirstRowAsHeader,"Index"), RenamedColumns = Table.RenameColumns(InsertedIndex,{{"Index", "Vin Key"}}), InsertedCustom = Table.AddColumn(ReorderedColumns, "Vin", each Number.ToText([Varenummer]) & " " & [Varenavn] & " - kr. " & Number.ToText([Pris], "N", "nb-NO")), ReorderedColumns = Table.ReorderColumns(InsertedCustom,{"Vin Key", "Vin", "Varenummer", "Varenavn", "Varegruppe", "Land", "Distrikt", "Produsent", "Volum", "Pris"})in ReorderedColumns
Dimensjonstabell for anmeldelser analysemodell
let Source = Excel.Workbook(File.Contents("D:\Prosjekter\BedreInnsikt\Vin\2014-5-September-Analysemodell\anmeldelser.xlsx")), AnmeldelserVasket = Source{[Name="AnmeldelserVasket"]}[Data], FirstRowAsHeader = Table.PromoteHeaders(AnmeldelserVasket), ChangedType = Table.TransformColumnTypes(FirstRowAsHeader,{{"Varenummer", type number}, {"Pris", type number}, {"Terning", type number}, {"Poeng", type number}, {"Stjerner", type number}}), InsertedIndex = Table.AddIndexColumn(ChangedType,"Index"), RenamedColumns = Table.RenameColumns(InsertedIndex,{{"Index", "Anmeldelse Key"}}), InsertedCustom = Table.AddColumn(ReorderedColumns, "Kildescore", each if [Poeng]<>null then "[" & [Kilde] & ": " & Number.ToText([Poeng]) & " poeng]" else if [Terning]<>null then "[" & [Kilde] & ": terning " & Number.ToText([Terning]) & "]" else if [Stjerner]<>null then "[" & [Kilde] & ": " & Number.ToText([Stjerner]) & " stjerner]" else ""), InsertedCustom = Table.AddColumn(InsertedCustom, "Anmeldelse", each if [Smaksnotat]<>null then [Smaksnotat] & " " & [Kildescore] else [Kildescore]), ReorderedColumns = Table.ReorderColumns(InsertedCustom1,{"Anmeldelse Key", "Kilde", "Anmeldelse", "Kildescore", "Varenummer", "Varenavn", "Pris", "Smaksnotat", "Terning", "Poeng", "Stjerner"})in ReorderedColumns
Faktatabell for score analysemodell
let Source = Table.Join( Vin,{"Varenummer"}, Table.RenameColumns( Anmeldelse,{{"Varenummer", "Anmeldelse Varenummer"}, {"Varenavn", "Anmeldelse Varenavn"}, {"Pris", "Anmeldelse Pris"}} ),{"Anmeldelse Varenummer"}, JoinKind.Inner ), RemovedColumns = Table.RemoveColumns(Source,{"Varenummer", "Varenavn", "Varegruppe", "Land", "Distrikt", "Produsent", "Volum", "Pris", "Kilde", "Anmeldelse Varenummer", "Anmeldelse Varenavn", "Anmeldelse Pris", "Smaksnotat"}), InsertedCustom = Table.AddColumn(RemovedColumns, "Anmeldelse score", each if [Poeng]<>null then [Poeng] else if [Terning]<>null then [Terning]*4+68 else if [Stjerner]<>null then [Stjerner]*5+67 else 0), InsertedCustom1 = Table.AddColumn(InsertedCustom, "Vinslipp Key", each 0), ChangedType = Table.TransformColumnTypes(InsertedCustom1,{{"Vinslipp Key", type number}}), ReorderedColumns = Table.ReorderColumns(ChangedType,{"Vinslipp Key", "Vin Key", "Anmeldelse Key", "Terning", "Poeng", "Stjerner", "Anmeldelse score"}), RemovedColumns1 = Table.RemoveColumns(ReorderedColumns,{"Terning", "Poeng", "Stjerner"}), ChangedType1 = Table.TransformColumnTypes(RemovedColumns1,{{"Anmeldelse score", type number}}), RemovedColumns2 = Table.RemoveColumns(ChangedType1,{"Vin", "Anmeldelse", "Kildescore"})in RemovedColumns2
Analysemodell for vinanmeldelser analysemodell
Demo 7analysemodell for vinanmeldelser
Analysemodell for vinanmeldelser stjernediagram
skulte kolonner
hierarki
kalkulerte verdierScore:=AVERAGE([Anmeldelse
score])Antall anmeldelser=COUNTROWS(RELATEDTABLE(Score)
)
analyse(beste viner med minst 3 anmeldelser)
De beste vinene analysemodell
3 eller flere anmeldelser
kun hvitvinunder kr.
350,-
alternativ løsning(kan dette løses på en enklere måte?)
Analysetabell for anmeldelser alternativ løsning
let Source = Excel.Workbook(File.Contents("D:\Prosjekter\BedreInnsikt\Vin\2014-5-September-Analysemodell\anmeldelser.xlsx")), AnmeldelserVasket1 = Source{[Name="AnmeldelserVasket"]}[Data],
FirstRowAsHeader = Table.PromoteHeaders(AnmeldelserVasket1),
InsertedCustom = Table.AddColumn(FirstRowAsHeader, "Anmeldelse score", each if [Poeng]<>null then [Poeng] else if [Terning]<>null then [Terning]*4+68 else if [Stjerner]<>null then [Stjerner]*5+67 else 0),
InsertedCustom1 = Table.AddColumn(InsertedCustom, "Kilde score", each if [Poeng]<>null then "[" & [Kilde] & ": " & Number.ToText([Poeng]) & " poeng]" else if [Terning]<>null then "[" & [Kilde] & ": terning " & Number.ToText([Terning]) & "]" else if [Stjerner]<>null then "[" & [Kilde] & ": " & Number.ToText([Stjerner]) & " stjerner]" else ""),
InsertedCustom2 = Table.AddColumn(InsertedCustom1, "Anmeldelse", each if [Smaksnotat]<>null then [Smaksnotat] & " " & [Kilde score] else [Kilde score]),
InsertedCustom3 = Table.AddColumn(InsertedCustom2, "Vare", each [Varenummer] & " " & [Varenavn] & " - kr. " & Number.ToText([Pris], "N", "nb-NO")),
ReorderedColumns = Table.ReorderColumns(InsertedCustom3,{"Varenummer", "Vare", "Varenavn", "Pris", "Kilde", "Anmeldelse", "Anmeldelse score", "Smaksnotat", "Terning", "Poeng", "Stjerner", "Kilde score"})in ReorderedColumns
Analysemodell for anmeldelser alternativ løsning
kan ikke filtrere på antall
anmeldelser eller varetype
samme vare har forskjellig
navn
under kr. 350,-
analysemodellen består av kun én
tabellingen Key kolonner eller faktatabell
kalkulert verdiScore:=AVERAGE([Anmeldelse
score])
Valg av løsningsalternativ alternativ løsning
VS
• Mer elegant og brukervennlig• Skiller mellom fakta og
dimensjoner• Kan filtrere på antall anmeldelser• Kan filtrere på varetype• Har konsoliderer varenavn• Støtter analyse for flere vinslipp
• Enklere å implementere
Velg denne dersom du selv skal gjennomføre
analysen én gang …
… ellers velg denne!
stjernediagram
enkel tabell
forbedringer(kan løsningen lages bedre?)
Endringer som ville forbedre løsningen forbedringer
• Maskinell parsing av HTML for å laste inn anmeldelsene
• Laste inn smaksnotater fra anmeldelser med undersider
• Laste inn detaljert informasjon av vinene fra Vinmonopolet
• Vasking av varenummer med bruk av Master Data Management
• Lage en ønskeliste av interessante viner
• Lage en innkjøpsliste som kan sendes som e-post
Information is not knowledge
Albert Einstein
Tabell for alle viner konsolider kildedata
Demo 1konsolidering av tabeller for viner
Tabell for alle viner konsolider kildedata
Start Excel med et nytt regneark. Fra POWER QUERY fanen, velg From File og så
From Excel. I Navigator panelet dobbel-klikk på den første
tabellen.
Tabell for alle viner konsolider kildedata
I Home-fanen klikk på Use First Row As Headers.
Tabell for alle viner konsolider kildedata
I Home-fanen klikk på Remove Columns og velg Remove Columns
Merk kolonnen KATEGORI.
Tabell for alle viner konsolider kildedata
I Home-fanen klikk på Data Type og velg Number.
Merk kolonnene ARTIKKELNR, VOLUM og SALGSPRIS
Tabell for alle viner konsolider kildedata
Dobbel-klikk på overskriften til en kolonne og tast inn det nye navnet.
Tabell for alle viner konsolider kildedata
I Home-fanen klikk på Apply & Close.
I Query Settings panelet tast inn et navn og en beskrivelse på
spørringen.
Navngi det nye arket Viner i basisutvalget. Slett gjerne det første arket.
Gjenta disse stegene for Viner i bestillingsutvalget.
Tabell for alle viner konsolider kildedata
Demo 2én felles tabell for alle viner
Tabell for alle viner konsolider kildedata
Start Excel med et nytt regneark. Fra POWER QUERY fanen, velg From File og så
From Excel.
I Navigator panelet dobbel-klikk på den første
tabellen.
Pass på at markøren er i en celle til tabellen Viner i
basisutvalget.
Tabell for alle viner konsolider kildedata
I Home-fanen klikk på Apply & Close.
I Query Settings panelet tast inn et navn og en beskrivelse på
spørringen.
Navngi det nye arket Viner.
Da er vi ferdig med denne Excel filen.
Tabell for alle anmeldelser konsolider kildedata
Demo 3konsolidering av tabeller for anmeldelser
Tabell for alle anmeldelser konsolider kildedata
Start Excel med et nytt regneark. Fra POWER QUERY fanen, velg From File og så
From CSV.
Velg kildefilen og klikk på OK knappen.
Tabell for alle anmeldelser konsolider kildedata
Dobbel-klikk på overskriften til en kolonne og tast inn det nye navnet.
Tabell for alle anmeldelser konsolider kildedata
I Home-fanen klikk på Data Type og velg Number.
Merk kolonnene Terning og Pris
Tabell for alle anmeldelser konsolider kildedata
Tabell for alle anmeldelser konsolider kildedata
Tabell for alle anmeldelser konsolider kildedata
I Home-fanen klikk på Data Type og velg Number.
Merk kolonnene Varenummer, Pris, Terning, Poeng og Stjerner.
Tabell for alle anmeldelser konsolider kildedata
I Home-fanen klikk på Apply & Close.
I Query Settings panelet tast inn et navn og en beskrivelse på
spørringen.
Navngi det nye arket Adressa. Slett gjerne det første arket.
Gjenta disse stegene for alle de andre anmeldelsene.
Tabell for alle anmeldelser konsolider kildedata
Demo 4én felles tabell for alle anmeldelser
Tabell for alle anmeldelser konsolider kildedata
Fra POWER QUERY fanen, velg From Table.
Velg tabellen Aperitif i nedtrekkslisten og klikk på OK
knappen.
Pass på at markøren er i en celle til tabellen Adressa.
Fra Home fanen, velg Append Queries.
Tabell for alle anmeldelser konsolider kildedata
Gjenta dette steget for tabellene for alle anmeldelsene.
Tabell for alle anmeldelser konsolider kildedata
I Home-fanen klikk på Apply & Close.
I Query Settings panelet tast inn et navn og en beskrivelse på
spørringen.
Navngi det nye arket Viner.
Da er vi ferdig med Excel filen for anmeldelser.
Tabell for alle vinslipp konsolider kildedata
Demo 5en tabell for alle vinslipp
Tabell for alle vinslipp konsolider kildedata
Dimensjonstabell for vinslipp analysemodell
Demo 6dimensjonstabell for vinslipp
Dimensjonstabell for vinslipp analysemodell
I Navigator panelet dobbel-klikk på den første
tabellen.
Start Excel med et nytt regneark. Fra POWER QUERY fanen, velg From File og så
From Excel.
Dimensjonstabell for vinslipp analysemodell
I Home-fanen klikk på Use First Row As Headers.
Dimensjonstabell for vinslipp analysemodell
I Insert-fanen klikk på Insert Index Column.
Navngi den nye kolonnen Vinslipp Key.
Flytt kolonnen Vinslipp Key fremst.
Dimensjonstabell for vinslipp analysemodell
I Home-fanen klikk på Apply & Close.
I Query Settings panelet tast inn et navn og en beskrivelse på
spørringen.
Navngi det nye arket Vinslipp. Slett gjerne det første arket.
Information is not knowledge
Albert Einstein