Keväällä tuli mahdolliseksi liittää (canvas) Power Apps Application Insights -palveluun. Kirjoitin aiheesta jutun, josta selviää
- Mikä Application Insights on
- Miten Power Apps siihen liitetään
- Mitä tietoja Power Appsista sinne automaattisesti kerty
- Miten Power Appsista luodaan omia lokimerkintöjä (trace) Application Insightsiin
Suosittelen lukemaan, mikäli aihepiiri on täysin vieras.
Mihin minä tätä Appication Insightsia tarvitsen?
Erinomainen kysymys, sillä jokaisen Power Appsin käytöstä löytyy perusanalytiikkaa suoraan Power Platform -palvelusta.

Usein pelkkä sessioiden ja käyttäjämäärien seuraaminen ei kuitenkaan riitä. Halutaan tietää mitä käyttäjät sovelluksella oikeasti tekevät.
Silloin esiin astuu Application Insights.
Esimerkki – Tuntikirjaustyökalun käyttö
Käytetään esimerkkinä työpaikkamme Power Appsilla toteutettua tuntikirjaustyökalua. Siitä löytyy työasemalla käytettävä versio.

Sekä erillinen puhelimelle optimoitu versio.

Tuntikirjaussovelluksia kehitetään edelleen, mutta kehityspanokset on järkevää suunnata ominaisuuksiin, joita eniten käytetään.
Tai ylipäänsä käytetään. Sovelluksiin eksyy helposti ominaisuuksia, joita kukaan ei todellisuudessa käytä. Joskus nämä ominaisuudet on fiksuinta siivota kokonaan pois.
Haluammekin tietää
- Missä suhteessa käyttäjät käyttävät työasema- ja mobiiliversioita?
- Paljonko tehdään uusia kirjauksia?
- Miten usein kirjauksia muokataan jälkikäteen?
- Paljonko kirjauksia poistetaan?
- Käyttääkö kukaan kalenterin selausominaisuutta (vaihdetaan kuukautta / viikkoa)?
Omien lokimerkintöjen lisääminen
Nyt kun tiedämme, mitä tapahtumia haluamme seurata, jää tehtäväksi vain lisätä ko tapahtumista lokimerkinnät Application Insightsiin.
Lisätään mobiiliversioon tuntikirjauksen tallennuksen yhteyeteen lokimerkintä, joka kertoo onko kyseessä uuden kirjauksen luonti vai vanhan muokkaus.

Trace("HoursModified", TraceSeverity.Information, { User: varCurrentUser.Email, Action: "Hours modified" } )
Vastaavalla tavalla lisätään lokimerkintä aina käyttäjän vaihtaessa viikkoa.

Lopuksi lisätään samat lokitukset myös sovelluksen työpöytäversioon.
- kuukauden vaihtaminen
- uuden tuntikirjauksen tallentaminen
- olemassa olevan tuntikirjauksen muokkaaminen
- tuntikirjauksemn poistaminen
Käytännössä lisäämme Trace-koodin kuvassa korostettuihin painikkeisiin / klikattaviin ikoneihin.

Nyt sovellukset keräävät tietoa meitä kiinnostavista tapahtumista.
Mitäs sitten?
Omat kyselyt Application Insights dataan
Olen luonut Power Appsieni käyttämät Application Insights -palvelut yhden ja saman resurssiryhmän (Resource group) alle.

Haluamme lukea kaiken Power Appseista lokittamamme datan. Siirrytään Application Insights:in loki-osioon (Logs), jossa voi tehdä omia kyselyjä lokitietoihin.

Kyselykielenä käytetään Kustoa. Seuraavalla kyselyllä haetaan viimeiseltä 180 päivältä kaikki itse lokittamamme User ja Action -tiedot höystettynä Application Insightin vakiona tallentamilla tiedoilla (aikaleima, käyttöjärjestelmä jne).
traces | extend UserEmail = tostring(customDimensions.User) | extend Action = tostring(customDimensions.Action) | project UserEmail, Action, session_Id, user_Id, client_Model, client_OS, client_City, client_CountryOrRegion, appName, timestamp, itemId | where timestamp >= ago(180d) and UserEmail <> ""
Hakutulos sisältää 992 riviä ja näyttää seuraavalta.

Application Insight -datan tuominen Power BI:hin
Haluamme tutkia lokiaineistoa Power BI:n avulla. Onneksemme tämä on helppoa.
Tallennetaan tekemämme kysely Power BI:n ymmärtämässä muodossa (Export to Power BI (M query)).

Power BI -konsulttien silmä lepää.

Avataan Power BI ja lisätään uudeksi tietolähteeksi tyhjä kysely (Blank Query).

Kyselyeditori (Query Editor) avautuu. Valitaan Advanced Editor ja kopioidaan kyselyksi Application Insights:sta juuri tallentamme kysely.

Näin meillä on Power BI:ssä käytettävissämme 180 päivän lokitiedot.

Valmis raportti
Lisätään samalla tavalla tietomalliin mobiiliversion lokitiedot. Lopuksi yhdistetään nämä kaksi tietolähdettä yhdeksi (TimeSheetApp) ja lisätään kalenteritaulu (Calendar).

Tehdään muutama visualisointi ja olemme valmiit!

No mitä kerätystä lokidatasta näemme?
Ensinnäkin mobiiliapplikaatiota käyttää käytännössä ainoastaan yksi käyttäjä. Tietääkö hän koko työasemasovelluksen olemassaolosta? Voisiko mobiiliversion kehityksen laittaa jopa jäihin?

Näemme myös miten eri tavalla käyttäjät sovellusta käyttävät. Jotkut käyttäjistä muokkaavat tekemiään kirjauksia huomattavan paljon. Toiset taas ei.

Selitys on ilmeinen. Osa käyttäjistä kirjaa samalle työkohteelle tunteja sitä mukaa kun päivän mittaan töitä tekevät. Osa käyttäjistä taas kirjaa kaikki tunnit kerralla päivän päätteeksi.
Entä voisimmeko poistaa kuukausien/viikkojen selailun työkalusta?
No emme. Vaikka kyseisiä toimintoja käytetään vähän, niitä kuitenkin säännöllisesti käytetään.

Yhteenveto
Application Inisightsia hyödynnetään perinteisesti ratkaisun suorituskyvyn ja virhetilanteiden seurantaan. Havaintojen perusteella voidaan tehdä erilaisia korjauksia niihin liittyen.
Mutta se soveltuu mainiosti myös A/B testaamiseen, sekä jatkokehitystyötä ohjaavan datan keräämiseen.
On todella hyödyllistä tietää (ei arvata), mitä sovelluksen ominaisuuksia oikeasti käytetään ja miten paljon.