POWER BI – PULSE CHART

Home/Power BI/POWER BI – PULSE CHART

POWER BI – PULSE CHART

In de onderstaande blog laat ik zien hoe je de fantastisch nieuwe POWER BI Visual – Pulse Chart – in gebruik kunt nemen.

We zetten de invloed van schoolvakanties van Nederland af tegen de drukte op de service afdeling van Quercis.

 

Omschrijving

Uitleg

1

Aanmaken datum tabel.

Het opnemen van een DATUM tabel is niet strikt noodzakelijk, maar ik raad je aan altijd een DATUM tabel op te nemen in je model. In toekomstige blogs zal duidelijk worden waarom. (time intelligence functies zoals YTD, SAMEPERIODLASTYEAR)

 

Ook in dit voorbeeld gebruik ik de datum.

  • Ga via GET DATA naar de optie BLANK Query

image027

  • Plak het script uit de bijlage (zie onderaan)  in de advanced editor.

image028

  • Pas de parameters eventueel aan naar het gewenste datum traject en de gewenste Culture settings.

image029

  • Pas de Query aan naar een logisch naam en laad de gegevens via het File menu

image007

2

Resultaat

image008

3

Ophalen Schoolvakanties

image010

  • Verwijder column, 2,4 en 5
  • Split kolom column3 op “t/m”

image012

  • Ontbrekende gegevens in Column 6 aanvullen. Selecteer column 6,  kies voor Transform – Fill – Down.

image014

  • Filter op ZUID Nederland

image016

  • Verwijder Column1 en pas de namen van de andere kolommen aan naar logische namen

4

Resultaat

image018

5

Andere jaren toevoegen.

We hebben nu alleen de vakanties van 2012. Ik wil ze ook van de andere jaren.

Met een betere datasource had het waarschijnlijk makkelijke gekund. De methode die hier wordt gebruik is wat omslachtig maar zal je wel ideeën geven wat er allemaal mogelijk is met Power BI.

Als je het toch verder wil automatiseren zie dan deze blog: http://www.mattmasson.com/2014/11/iterating-over-multiple-pages-of-web-data-using-power-query/

Let op: de functie die Matt gebruikt werkt niet meer naar een publish to Power
BI (uit eigen ervaring L…)

  • Kopieer de Query die we zojuist hebben aangemaakt

image019

  • Hernoem de Query naar 2013 en ga naar het radartje achter source. Verander het jaartal 2012 naar 2013.

image020

  • Doe dit voor elk gewenst jaar.
  • Alle jaren samenvoegen tot één dataset. Kies voor Append Queries – Three or more tables

image022

 

image024

  • Hernoem de Query van 2012 naar Vakanties

6

Resultaat

image026

7

Pfff… oké nog even volhouden
beste lezer… het zal de moeite waard zijn.

Ik haal vervolgens de calls uit ons service
systeem
op. Het eindresultaat wordt hier getoond.

Hoe ik dat doe is voor dit voorbeeld niet zo interessant.

 image039

8

Leg de volgende relaties

Voor de oplettende lezer. De kolom Omschrijving in de vakantie tabel heb ik in mijn eerdere beschrijving niet toegevoegd.

Gebruikt de volgende formule om deze alsnog toe te voegen:

 

[Vakantie] &
” van ” & Date.ToText([Start]) &
” tot en met ” & Date.ToText([Eind])

 

 image041

9

Importen Pulse Chart Visual

image038

10

Hehe… we kunnen gaan tekenen….

  • Voeg als eerste een hierachische filter toe. ( dit is ook een custom visual, zie stap 9, hoe te importeren)

image042

  • Voeg vervolgens de Pulse chart toe.

image044

11

Resultaat

 image046

12

Fimpje van het resultaat è

 

Zelf bedienen klik dan hier.

 

Bijlage

NR

 

1 Datum tabel Script

