Ручные OData запросы на Exact Online с Invantive - PullRequest
0 голосов
/ 26 апреля 2018

В настоящее время мы выполняем ряд оптимизированных запросов OData на Exact Online с использованием Python. Это работает на несколько тысяч подразделений. Однако я хочу перенести их в Invantive SQL для удобства обслуживания.

Но некоторые оптимизации, такие как явный порядок в запросе OData, не направляются в Exact Online с помощью Invantive SQL; они просто извлекают все данные или верхний х, а затем выполняют заказ.

Специально для определения максимального значения, которое может быть намного медленнее.

Простой образец на маленьком столе:

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

Есть ли альтернатива для оптимизации реальных запросов OData, выполняемых Invantive SQL?

1 Ответ

0 голосов
/ 26 апреля 2018

Вы можете использовать репликатор данных или отправить запрос 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».

...