Self service data ophalen vanuit Exact Online in Power BI (deel 2)

In het verleden heeft mijn collega Gideon een blog geschreven over het self service ophalen van data uit Exact Online. In deze blog is ingegaan op de authenticatie en het aanroepen van de API. In dit blog wil ik verder ingaan op het ophalen van deze data door middel van een aangepaste functie in Power BI.

Let op! In deze blogpost ga ik er vanuit dat de authenticatie inmiddels al is uitgevoerd. Nog niet gedaan? Lees dan eerst de blog van Gideon.

Inleiding

Eén van de eigenschappen van de API van Exact Online is dat er maximaal 60 regels per keer ontvangen kunnen worden. Bij het ophalen van bijvoorbeeld alle financiële transacties kunnen we er vanuit gaan dat dit meer dan 60 transactieregels zijn. Om alle transactieregels op te halen zal de API van Exact Online meerdere keren aangeroepen moeten worden. Hiervoor werkt Exact Online met de Cursor-Based pagination techniek. Dit betekent dat bij elke aanroep naar de API er een link mee teruggestuurd wordt waarmee de vervolgpagina opgehaald kan worden.

Cursor-Based pagination in Power BI ophalen

Het ophalen van deze zogenaamde Cursos-Based pagination kan in Power BI opgehaald worden door gebruik te maken van een zelf te maken functie en de functie List.Generate().

Allereerst maken we een functie waar we een willekeurige URL van Exact Online in kunnen plaatsen. Deze functie haalt vervolgens deze gegevens op uit Exact Online en geeft deze terug in een tabel. Dit is uiteraard nog gelimiteerd tot de eerste 60 regels.

Aangepaste functie maken

De Query die via de Geavanceerde Editor geplakt moet worden is:

