使用Invantive在Exact Online上手工制作的OData查询

时间:2018-04-26 09:10:13

标签: odata exact-online invantive-sql

我们目前正在使用Python在Exact Online上运行一些手工制作和优化的OData查询。这涉及数千个部门。但是,我想将它们迁移到Invantive SQL以便于维护。

但是,一些优化,如OData查询中的显式orderby,不会被Invantive SQL转发给Exact Online;他们只是检索所有数据或顶部x,然后执行命令。

特别是对于可能慢得多的最大值确定。

小桌子上的简单样本:

https://start.exactonline.nl/api/v1/<<division>>/financial/Journals?$select=BankAccountIBAN,BankAccountDescription&$orderby=BankAccountIBAN desc&$top=5

是否有其他方法可以优化Invantive SQL执行的实际OData查询?

1 个答案:

答案 0 :(得分:2)

您可以使用Data Replicator或通过本机平台请求发送手工OData查询,例如:

insert into NativePlatformScalarRequests
( url
, orig_system_group
) 
select replace('https://start.exactonline.nl/api/v1/{division}/financial/Journals?$select=BankAccountIBAN,BankAccountDescription&$orderby=BankAccountIBAN desc&$top=5', '{division}', code) 
,      'MYSTUFF-' || code
from   systempartitions@datadictionary 
limit  100 /* First 100 divisions. */

create or replace table exact_online_download_journal_top5@inmemorystorage
as
select jte.*
from   ( select npt.result 
         from   NativePlatformScalarRequests npt 
         where  npt.orig_system_group like 'MYSTUFF-%'
         and    npt.result is not null
) npt
join   jsontable
       ( null 
         passing npt.result 
         columns BankAccountDescription varchar2 path 'd[0].BankAccountDescription'
         ,       BankAccountIBAN varchar2 path 'd[0].BankAccountIBAN'
       ) jte

从这里开始,您可以使用内存表,例如:

select * from exact_online_download_journal_top5@inmemorystorage

但当然你也可以'插入sqlserver'。