Meer weten?
0345-616 888
info@transfer-solutions.com

Hypes zijn heerlijk. Het brengt me de externe energie om op de golf mee te drijven. Zo ook met R. Als je dan toch bezig bent, is het ook leuk om iets grappigs mee te maken en te laten zien.

Dit artikeltje is een voorbeeld van de kracht van R en is makkelijk na te spelen.

Zorg eerst voor een installatie van R en RStudio via respectievelijk: https://cran.r-project.org en https://www.rstudio.com sites.

In RStudio heb je de mogelijkheden om je R code te schrijven, op te slaan en uit te proberen en is het erg eenvoudig om beschikbare packages op te halen van het Internet en vervolgens op te nemen in je code.

Voor dit voorbeeld heb je de jpeg package nodig. Met de jpeg package kan je foto’s met het type .jpg en .jpeg inlezen in een R variabele van het type DataFrame. Dit gebeurt via de volgende regels code

De variabele img is nu een 3 dimensionale matrix. Elke pixel van de foto is ingelezen als een positie op een rij, een posities op een kolom en een waarde voor de R (Rood) intensiteit, de G (Groen) intensiteit en de B (Blauw) intensiteit. De intensiteiten zijn waarden tussen 0 en 1. De variabele img die een foto met een resolutie van 768 bij 1024 ingelezen heeft, is dan gedefinieerd als img[1:768,1:1024,1:3].

Iedere RGB waarde kan met R code makkelijk worden aangepast.

Voorbeeld: Het statement img[1,1,1] <- 1 zal de Rood intensiteit van de pixel linksboven van het plaatje vol aan zetten. Dit betekent overigens niet dat de pixel fel rood wordt, want dan zullen de G en B intensiteiten eerst op 0 gezet moeten worden.

Uiteindelijk kan de aangepaste variabele img worden weggeschreven naar een nieuw plaatje met de volgende code:

Nu volgen twee leuke voorbeelden. We laden de volgende foto in:

Vervolgens geven we elke pixel het gemiddelde van de 3 RGB waarden met drie regels code:

De vraag aan u als lezer is: wat verwacht je van de uitkomst van deze manipulatie? De RGB waarden zijn voor alle 3 kleuren gelijk en het plaatje wordt……

een perfecte zwart-wit foto.

Voor het tweede voorbeeld is het mijn doel om de foto van buiten naar binnen van donker naar licht te laten vervagen. In dit voorbeeld doe ik dat niet lineair maar met een sinus functie anders wordt de foto te donker. Eerst heb ik een functie gemaakt die een matrix oplevert ter grootte van de foto met waarden tussen 0 en 1 waarbij de 0 waarden aan de buitenkant zitten en de 1 waarden in het centrum.

Deze functie kan aangeroepen worden met de nrow(img) functie (het aantal rijen van de foto) en de ncol(img) functie (het aantal kolommen van de foto). Elke RGB code kan vervolgens vermenigvuldigd worden met de waarde in de voorbereide matrix.

De code van het aanroepen en de fotomanipulatie ziet er dan als volgt uit:

En wanneer de img weer als foto wordt weggeschreven is het resultaat als volgt

Ik vermoed dat Photoshop het op dezelfde manier doet als ik met R voor elkaar kan krijgen. Erg leuk om mee te experimenteren.

We moeten even de context schetsen voordat ik to-the-point kom. Laten we dat dan even snel doen.

In het groeimodel van Business Intelligence zien we nog steeds veel applicaties met ieder hun eigen BI oplossingen om de data uit die applicaties te ontsluiten (vervelend werkwoord, ik weet het…). Toen kwamen de Enterprise Datawarehouses en nu proberen we de data bij elkaar te brengen in één gegevensbron. Dat is een hele opgave op het gebied van technologie, integratie en datakwaliteit, maar zolang ik de DataLakes nog niet werkend zie, zijn we het wel aan het proberen.

Eén van de problemen bij het rapporteren over meerdere systemen is het in lijn krijgen van Master Data. Master Data wordt ad-hoc, afhankelijk van de toenmalige en huidige informatiebehoeftes, verdeeld over de verschillende applicaties en zo goed als het kan bijgehouden en aangevuld. Hierbij ligt de nadruk op het ondersteunen van de data die nú nodig is en niet op het up-to-date houden van data die niet meer actief gebruikt wordt.

