使用 Invantive 在 Exact Online 上手工制作 OData 查询
Handcrafted OData queries on Exact Online with Invantive
我们目前 运行 使用 Python 在 Exact Online 上进行了大量手工制作和优化的 OData 查询。这在数千个部门上运行。但是,我想将它们迁移到 Invantive SQL 以便于维护。
但是 Invantive 没有将 OData 查询中的显式 orderby 等一些优化转发给 Exact Online SQL;他们只是检索所有数据或前 x 个,然后进行排序。
特别是对于最大值的确定,可能会慢很多。
小 table 上的简单示例:
https://start.exactonline.nl/api/v1/<<division>>/financial/Journals?$select=BankAccountIBAN,BankAccountDescription&$orderby=BankAccountIBAN desc&$top=5
是否有替代方法来优化 Invantive SQL 执行的实际 OData 查询?
您可以使用 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
从这里开始你可以使用内存中的table,如:
select * from exact_online_download_journal_top5@inmemorystorage
当然你也可以'insert into sqlserver'。
我们目前 运行 使用 Python 在 Exact Online 上进行了大量手工制作和优化的 OData 查询。这在数千个部门上运行。但是,我想将它们迁移到 Invantive SQL 以便于维护。
但是 Invantive 没有将 OData 查询中的显式 orderby 等一些优化转发给 Exact Online SQL;他们只是检索所有数据或前 x 个,然后进行排序。
特别是对于最大值的确定,可能会慢很多。
小 table 上的简单示例:
https://start.exactonline.nl/api/v1/<<division>>/financial/Journals?$select=BankAccountIBAN,BankAccountDescription&$orderby=BankAccountIBAN desc&$top=5
是否有替代方法来优化 Invantive SQL 执行的实际 OData 查询?
您可以使用 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
从这里开始你可以使用内存中的table,如:
select * from exact_online_download_journal_top5@inmemorystorage
当然你也可以'insert into sqlserver'。