Tällä kertaa ihmetellään yhtä Power BI -raportteihin liittyvää yksityiskohtaa. Nimittäin kuvia.

Mihin minä tarvitsen raportillani kuvia?

Käppyröissä et suoraan mihinkään. Mutta taulukoissa ne ovat usein käteviä. Esimerkiksi tuotteen kuva sitä vastaavalla rivillä. Tai henkilön kuva, kuten alla näkyvässä lukuhaasteen raportissa.

final visualization.png

Miten rivitasolle saadaan kuvat mukaan?

Kuvat SharePoint dokumenttikirjastossa

Näppärä Office 365 -konsultti tallentaa kuvat SharePointin dokumenttikirjastoon ja liittää ne tietomalliinsa sopivalla tunnisteella (tuotteen id tms).

Alla erilaisia logoja tallennettuna kuvakirjastoon.

Dokumenttikirjasto otetaan mukaan Power BI:n tietomalliin ja siihen lisätään uusi sarake (ImagePath), joka sisältää linkin kyseiseen tiedostoon.

Sarakkeen tyypiksi vaihdetaan Image URL.


Ja näin kuvat näkyvät nätisti Power BI -raportilla. Id:n avulla ne voi liittää oikeaan tuotteeseen.

Vai näkyvätkö kuvat kuitenkaan?

Kuvalinkit osoittavat SharePointiin ja kaikki riippuu siitä, onko raporttia lukevalla käyttäjällä

  1. pääsy kyseiseen kuvakirjastoon
  2. voimassaoleva sessio SharePointiin selaimella, jolla raporttia katselee

Eli eivät ne kuvat näy kuin hyvällä tuurilla. Tilanne on tietenkin sama Dataversen kanssa.

Kuvat internetissä

Järkevämpää onkin tallentaa kuvat esimerkiksi Azure Blobiin ja käyttää raportilla kuvalinkkejä samaan tapaan kuin edellä. Näin

  • kuvat on kaikkien saatavilla (sallitaan anonyymi pääsy), eli ne myös näkyvät raporteilla
  • kuvat eivät kasvata tietomallin kokoa

Tämäkään ei aina ole paras tapa.

  • Jos ratkaisu on pieni, eikä sen ympärillä ole mitään Azuren palveluita käytössä, voi pelkästään kuvien takia Blobin käyttöönotto tuntua raskaalta.
  • Kuvat voivat olla luottamuksellisia, eikä niitä haluta tallentaa julkiverkkoon
  • Kuvien osoitteet pitää jotenkin mäpätä niitä vastaaviin riveihin tietomallissa

Mitäs muita vaihtoehtoja vielä on?

Kuvat tietomallin sisällä

Mikäli kuvia on järjellinen määrä ja/tai ne ovat kooltaan pieniä, on vaihtoehtona tallentaa ne base64-muodossa itse tietomalliin.

Mutta miten kuvat sinne saadaan?

Suoraviivaisin tapa on ensin muuntaa kuvat base64-muotoon ja tallentaa ne soveltuvaan paikkaan.

Esimerkki – Tuotetiedot kuvineen

Olemme tallentaneet kaikki yrityksemme tuotteet Dataverseen. Yksi tuotteen tiedoista on kyseisen tuotteen kuva, eli kuva (image) tyyppinen kenttä. Kuvaa voi hyödyntää suoraan Power Apps -sovelluksissa, mutta Power BI ei pääse siihen käsiksi.

Dataversen sarakkeet

Luodaan Power BI:tä varten toinen kuva-kenttä. Se on tyypiltään pitkä merkkijono (multiline text). Kenttään tallennetaan samainen tuotekuva base64-muodossa, jolloin se voidaan näyttää suoraan Power BI -raportilla.

Käyttäjä voi lisätä tuotteelle sen kuvan (alla esimerkkinä tuotteen logo).

Vielä pitäisi automaattisesti muodostaa kuvaa vastaava base64-merkkijono.

Se tehdään tietenkin Flow’lla.

Flow

Aina kun tuotteen kuvaa muokataan, käynnistyy Flow, jossa

  • Haetaan tuotteeseen liitetty kuva
  • Tallennetaan tuotteen KuvaString-kenttään kuva base64-muodossa

Lopputuloksena tietueelle ilmestyy omaan kenttäänsä kuva base64-muodossa.

Power BI

Lopuksi luomme Power BI -raportin, jossa esitetään yhdessä taulukossa tuotteet ja niiden kuvat.

Tietolähteenä käytetään Dataversen tuote-taulua. Tietojen latausvaiheessa poistetaan kaikki turhat kentät. Jäljelle jäävät tuotteen nimi (name) ja kuva (kuvastring).

Jotta Power BI osaa näyttää kuvan raportilla, tulee kuvastring-kentän tietoluokaksi (data category) asettaa kuva URL (image URL).

Näin tuotteiden kuvat saadaan liitettyä tuotetaulukkoon. Nyt ne näkyvät kaikille.

Seuraavaksi kannattaa rakentaa lisäävä päivitys (incremental refresh) tauluun, jossa kuvat ovat. Kuvat tuskin muuttuvat päivittäin, etkä halua kuormittaa tietomallin päivitystä sillä että n kpl isoja kuvastringejä ladataan siihen uudelleen joka päivä.