Als we dan Master Data willen opvoeren in het Enterprise Datawarehouse komt de terechte vraag welk systeem we leidend laten zijn. Helaas zullen andere systemen met vergelijkbare data dit willen betwisten en mogelijk als argument gebruiken dat zij een andere definitie geven aan een Master Data element. Het zijn net politici. Al met al: het wordt tijd om beslissingen te nemen en in actie te komen. Zie hier mijn oplossing om dit traject te ondersteunen.

Het idee is om een Wikipedia-achtige Web interface te maken waardoor de data architectuur voor iedereen toegankelijk wordt gemaakt. Het datamodel achter de Web interface ziet er als volgt uit:

Uitleg: Centraal staat het Data Element. Per Data Element wordt een applicatie aangewezen als de Single Source of Truth. Een Data Element kan ook bekend zijn onder een andere naam (een synoniem) in een andere applicatie. Wanneer we dat vastleggen voorkomen we dat personen niet weten van elkaar dat ze het over hetzelfde hebben. Een Data Element kan gedefinieerd worden als een referentie of als karakteristiek van een ander Data Element. Zo is een artikelomschrijving een karakteristiek van een artikelcode en is de leverancierscode een referentie van een artikelcode omdat de leverancierscode op zich zelf ook een primair Master Data element is.

Verder leggen we vast welke afdeling voor het Data Element de eigenaar is en welke afdeling de Data Elementen onderhoudt. Dit kan verder uitgebreid worden volgens het

Om ook inzicht te geven hoe het Data Element zich door de verschillende applicaties beweegt leggen we de Interfaces vast van de ene naar de andere applicatie.

Hoe ziet de gebruikersinterface er dan uit? Dit is ontwikkeld met behulp van Oracle APEX 5.

Een Google-achtige Home pagina

De gebruiker kan beginnen met typen en krijgt direct feedback uit de entiteiten Master Data Elementen, Interfaces, Applicaties en Organisaties. Eigenlijk is de Search… button overbodig.

Het menu aan de linkerkant geeft toegang tot de overzichtsschermen. Ieder item heeft een overzichtsscherm met de belangrijkste informatie in een tabelvorm.

Het overzichtsscherm Master Data Elementen

Het overzicht probeert een samenvatting te geven om van de Master Data Elementen met de naam, de gebruikte synoniemen, de definitie, een voorbeeldwaarde, de applicatie die gedefinieerd is als Single Source of Truth en de afdeling die de eigenaar is.

Wanneer je meer informatie wilt weten over het Master Data Element kies je de info button waarna de detailpagina direct wordt getoond.

Deze pagina bestaat uit 3 kolommen: Element, Infrastructuur en Organisatie. Onder Element zie je de informatie over het Master Data Element en andere Elementen die in relatie staan met het betreffende Element. Onder Infrastructuur staan de Interfaces waar het Element onderdeel vanuit maakt en vervolgens onder welke synoniemen het Element bekend is in andere applicaties. De derde kolom toont de afdeling die eigenaar is en de afdeling die de data aanmaakt/beheert. Ook is er een mogelijkheid om een document te koppelen, zoals een SOP (Standard Operating Procedure).

Op vrijwel alle data is een link gezet. Zo kan er direct worden doorgeklikt naar andere elementen, naar interface details, applicaties en afdelingen.

Zie hier de pagina die getoond wordt wanneer je doorklikt op de genoemde Interface. Je ziet op dit scherm ook de andere elementen die onderdeel uitmaken van de interface, eventueel aangevuld met commentaar als er sprake is van datatransformatie of filtering. We hebben er ook voor gekozen om manuele interfaces vast te leggen. Dat zijn die interfaces waarbij de Master Data wordt bijgewerkt aan de hand van een mailtje of een telefoontje.

De Applicatiepagina met contactgegevens. Daar staat ook welke elementen in deze applicatie gedefinieerd zijn als Single Source of Truth

en als laatste de Afdelingspagina

