Exact Online InvoiceLinesIncremental import naar Qlik (via app cloud / for json) faalt

Ik probeer onze Exact Online data via de Invantive App Online naar Qlik te krijgen en deze via de for json manier in te laden. Hiervoor is onderstaande manier gevolgd:

Browser

Zodra ik de data in Qlik Sense probeer in te laden gaat dit goed voor de AccountsIncremental, maar loop ik tegen een probleem aan bij de SalesInvoiceLinesIncremental.

In de browser krijg ik voor de accounts 2.518 accounts terug via de URL:

https://app-online.cloud/apps/....../?table=ExactOnlineREST.Incremental.AccountsIncremental


Als ik het zelfde doe voor de SalesInvoiceLinesIncremental, dan lukt de request niet altijd in de browser. In de App Monitoring zie ik het request wel als succesvol:

https://app-online.cloud/apps/....../?table=ExactOnlineREST.Incremental.SalesInvoiceLinesIncremental


Qlik Sense

Hetzelfde scenario doet zich vervolgens ook voor in Qlik.

Hier krijg ik onderstaande fout bij het laden van de SalesInvoiceLinesIncremental tabel.

Volgens de log worden er rond 150.000 regels geladen, maar vervolgens faalt het laden:

Started loading data
Connected
RestConnectorMasterTable << RestConnectorMasterTable
Lines fetched: 2,518
root << RestConnectorMasterTable
Lines fetched: 2,518
Connected
RestConnectorMasterTable << RestConnectorMasterTable
Lines fetched: 149,614
root-2 << RestConnectorMasterTable
Lines fetched: 149,614
__countryGeoBase << countryGeo
(QVD (row-based) optimized)
Lines fetched: 249
__countryCodeIsoTwo2Polygon << __countryGeoBase
Lines fetched: 249
The following error occurred:
Connector REST_httpsapp-online.cloudapp......table=ExactOnlineREST.Incremental.SalesInvoiceLinesIncremental not found (: connection not found
LIB CONNECT TO [REST_httpsapp-online.cloudapp......table=ExactOnlineREST.Incremental.SalesInvoiceLinesIncremental])
The error occurred here:
LIB CONNECT TO [REST_httpsapp-online.cloudapp......table=ExactOnlineREST.Incremental.SalesInvoiceLinesIncremental]
Data has not been loaded. Please correct the error and try loading again.

De timeout settings in Qlik staan op de maximale waarde van 10000:

Wat kan ik doen om alsnog de volledige data in Qlik te importeren?

De crash van de browser bij het ophalen van de SalesInvoiceLinesIncremental wordt waarschijnlijk veroorzaakt door het renderen van een JSON-bestand van 210 MB (34,27 MB compressed). Mogelijkerwijs dat Google Chrome het nog wel aan kan, maar ruim 200 MB JSON is gewoon fors.

Paar vragen:

  • Wat opvalt is het “Type”, wat staat er in de kolom “Type” dat begint met “vnd.m…”?
  • Wat is de eenheid van 10000 bij Connection Timeout en Read/Write Timeout?

Het lijkt er op op basis van “Lines fetched: 149,614” dat het laden van de 149.000 regels wel gelukt is in 38 seconden, zie afbeelding en logging van Qlik:

Dat verklaart ook waarom in Invantive App Online een HTTP-status 200 gegeven wordt. Aangezien het aantal rijen alleen bepaald kan worden door alles binnen te halen, bevestigt dit dat ook Qlik de volledige payload heeft verwerkt.

Maar het verder verwerken lukt niet in Qlik:

Staat er nog iets essentieels in het rode of bovenstaande bij:

The following error ocurred:
Connector REST (geanonimiseerd)

Is er misschien een beperking zoals geheugen die geactiveerd wordt op Qlik door het grotere volume? Die laatste hypothese kan getest worden door het dynamic SQL-statement van:

  for r in
  ( execute
    immediate 
    'select * from ' 
    || coalesce(l_table_fq_name, 'MISSING')
    || ' for json auto'
  )
  loop
    cloud_http.append_to_response_body_text(r.json);
  end loop;
...

te wijzigen in:

  for r in
  ( execute
    immediate 
    'select * from ' 
    || coalesce(l_table_fq_name, 'MISSING')
    || ' limit 10'
    || ' for json auto'
  )
  loop
    cloud_http.append_to_response_body_text(r.json);
  end loop;
...

en telkens een hogere limiet te kiezen voor “10”.

Bedankt voor je snel antwoord!

Duidelijk wat de JSON betreft. Het is mij enkel een keer gelukt het via de browser op te halen. Nu faalt het helaas iedere keer tot ik het aantal lines op 10 heb gezet. Dan lukt het uiteraard snel.

Wat opvalt is het “Type”, wat staat er in de kolom “Type” dat begint met “vnd.m…”?

Het type is: vnd.mozilla.json.view

Wat is de eenheid van 10000 bij Connection Timeout en Read/Write Timeout?

Volgens de documentatie gaat het om seconden. Helaas werkt het op -1 zetten niet bij Qlik. Hier komt een foutmelding: Timeout can be only be set to 'System.Threading.Timeout.Infinite' or a value >= 0. (Parameter 'value')

Het toevoegen van het line limit van 10 zorgt ervoor dat ik in de browser nu heel snel een resultaat heb van 10 regels. Echter krijg ik in Qlik nog steeds de zelfde fout te zien.
Helaas is deze niet heel specifiek. Ook in de Qlik forums heb ik hier niet veel over kunnen vinden.

Complete log:


Started loading data

Connected
RestConnectorMasterTable << RestConnectorMasterTable
Lines fetched: 10
root << RestConnectorMasterTable
Lines fetched: 10
Connected
RestConnectorMasterTable << RestConnectorMasterTable
Lines fetched: 10
root-2 << RestConnectorMasterTable
Lines fetched: 10
__countryGeoBase << countryGeo
(QVD (row-based) optimized)
Lines fetched: 249
__countryCodeIsoTwo2Polygon << __countryGeoBase
Lines fetched: 249

The following error occurred:

Connector REST_httpsapp-online.cloudapp.........table=ExactOnlineREST.Incremental.SalesInvoiceLinesIncremental not found (: connection not found
LIB CONNECT TO [REST_httpsapp-online.cloudapp.........table=ExactOnlineREST.Incremental.SalesInvoiceLinesIncremental])


The error occurred here:

LIB CONNECT TO [REST_httpsapp-online.cloudapp.........table=ExactOnlineREST.Incremental.SalesInvoiceLinesIncremental]
Data has not been loaded. Please correct the error and try loading again.

De twee data sources zijn op de zelfde manier opgebouwd.
Toch lijkt de tabel SalesInvoiceLinesIncremental ook met een limiet van 10 regels niet te werken.
Als ik de tabellen wil selecteren van de data source, lijkt Qlik deze wel te kennen. Zie screenshot hieronder: