Käytän Power Appsin kaavio-kontrolleja (charts) todella vähän. Siitä yksinkertaisesta syystä, että käppyrät tulee käytännössä tehtyä Power BI:llä. Koska se on niin älyttömän hyvä.

Power Apps sisältää kuitenkin peruskaaviot (column, line, pie), jotka riittävät mainiosti moneen tilanteeseen. Ihmetellään tällä kertaa hieman näiden käyttöä.

Käytetään esimerkkinä aiemmista jutuista tuttua toimistollakävijöiden seurantaa.

Tiedot SharePoint-listalla

Meillä on SharePoint-listaan tallennettuna toimiston lohkojen käyttöaste 10 päivän ajalta.

Listan sarakkeet

  • Otsikko: Lohkon nimi
  • LocationId: Lohkon tunniste
  • DayID: Mistä päivästä on kyse (1= viikon 1. maanantai, 5 = viikon 1. perjantai 6 = viikon 2. maanantai jne)
  • In: Montako työntekijää on tulossa kyseiseen lohkoon

Lista näyttää tältä.

Lohkojen käytöstä löytyy luonnollisesti Power BI -raportti.

Voisimmeko toteuttaa tästä edes osan suoraan Canvas Power Appsin omilla kontrolleilla?

Power Appsin viivakaavio

Haluamme visualisoida päivittäiset (1-10) toimistolla kävijöiden määrät.

Aloitetaan lisäämällä Power Appsiin viivakaavio (line chart) ja sen tietojoukoksi yllä esitelty SharePoint-lista, johon on tallennettu 10 päivän kävijämäärät per sijainti.

Ei näytä vielä kaksiselta.

Asetetaan kaavion

  • Otsikoksi (Labels) DayID-sarake, jolloin kaavion X-akseli kuvaa päivää (arvot 1-10)
  • Arvoksi (Series1) Field_In -kenttä. Eli montako henkeä kyseisenä päivänä on tulossa kyseiseen lohkoon töihin.

Esitettäviä arvoja (Series) voi olla useita, mutta oletuksena näytetään vain yksi.

Kuvaajaan tulee vähän eloa. Muttei se edelleenkään näytä päiväkohtaisia tulijamääriä.

Tai näyttäähän se. Mutta se ei niputa päivien lukuja yhteen. Nyt kaaviossa on datapiste jokaista SharePoint-listan riviä kohden.

GroupBy ja AddColumns funktiot

Joudumme siis muotoilemaan kaavion käyttämää tietojoukkoa. Aloitetaan ryhmittelemällä kaikki rivit DayId-kentän mukaan.

GroupBy('Office Usage Daily', "DayId", "DayGroup")

Syntyy taulukko, jossa on enää 10 riviä (päivät 1-10). Todellinen rivikohtainen data löytyy kunkin rivin DayGroup taulukosta.

Haluamme esittää päiväkohtaiset kävijämäärät. Lisätään uusi sarake (AddColumns), johon se lasketaan (summa DayGroup-taulukon sisältä löytyvien rivien In-sarakkeiden arvoista).

AddColumns(
    GroupBy('Office Usage Daily', "DayId", "DayGroup"), 
    "DailySum",
    Sum(DayGroup,In)
)

Päivitetään kaaviossa esitettävät sarakkeet. Nyt tämä alkaa näyttämään jo järkevältä!

Haluamme lopuksi korvata mystiset päivät 1-10 oikeilla päivämäärillä. Meillä on muuttujassa (varFirstDayOfPeriod) tarkastelujakson ensimmäinen päivä. Luodaan uusi sarake (DayAsLabel), johon lasketaan DayId-arvon perusteella oikea päivämäärä.

AddColumns(
    GroupBy('Office Usage Daily', "DayId", "DayGroup"),
    "DailySum",
    Sum(DayGroup,In),
    "DayAsLabel",
    Text(DateAdd(varFirstDayOfPeriod,
       DayId-If(DayId<6,1,-1)),"ddd dd.mm.","fi-fi")
)

Valmista!

Sijainnin valinta

Visualisointi näyttää toimistolle tulevien määrän per päivä. Entä jos haluaisimme nähdä, miten paljon tiettyyn lohkoon (location) on tulossa väkeä?

Lisätään näytölle valinta (combobox), josta käyttäjä voi valita lohkon.

Valinnan perusteella suodatetaan kaaviossa käytettävää tietojoukkoa.

Toimii!

Delegointi…

Power Appsin kaaviot soveltuvat yksinkertaisten kaavioiden piirtämiseen, kunhan kaavioiden taustalla olevat rivimäärät ovat kohtuullisia.

Kaaviot eivät nimittäin tue ollenkaan delegointia.

Tämä selviää helposti luomalla kaavio, jonka tietolähteenä on SharePoint-lista sellaisenaan.

Käydään asettamassa delegointia tukemattomien kyselyiden palauttamien rivien maksimmääräksi 5.

Jolloin käppyrässämme onkin enää 5 datapistettä.

Voimme siis pelata visualisoinneissamme enintään 2000 datapisteellä. Se on hyvä muistaa.