Laad Exact Online als JSON data in Qlik - Wiki (nl) - invantive
Laad Exact Online als JSON data in Qlik
exact-online, qlik, json
guido.leenders May 12, 2021, 6:28am #1
Invantive Cloud ondersteunt het laden van real-time data uit Exact Online administraties voor Power BI, Power Query en Azure Data Factory via het OData4 protocol.
Qlik en Tableau met Exact Online
Echter, Qlik ondersteunt alleen OData3. Qlik gebruikers konden daardoor alleen via een tussenstap zoals datareplicatie naar een SQL Server database gegevens verwerken uit Exact Online of één van de andere ondersteunde platformen.
Hetzelfde geldt ook voor Tableau: Tableau ondersteunt alleen OData3 met JSON en OData4 met XML.
Dankzij de for json clause is het echter eenvoudig om zelf een driver te maken als webapp in Invantive Cloud die de real-time gegevens uit Exact Online teruggeeft voor verwerking in Qlik met de Qlik REST Connector.
De Qlik REST Connector ondersteunt standaard de benodigde Basic authentication en via de URL kan meegegeven worden welke tabel(len) uit Exact Online teruggegeven moeten worden. Ook geavanceerdere scenario's met filteren op Exact Online administratie of bijvoorbeeld specifieke klanten of datums is zo eenvoudig mogelijk.
Doorloop de volgende stappen om een webapplicatie te maken die de JSON teruggeeft. Dit concept is niet alleen eenvoudig toepasbaar voor Exact Online maar voor willekeurig welk cloudplatform zoals ActiveCampaign of Simplicate:
Zorg dat een Exact Online database bestaat. Als die niet bestaat, maak hem aan via https://cloud.invantive.com/app/setup/databases/new/exactonline.
Voeg een applicatie toe voor de JSON connector:
Voeg aan deze nieuwe applicatie een uitvoerbare module toe:
De broncode staat aan het einde van dit topic.
Ga terug naar de applicatie en kies de knop "Uitvoeren":
Kies de Exact Online database:
En kies de knop "Uitvoeren".
Test de module door op de module te klikken en kies uiteindelijk "Kopieer Link".
Op het klembord staat nu de URL om deze applicatiemodule uit te voeren voor de gekozen database.
Plaats deze URL in de Qlik REST Connector met erachter de tabelnaam, samen met de Invantive Cloud aanmeldgegevens:
https://app-online.invantive.com/apps/GUID/databases/URLSEGMENT/modules/GUID/?table=ExactOnlineREST.Financial.Journals
De URL kan ook handmatig getest worden in een browser:
Exact Online JSON714×339 29.3 KB
l_table_fq_name constant varchar2 := cloud_http.get_request_query_parameter_value('table');
-- Check that a table is specified.
if coalesce(length(l_table_fq_name), 0) = 0
-- Check correct table name.
where  full_qualified_name = l_table_fq_name
, 'There is no table with the name '''
|| l_table_fq_name
Jesse.vdS May 27, 2021, 10:22am #2
Ik kan de JSON in een browser aanroepen maar ik kom niet verder in Qlik.
Bij het invoeren van "Basic" authentication wordt er nog steeds de onderstaande error gegeven. Moet dit met parameters gedaan worden?
HTTP protocol error 401 (Unauthorized): Requested resource requires authentication.
Wanneer ik onderstaande probeer met bijvoorbeeld divisie code 123456 werkt dit niet. Hoe kan je filters hier invoeren?
https://app-online.invantive.com/apps/GUID/databases/URLSEGMENT/modules/GUID//?table=ExactOnlineREST.System.SystemDivisions?$filter=Code%20eq%20123456
guido.leenders May 27, 2021, 10:44am #3
Jesse.vdS:
geeft aan dat blijkbaar de Basic authenticatiegegevens niet doorgegeven worden. Neem even contact op met support via Teamviewer, dan wordt er gezamenlijk gekeken.
M.b.t. filters: die zijn in dit voorbeeld niet mogelijk gemaakt. $filter is OData syntax, maar dit loopt volledig buiten OData om, hetgeen juist het voordeel is voor specifieke toepassingen.
Filters zijn wel mogelijk, net zoals via get_request_query_parameter_value('table') de waarde van de GET-parameter table wordt opgevraagd en gebruikt. Bijvoorbeeld door een parameter division te verwerken in de PSQL is zo'n filter mogelijk.
Hou er wel rekening mee dat GET-parameters maar 1x door een ? voorafgegaan mogen worden om een geldige URL te vormen. Denk aan bijvoorbeeld deze URLs:
https://app-online.invantive.com/apps/GUID/databases/URLSEGMENT/modules/GUID//?table=ExactOnlineREST.System.SystemDivisions&division=123456