Misschien leuk om te weten dat deze applicatie in 5 dagen gebouwd is met behulp van mijn Transfer collega’s. Jullie weten me te vinden 🙂 .

De uitdaging is wel om deze Single Source of Truth encyclopedie up-to-date te houden maar vanwege de Wikipedia-achtige opzet kan iedereen bijdragen en kunnen individuele applicatiebeheerders hun eigen interfaces beheren.

Het invullen is wellicht wat werk, maar de discussies zullen toch gevoerd moeten worden en dan is het uiteindelijke resultaat voor de hele organisatie duidelijk.

Donderdag 23 maart was ik samen met collegae te gast bij het Big Data & Analytics Forum georganiseerd door Oracle Nederland om weer eens een overzicht te krijgen wat Big Data ons biedt en nog gaat bieden. De hype is er wel een beetje af en er wordt gewoon geld mee verdiend (soms ook veel). Oracle biedt de benodigde infrastructuur, platformen, applicaties en tools om het brede scala aan Big Data mogelijk te maken. Zowel ‘on premise’ als in de ‘Cloud’. Ach… en als ik dan toch bezig ben zijn de toepassingen inmiddels legio: grote hoeveelheden gestructureerde en ongestructureerde data die je wil bevragen (Big Data SQL), wil analyseren op patronen (R), waar je de toekomst mee wil voorspellen (Predictive Analytics) of waarmee je voorstellen op vraagstukken van systemen steeds beter wil laten worden (Machine Learning).

Maar het onderwerp van dit blogje gaat over iets veel kleiners, waar ik enthousiast over werd omdat het grappig, handig, gratis, snel is en nog belangrijker… ik begrijp het ook. Omdat ik het zelf nog niet kende voor deze donderdag, zou dit voor jullie ook kunnen gelden. Vandaar dus…

Oracle heeft Synopsis gekocht (volgens mij ergens eind vorig jaar, begin dit jaar) en ter beschikking gesteld voor iedereen. Synopsis kan je vinden als App in de Apple Store of Play Store. Het is een BI tooltje (Mobile Analytics) met een handige interface voor offline gebruik van je data en een hoge graad van selfservice. Ik kan het dan ook snel uitleggen:

  • laad je data in Excel of CSV formaat in Synopsis;
  • Synopsis herkent de tekstkolommen en de meetwaardekolommen. Mocht je het met het voorstel niet eens zijn dan is dat makkelijk aan te passen;
  • Synopsis doet voor elke meetwaarde een grafisch voorstel om deze tegen de tekstkolommen (in BI termen: de dimensies) af te beelden. Dat kan een bar-chart zijn, een line chart, een pie chart (of donut), een bubble chart, een scatter chart, een radar of een gewone tabel.

  • De interactie, die vervolgens mogelijk is, is de geladen data te combineren in grafieken. Vervolgens is het heel eenvoudig om filters te gebruiken op alle mogelijke (combinaties van) waarden in de dimensies en/of een range te definiëren voor de meetwaarden, zoals het antwoord op de vraag: geef me de top 5 producten.

Synopsis, draaiend op mijn Samsung S6, heeft geen enkel probleem met het laden van 75.000 rijen met 5 kolommen (waarvan 3 tekstkolommen en 2 meetwaarden), ter grootte van een Excel file van 3 MB. De analyse kan ook nog beschermd worden zodat deze alleen met je vingerafdruk geopend kan worden.

Waarom gratis? Dat zou wel eens kunnen omdat je als gebruiker nu steeds zelf de data moet verversen met een nieuwe Excel of CSV dump uit je eigen systemen. Dat zou toch makkelijker kunnen en binnenkort kan dat ook, want dan kan je je data halen uit… de Oracle Cloud. En zo zijn we weer aangekomen bij wat voor Oracle belangrijk is, de Oracle Cloud.

Al met al: probeer zelf maar eens met een datasetje (er wordt ook een demo datasetje meegeleverd). Binnen een half uurtje heb je het helemaal onder de knie.

Have fun.

Nieuws

Het Klant Event 2018

13 december 2018 • Mariette van Pinxteren

Meer nieuws

Blog

Meer blogitems

Training & Events

Meer training & events