let CreateDateTable = (StartDate as date, EndDate as date, optional Culture as nullable text) as table =>

  let

    // Determine number of days between start and end date

    DayCount = Duration.Days(Duration.From(EndDate – StartDate)),

    // Add a day back, as Duration math above will give you the days literally between rather than inclusive. Ex Dec 31 – Dec 1 = 30 days, but we need 31 days in that period

    DayCountAdd = DayCount + 1,

    // Create a Dates list object starting at the start date, for the duration of the day count, increment of one year

    Source = List.Dates(StartDate,DayCountAdd,#duration(1,0,0,0)),

    // Turn that date list into a table

    TableFromList = Table.FromList(Source, Splitter.SplitByNothing()),   

    // Update the type to Date

    ChangedType = Table.TransformColumnTypes(TableFromList,{{“Column1”, type date}}),

    // Rename the only column in the table to date

    RenamedColumns = Table.RenameColumns(ChangedType,{{“Column1”, “Date”}}),

    // Insert columns for different units within the date dimension and supporting columns for sorting

    // Optional Culture parameter is used where applicable

    InsertYear = Table.AddColumn(RenamedColumns, “Year”, each Date.Year([Date])),

    InsertQuarter = Table.AddColumn(InsertYear, “QuarterNumber”, each Date.QuarterOfYear([Date])),

    InsertMonth = Table.AddColumn(InsertQuarter, “MonthNumber”, each Date.Month([Date])),

    InsertDay = Table.AddColumn(InsertMonth, “DayOfMonth”, each Date.Day([Date])),

    InsertDayInt = Table.AddColumn(InsertDay, “DateInt”, each [Year] * 10000 + [MonthNumber] * 100 + [DayOfMonth]),

    InsertMonthName = Table.AddColumn(InsertDayInt, “Month”, each Date.ToText([Date], “MMMM”, Culture), type text),

    InsertCalendarMonth = Table.AddColumn(InsertMonthName, “Month Of Year”, each (try(Text.Range([Month],0,3)) otherwise [Month]) & ” ” & Number.ToText([Year])),

    InsertCalendarQtr = Table.AddColumn(InsertCalendarMonth, “Quarter of Year”, each “Q” & Number.ToText([QuarterNumber]) & ” ” & Number.ToText([Year])),

    InsertDayWeek = Table.AddColumn(InsertCalendarQtr, “DayInWeek”, each Date.DayOfWeek([Date])),

    InsertDayName = Table.AddColumn(InsertDayWeek, “Day Of Week Name”, each Date.ToText([Date], “dddd”, Culture), type text),

    InsertWeekStarting = Table.AddColumn(InsertDayName, “Week Starting”, each Date.StartOfWeek([Date]), type date),

    InsertWeekEnding = Table.AddColumn(InsertWeekStarting, “Week Ending”, each Date.EndOfWeek([Date]), type date),

    InsertMonthYrSort = Table.AddColumn(InsertWeekEnding, “MonthYrSort”, each Date.ToText([Date], “yyyyMM”, Culture), type number),

    InsertQuarterSort = Table.AddColumn(InsertMonthYrSort, “QuarterYrSort”, each Number.ToText([Year]) & Number.ToText([QuarterNumber])),

    ChangeTypes2 = Table.TransformColumnTypes(InsertQuarterSort, {{“MonthYrSort”, type number},{“QuarterYrSort”, type number}}),

    InsertWeekOfYr = Table.AddColumn(ChangeTypes2, “Week”, each “Week ” & Number.ToText(Date.WeekOfYear([Date])), type text)

  in

    InsertWeekOfYr,

    #”Invoked FunctionCreateDateTable” = CreateDateTable(#date(2009, 1, 1), #date(2020, 1, 1), “Nl-nl”),

    #”Renamed Columns” = Table.RenameColumns(#”Invoked FunctionCreateDateTable”,{{“Date”, “Datum”}, {“Year”, “Jaar”}, {“QuarterNumber”, “KwartaalNummer”}, {“MonthNumber”, “MaandNummer”}, {“DayOfMonth”, “DagvdMaand”}, {“DateInt”, “DatumInt”}, {“Month”, “MaandNaam”}, {“Month Of Year”, “Maand van Jaar”}, {“Quarter of Year”, “Kwartaal Van Jaar”}, {“DayInWeek”, “DagvdWeek”}, {“Day Of Week Name”, “Daagnaam”}}),

    #”Removed Columns” = Table.RemoveColumns(#”Renamed Columns”,{“Week Starting”, “Week Ending”}),

    #”Renamed Columns1″ = Table.RenameColumns(#”Removed Columns”,{{“Daagnaam”, “Dagnaam”}}),

    #”Changed Type” = Table.TransformColumnTypes(#”Renamed Columns1″,{{“Maand van Jaar”, type text}, {“MonthYrSort”, Int64.Type}, {“QuarterYrSort”, Int64.Type}, {“Datum”, type date}, {“Jaar”, Int64.Type}, {“KwartaalNummer”, Int64.Type}, {“MaandNummer”, Int64.Type}, {“DagvdMaand”, Int64.Type}, {“DatumInt”, Int64.Type}, {“DagvdWeek”, Int64.Type}}) in

    #”Changed Type”

 

 

By | 2016-10-27T20:28:44+00:00 28 juni 2016|Power BI|0 reacties

Deel dit verhaal, kies je platform!

About the Author:

Wouter Kessener
Sinds 2003 actief in de wereld van Exact en Business Intelligence, als projectleider maar vooral als consultant. Afgestudeerd aan de HEAO Bedrijfskundige Informatica. Kan de behoefte van de klant goed doorgronden, vertalen naar concrete oplossingen en waar nodig overdragen aan de technische specialisten om uiteindelijk samen tot het gewenste resultaat te komen. Een klant, die na oplevering, honger naar meer heeft, dat geeft hem voldoening.

Laat een reactie achter