Persoonsgegevens uit Easyflex API ophalen

Graag zouden wij een koppeling maken met de Easyflex API waar wij een enkele tabel van willen ontsluiten. Is het mogelijk om hier een ontsluiting voor te maken in afwachting van een mogelijke driver?

Om welke specifieke tabel gaat het?

Als u een licentiesleutel stuurt van een testomgeving, dan zullen we proberen dat te vangen in een standaard HTTPDownload query.

Het gaat om de tabel: fw_persoonsgegevens.

Zorg allereerst dat het IP-adres gewhitelist is bij Easyflex.

Als het maar om één tabel uit de Easyflex API gaat, dan is een view mogelijk een oplossing:

create or replace view EasyFlexPersoonsgegevens
as
select xml.*
from   HTTPDownload@DataDictionary
       ( url => 'https://easyflex.net/dataservice/'
       , method => 'POST'
       , contentType => 'text/xml'
       , diskCache => true
       , diskCacheMaxAgeSec => 86400 /* Cache one day. */
       , textPayload
         =>
         xmlformat
         ( '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:EfDataService"><soapenv:Header/><soapenv:Body>'
           || '<urn:ds_fw_persoonsgegevens_all>'
           || xmlelement('urn:license', 'PUT-HERE-SECRET-LICENSE-KEY-OR-JOIN-WITH-A-SETTINGS-TABLE')
           || '<urn:parameters>'
           || xmlelement('urn:memorubrieken', false)
           || xmlelement('urn:communicatie', false)
           || xmlelement('urn:reservering', false)
           || '</urn:parameters>'
           || '<urn:fields>'
           || '<urn:fw_persoonsgegevens_all_registratienummer/>'
           || '<urn:fw_persoonsgegevens_all_inschrijver/>'
           || '<urn:fw_persoonsgegevens_all_dossiernummer/>'
           || '<urn:fw_persoonsgegevens_all_achternaam/>'
           || '<urn:fw_persoonsgegevens_all_voornaam/>'
           || '</urn:fields>'
           || '</urn:ds_fw_persoonsgegevens_all>'
           || '</soapenv:Body></soapenv:Envelope>'
         )
       ) htp
join   XMLTable
       ( '/*["Envelope"=local-name()]/*["Body"=local-name()]/*["ds_fw_persoonsgegevens_all_result"=local-name()]/*["fields"=local-name()]/*["item"=local-name()]'
         passing htp.contents_char
         columns registratienummer int      not null path './*["fw_persoonsgegevens_all_registratienummer"=local-name()]'
         ,       inschrijver       int      not null path './*["fw_persoonsgegevens_all_inschrijver"=local-name()]'
         ,       dossiernummer     int64        null path './*["fw_persoonsgegevens_all_dossiernummer"=local-name()]'
         ,       achternaam        varchar2 not null path './*["fw_persoonsgegevens_all_achternaam"=local-name()]'
         ,       voornaam          varchar2     null path './*["fw_persoonsgegevens_all_voornaam"=local-name()]'
       ) xml

Een dergelijke view kan vastgelegd worden zoals beschreven in Eigen database-views gebruiken voor SQL en BI-tools door hem vast te leggen in de “On Startup SQL” van de database.

De view gebruikt local-name; dat kan efficiënter, maar is vlotte en eenvoudige manier om de XML-namespaces niet te hoeven organiseren.

De HTTP diskcache is in HTTPDownload@DataDictionary ingesteld op 1 kalenderdag.

Gebruik

De persoonsgegevens uit Easyflex zijn vervolgens vlot te benaderen in Invantive SQL via bijvoorbeeld:

select *
from   EasyflexPersoonsgegevens

met als resultaat bijvoorbeeld:

In Power BI kan de tabel gekozen worden mits de viewdefinitie in de startup SQL staat. Vergeet niet om bij wijzigingen in de view in Bridge Online in het menu rechtsboven te kiezen voor “Cache resetten”.

Een luxere versie is gebruik maken van een klein app in Invantive App Online, maar dat is in geval van maar één tabel overmatig complex.

Performance

Een test is uitgevoerd met circa 2400 regels. Verwachting was dat de looptijd van de Invantive SQL query even zou duren, maar ondanks het riante gebruik van local-name worden alle gegevens ruim binnen de second opgehaald.

Is het ook mogelijk om direct vanuit Power BI te verbinden met Easyflex?

Voor een directe koppeling vanuit Power BI naar Easyflex zonder Invantive Cloud is advies om contact op te nemen met Easyflex of er actuele mogelijkheden zijn. Bovenstaande aanpak werkt via Invantive Cloud en kan eventueel uitgebreid worden tot een volledige driver indien nodig.

Een driver voor Easyflex wordt op dit moment toegevoegd aan alle Invantive-producten. Zie Beheers uw gegevens op Easyflex en meer dan 75 andere platforms, 180 dagen gratis.

Mooi om te zien dat er een driver voor Easyflex wordt toegevoegd. Kan deze al benaderd worden met Power BI? Ik kan dat niet vinden tussen de beschikbare databases.

De driver is nog in ontwikkeling. Verwacht binnen enkele weken de mogelijkheid om Easyflex toe te voegen.

De Easyflex-driver voor Power BI kan vanaf 15 augustus 2023 gebruikt worden op Invantive Cloud.

Zie ook:

Een bericht is gesplitst naar een nieuw topic: Extra velden Easyflex