Fout: itgensql056 bij opvragen uren en projecten

Er is geprobeerd de hoeveelheid data te beperken door vanuit de database/tabel PjtTimeTransactions enkel de laatste 12 maanden aan data op te vragen. Echter, moet uit de overige twee databases/tabel wel alle data opgehaald worden. Hiervoor is onderstaande code gebruikt:

SELECT *
FROM PjtTimeTransactions
WHERE date > add_months(sysdateutc, -12)

SELECT *
FROM Payroll.Employees

SELECT *
FROM Project.Projects

Allen hier kwam de volgende itgensql056 fout op:

Syntax error between the two '***' on line 4, column 0:
SELECT *<CRLF>FROM Payroll.Employees<CRLF><CRLF>***SELECT*** *<CRLF>FROM Project.Projects<CRLF><CRLF>SELE...
Error: mismatched input 'SELECT' expecting {<EOF>, ';'}

Hoe moet deze fout worden opgelost?

Op welk Invantive product is dit? Hoe is de fout opgewekt?

Er wordt gebruik gemaakt van Invantive om data uit Exact Online in te laden in PowerBI. Odata/InvantiveCloud helpt dat? Voorheen werd als SQL-code use all gebruikt, maar dan werd er een time-out gecreëerd met een itgenboe147-fout.

Vandaar dat er gekeken is om het dataverzoek te limiteren. Daaruit is bovenstaande SQL-code ontstaan. Alleen lijkt er een fout te ontstaan aangezien er drie losstaande taken worden uitgevoerd en dit er één moet zijn, maar mijn SQL-code kennis is nihil.

Het is nog niet geheel duidelijk. De drie SQL-statements zullen ergens uitgevoerd worden, maar een itgenboe147 is een time-out (zie tip instellen time-out op Vermijd time-out fout bij Power BI OData download).

Om de looptijd te beperken is het ook handig om de tabel PjtTimeTransactionsIncremental te gebruiken, evenals ProjectsIncremental; die zijn significant sneller. Een filter kan ook meegegeven worden vanuit Power BI via een filterstap. Zorg dat deze filterstap direct na de download zit, zodat het filter dankzij Power BI’s query-folding doorgestuurd wordt naar Invantive Cloud.

Is het mogelijk een schermafdruk te maken van de statements en de error?

Dit is wat op dit moment vermeld wordt bij statistieken:

  • Datum Laatste Aanmeldpoging (UTC): 18-05-2022 03:08:24
  • Laatste Uitzonderingscode: itgenboe073
  • Laatste Uitzonderingsbericht: itgenboe073: De opstart-SQL-statements van de database leverden een SQL-fout op. Corrigeer de SQL die op de database is gedefinieerd. (SELECT * FROM Payroll.Employees SELECT * FROM Project.Pro…tTimeTransactions WHERE date > add_months(sysdateutc, -12) ). itgensql056: Syntax error between the two ‘***’ on line 4, column 0: SELECT *FROM Payroll.EmployeesSELECT *FROM Project.ProjectsSELE… Error: mismatched input ‘SELECT’ expecting {, ‘;’}

Dit is wat ik krijg te zien als ik de SQL editor open:

Als ik de data uit ProjectsIncremental ga halen moet ik het hele rapport overhoop gooien en heb ik momenteel geen tijd voor. Ik denk dat de time-out ook op te lossen is door het dataverzoek te limiteren naar de laatste 12 maanden, dat is wat de doelstelling is met de nieuwe SQL-code.

De code is werkbaar; het probleem zit hem in de locatie waar u de SQL uit probeert te voeren, namelijk in Startup SQL van een database.

Normaliter staat deze ingesteld op “use all;” (gebruik alle partities).

Meer informatie over de Startup SQL kunt u hier lezen.

Het statement wordt nu uitgevoerd als een SQL batch (zie Invantive SQL Grammar v22.1). Eerste verbetering zou zijn om de statements op de juiste wijze op te nemen, gescheiden door een puntkomma (‘;’).

Zodra de Startup SQL van uw database correct is kunt u de Online SQL Editor openen.

Echter, deze startup SQL is van generlei invloed op de Power BI of SQL Editor. Als de statements werken, dan worden de resultaat meteen weggegooid.

Voor het beperken van de dataset is het effectiever om een filter te gebruiken. Algemene tips voor prestatieverbetering staan op Overzicht van Power BI-technieken om prestaties en downloadtijd te verbeteren, maar waarschijnlijk heeft u het meeste plezier van deze twee:

Deze vraag is automatisch gesloten na tenminste 2 weken inactiviteit nadat een mogelijk passend antwoord is gegeven. Het laatste gegeven antwoord is gemarkeerd als oplossing.

Gelieve een nieuwe vraag te stellen via een apart topic als het probleem opnieuw optreedt. Gelieve in de nieuwe vraag een link naar dit topic op te nemen door de URL er van in de tekst te plakken.