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