[code language=”csharp”]
let// Start Authentication //
actualUrl = URL & “/api/oauth2/token”,
cntnt = Text.ToBinary(Uri.BuildQueryString(
[refresh_token= Refresh_token
,grant_type=”refresh_token”
,client_id= Client_id
,client_secret=Client_secret])
),options = [Headers =[#”Content-type”=”application/x-www-form-urlencoded”],Content=cntnt],
result = Web.Contents(actualUrl, options),#”JSON” = Json.Document(result),
access_token= #”JSON”[access_token],
AccessTokenHeader = “Bearer ” & access_token,// End Authentication //// Set variables //varURL= URL & “/api/v1/” & Number.ToText(DivisionCode) & “/financial/GLAccounts/”,
iterations = 60,

// End variables //

// Start dataload //

Source = (Web.Contents( varURL, [Headers=[Authorization=AccessTokenHeader]])),
xml = try Xml.Tables(Source,null,65001) otherwise null
in
xml
[/dm_code_snippet]

Let op! De variabelen zijn reeds ingesteld in het vorige blog.

De uitkomst van deze query laat de eerste 60 Grootboekrekeningen zien en de URL voor de volgende 60 Grootboekrekeningnummers. Voor de uiteindelijke functie hebben we nodig dat de data (60 grootboekrekeningnummers) en de link naar de volgende 60 regels naast elkaar staan.
Hiervoor vervangen we de volgende regels:

[code language=”csharp”]
xml = try Xml.Tables(Source,null,65001) otherwise null
in
xml
[/dm_code_snippet]

in:

[code language=”csharp”]
xml = try Xml.Tables(Source,null,65001) otherwise null,
entry = xml{0}[entry],
link = xml{0}[link],
nextLink = link{1}[#”Attribute:href”]
in
[Data=entry, Next=nextLink]
[/dm_code_snippet]

Het resultaat is 2 regels. Regel 1 bevat de data van de eerste 60 regels. Regel 2 bevat de link naar de volgende 60 regels. Om deze Query om te zetten naar een functie zullen de volgende aanpassingen doorgevoerd moeten worden:

Helemaal bovenaan de query moet een nieuwe regel toegevoegd worden:

[code language=”csharp”]

()=>

[/dm_code_snippet]

Deze regel zorgt ervoor dat Power BI de regels eronder als functie gaat lezen. Deze functie geven we in dit geval één variabele mee, namelijk de URL. Deze dient tussen de haakjes vastgelegd te worden. Meerdere variabelen kunnen opgegeven worden door een komma tussen de variabelen te plaatsen. Op de plaats waar we de tekst uit de variabele terug willen laten komen in de query zetten we de naam van de variabele nogmaals neer.

In onderstaand voorbeeld heet mijn variabele ‘varURI’ en geef ik deze het type ‘text’.

[code language=”csharp”]

(varURI as text)=>

let

// Start Authentication //

actualUrl = URL & “/api/oauth2/token”,
cntnt = Text.ToBinary(Uri.BuildQueryString(
[refresh_token= Refresh_token
,grant_type=”refresh_token”
,client_id= Client_id
,client_secret=Client_secret])
),

options = [Headers =[#”Content-type”=”application/x-www-form-urlencoded”],Content=cntnt],
result = Web.Contents(actualUrl, options),
#”JSON” = Json.Document(result),
access_token= #”JSON”[access_token],
AccessTokenHeader = “Bearer ” & access_token,

// End Authentication //

// Set variables //

varURL= URL & “/api/v1/”& Number.ToText(DivisionCode) & “/” & varURI,

// End variables //

// Start dataload //

Source = (Web.Contents( varURL, [Headers=[Authorization=AccessTokenHeader]])),
xml = try Xml.Tables(Source,null,65001) otherwise null,
entry = xml{0}[entry],
link = xml{0}[link],
nextLink = link{1}[#”Attribute:href”]
in
[Data=entry, Next=nextLink]

// End dataload //
[/dm_code_snippet]

Let op! De overige variabelen zijn reeds ingesteld in het vorige blog.

Na het opslaan van deze query is onderstaande scherm zichtbaar:

PowerBI Exact Online Function

Bij het invullen van bijvoorbeeld de URL ‘financialtransaction/TransactionLines/’ krijg ik van de functie 2 regels teruggestuurd. 1 regel met daarin de tabel waarin de eerste 60 transactieregels aanwezig zijn en 1 regel waarin de link voor de volgende 60 regels aanwezig is.

In mijn volgende blog zal ik ingaan op de functie List.Generate() zodat alle regels uit de API van Exact Online uitgelezen kunnen worden.

Meer weten over onze oplossingen?

Onze consultants hebben veel ervaring binnen een grote verscheidenheid aan branches.
Eens verder brainstormen over de mogelijkheden voor jouw organisatie?

Maak kennis met onze specialist Arnoud van der Heiden.

Wellicht herkent u een van deze vraagstukken.

Inmiddels hebben wij ruime ervaring opgedaan met Business Intelligence. Wij staan ook u graag te woord bij vragen of opmerkingen.

Business Intelligence (BI) is het technologie gedreven proces van gegevensanalyse dat bedrijven in staat stelt om waardevolle inzichten te halen uit hun gegevens. BI-oplossingen kunnen helpen bij het verzamelen, analyseren en presenteren van bedrijfsgegevens om betere beslissingen te nemen en concurrentievoordeel te behalen.

BI richt zich op het verzamelen, analyseren en presenteren van historische en huidige gegevens om bedrijfsprestaties te meten en te rapporteren. BA daarentegen richt zich meer op het voorspellen van toekomstige trends en mogelijkheden door geavanceerde analysemethoden en -modellen toe te passen op gegevens.

Het gebruik van BI-oplossingen kan bedrijven helpen om hun prestaties te verbeteren, betere beslissingen te nemen en concurrerend te blijven. Het kan hen helpen om inzicht te krijgen in klantgedrag, trends te identificeren, kosten te verlagen, de efficiëntie te verbeteren en nieuwe zakelijke kansen te ontdekken.

Growteq biedt verschillende BI-oplossingen aan, waaronder Power BI van Microsoft, QlikView en Qlik Sense, Tableau en SAP BusinessObjects. Elk van deze oplossingen heeft zijn eigen sterke punten en functies, en kan worden aangepast aan de behoeften van een bedrijf.

Ja, Growteq kan bedrijven helpen bij het implementeren van BI-oplossingen door het bieden van strategisch advies, consultancy en implementatiediensten. Ze werken samen met klanten om oplossingen op maat te maken die aan hun specifieke behoeften voldoen en hen helpen om waarde te halen uit hun gegevens.

De kosten van BI-oplossingen kunnen variëren afhankelijk van de grootte van het bedrijf, de omvang van de implementatie en de gekozen oplossing. Growteq werkt samen met klanten om oplossingen te vinden die passen bij hun budget en behoeften. De voordelen van het gebruik van BI-oplossingen kunnen echter vaak opwegen tegen de kosten, omdat ze bedrijven kunnen helpen om hun prestaties te verbeteren en hun concurrentievoordeel te behalen.

De implementatie van een BI-oplossing omvat meestal de volgende stappen:

  • Definiëren van de doelstellingen en vereisten van het BI-project
  • Verzamelen en integreren van relevante gegevens uit verschillende bronnen
  • Het ontwikkelen van een datawarehouse om de gegevens op te slaan in een logisch model
  • Implementatie van dashboards, KPI’s en visualisatie voor gegevenspresentatie
  • Training van medewerkers
  • Continue monitoring en optimalisatie van de BI oplossing

BI maakt verschillende soorten analyses mogelijk, waaronder:

  • Descriptive analyse: Hierbij worden historische gegevens gebruikt om te begrijpen wat er in het verleden is gebeurd.
  • Diagnostische analyse: Hierbij wordt onderzocht waarom bepaalde gebeurtenissen of trends zich hebben voorgedaan
  • Voorspellende analyses: Hierbij worden gegevens en modellen gebruikt om toekomstige gebeurtenissen en trends te kunnen voorspellen
  • Prescriptive analyse: Hierbij worden aanbevelingen gedaan over mogelijke acties op basis van analyse en voorspelling

Enkele populaire BI-tools zijn o.a.:

  • Microsoft Power BI
  • QlikView
  • Qlik Sense
  • Tableau
  • MicroStrategy
  • IBM Cognos

Business Intelligence (BI) kan gegevens uit verschillende bronnen gebruiken, zoals:

  • Interne databases en systemen (bijv. CRM-systemen, ERP-systemen)
  • Externe gegevensbronnen (bijv. marktonderzoekgegevens, sociale media)
  • Gestructureerde gegevens (bijvoorbeeld databases en spreadsheets)
  • Ongestructureerde gegevens (bijv. tekstuele gegevens, e-mails, logboeken etc.)
  • Big data-bronnen (bijv. sensorgegevens, weblogs)

Growteq heeft ervaring met al deze bronnen.

Selfservice BI verwijst naar het vermogen van niet-technische gebruikers om zelfstandig gegevens te verkennen, te analyseren en rapporten en dashboards te maken met behulp van gebruiksvriendelijke BI-tools. Enkele voordelen van selfservice BI zijn o.a.:

  • Verminderde afhankelijkheid van IT-afdelingen voor rapportage en analyses
  • Snellere besluitvorming doordat gebruikers direct toegang hebben tot benodigde gegevens
  • Verhoogde flexibiliteit en aanpasbaarheid bij het verkennen van gegevens
  • Stimuleert gegeven gestuurde cultuur binnen de organisatie

8 reacties. Leave new

Geef een reactie

Uw e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Fill out this field
Fill out this field
Geef een geldig e-mailadres op.

Categorieën

Categorieën

Vragen?

Onze specialisten geven graag antwoord op uw vragen!