The Fabasoft Integration for OData processes data in of two steps:
Keep in mind that any caching within the OData services is performed per user. Thus, if multiple users access an OData service, they all work with their dedicated OData cache.
In order to reduce the processing overhead of the initial call to an OData service you can
Should the OData service lack performance with regards to subsequent calls, you may increase the value in the Cache Duration field. In this case, the data is stored in the cache for a longer period, hence subsequent calls may reuse the already existing data table.
In OData request syntax there is a filter targeting the number of rows fetched. It is the “top” command and can be used as followed:
odata/COO.1.506.4.2141/Scrum_Story?$top=500
This top command is also used in some business intelligence tools like Microsoft Power BI when showing a preview of the data.
Because it is commonly used this command has been optimized. That means internally only that amount of entities are fetched and processed. For the user it is transparent – it just does what it should do, just a little faster than other commands.
As many customers have the requirement to fetch data on a periodically base there is a performance optimization for the case that a filter is used to check if the objchangedat timestamp is higher than a given date.
That can be used, for example, to get every day the changed objects out of the Fabasoft Cloud. Internally this case is highly optimized by handling this case deep in the system and so avoiding much overhead.
First you have to add the objchangedat (System Change Timestamp in English) to your entity:
Then you can use the filter like that:
odata/COO.1.506.4.2141/Scrum_Story?$filter=System_Änderungszeitpunkt gt 2023-01-10T09:20+1
It is important to set the date in the correct format, otherwise you will get a message like this:
"message": "The query specified in the URI is not valid. The DateTimeOffset text '2023-01-10T09:20' should be in format 'yyyy-mm-ddThh:mm:ss('.'s+)?(zzzzzz)?' and each field value is within valid range."
There are some limitations for using this feature: