Twinfield error OLE DB- of ODBC-fout: [DataSource.Error] OData: Invalid JSON. A comma character ‘,’ was expected in scope ‘Array’. Every two elements in an array and properties of an object must be (itgenclr083)

Ik probeer Twinfield tabel: ‘GeneralLedgerDetailsV3@tfd’ in te laden in Power BI. Het werkt als ik één jaar inlaad met de volgende m code in de advanced editor:

let
    Source = OData.Feed("https://bridge-online.cloud/l-m-groep-twinfield/odata4", null, [Implementation="2.0", ODataVersion=4, OmitValues=ODataOmitValues.Nulls, Headers=[Referer = "doe het!" ], Timeout=#duration(0,4,0,0)]),
    #"Twinfield.Twinfield.GeneralLedgerDetailsV3@tfd_table" = Source{[Name="Twinfield.Twinfield.GeneralLedgerDetailsV3@tfd",Signature="table"]}[Data],
    #"Filtered Rows" = Table.SelectRows(#"Twinfield.Twinfield.GeneralLedgerDetailsV3@tfd_table", each ([FIN_TRS_HEAD_YEAR] = 2019) and [FIN_TRS_LINE_DIM1TYPE] = "PNL"),
    #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"COMPANY_CODE", "COMPANY_NAME", "CODE", "NUMBER", "LINE", "FIN_TRS_HEAD_CURCODE", "FIN_TRS_HEAD_DATE", "FIN_TRS_HEAD_INPDATE", "FIN_TRS_HEAD_ORIGIN", "FIN_TRS_HEAD_PERIOD", "FIN_TRS_HEAD_STATUS", "FIN_TRS_HEAD_USERNAME", "FIN_TRS_HEAD_YEAR", "FIN_TRS_HEAD_YEARPERIOD", "FIN_TRS_LINE_BASEVALUESIGNED", "FIN_TRS_LINE_DEBITCREDIT", "FIN_TRS_LINE_DESCRIPTION", "FIN_TRS_LINE_DIM1", "FIN_TRS_LINE_DIM1GROUP1", "FIN_TRS_LINE_DIM1GROUP1NAME", "FIN_TRS_LINE_DIM1GROUP2", "FIN_TRS_LINE_DIM1GROUP2NAME", "FIN_TRS_LINE_DIM1GROUP3", "FIN_TRS_LINE_DIM1GROUP3NAME", "FIN_TRS_LINE_DIM1NAME", "FIN_TRS_LINE_DIM1GROUP4", "FIN_TRS_LINE_DIM1GROUP4NAME", "FIN_TRS_LINE_DIM1TYPE", "FIN_TRS_LINE_DIM2", "FIN_TRS_LINE_DIM2NAME", "FIN_TRS_LINE_DIM2TYPE", "FIN_TRS_LINE_VALUESIGNED", "FIN_TRS_LINE_VATBASEVALUESIGNED", "FIN_TRS_MNG_TYPE"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns",{{"CODE", "Trans.type"}, {"NUMBER", "Trans.no"}, {"FIN_TRS_HEAD_CURCODE", "Currency"}, {"FIN_TRS_HEAD_DATE", "trans.date"}, {"FIN_TRS_HEAD_USERNAME", "gebruiker"}, {"FIN_TRS_LINE_BASEVALUESIGNED", "value"}, {"FIN_TRS_LINE_DEBITCREDIT", "debit.credit"}, {"FIN_TRS_LINE_DESCRIPTION", "omschrijving"}, {"FIN_TRS_LINE_DIM1", "grootboekrekening"}, {"FIN_TRS_LINE_DIM1GROUP1", "grpcode1"}, {"FIN_TRS_LINE_DIM1GROUP1NAME", "grpname1"}, {"FIN_TRS_LINE_DIM1GROUP2", "grpcode2"}, {"FIN_TRS_LINE_DIM1GROUP2NAME", "grpname2"}, {"FIN_TRS_LINE_DIM1GROUP3", "grpcode3"}, {"FIN_TRS_LINE_DIM1GROUP3NAME", "grpname3"}, {"FIN_TRS_LINE_DIM1NAME", "grootboeknaam"}, {"FIN_TRS_LINE_DIM1GROUP4", "grpcode4"}, {"FIN_TRS_LINE_DIM1GROUP4NAME", "grpname4"}, {"FIN_TRS_LINE_DIM1TYPE", "dimensietype"}})
in
    #"Renamed Columns"

Echter, als ik het filter op het jaar weghaal of als ik meerdere jaren filter gaat het mis. Dan krijg ik de error:

OLE DB- of ODBC-fout: [DataSource.Error] OData: Invalid JSON. A comma character ‘,’ was expected in scope ‘Array’. Every two elements in an array and properties of an object must be separated by commas…

Ik zie op het forum dat dit meerdere oorzaken kan hebben, maar ik heb niet kunnen achterhalen welke oorzaak het is bij mij.

Dit is een voorbeeld van een m code die niet werkt:

let
    Source = OData.Feed("https://bridge-online.cloud/l-m-groep-twinfield/odata4", null, [Implementation="2.0", ODataVersion=4, OmitValues=ODataOmitValues.Nulls, Headers=[Referer = "doe het!" ], Timeout=#duration(0,4,0,0)]),
    #"Twinfield.Twinfield.GeneralLedgerDetailsV3@tfd_table" = Source{[Name="Twinfield.Twinfield.GeneralLedgerDetailsV3@tfd",Signature="table"]}[Data],
    #"Filtered Rows" = Table.SelectRows(#"Twinfield.Twinfield.GeneralLedgerDetailsV3@tfd_table", each ([FIN_TRS_HEAD_YEAR] = 2019) and [FIN_TRS_LINE_DIM1TYPE] = "PNL"),
    #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"COMPANY_CODE", "COMPANY_NAME", "CODE", "NUMBER", "LINE", "FIN_TRS_HEAD_CURCODE", "FIN_TRS_HEAD_DATE", "FIN_TRS_HEAD_INPDATE", "FIN_TRS_HEAD_ORIGIN", "FIN_TRS_HEAD_PERIOD", "FIN_TRS_HEAD_STATUS", "FIN_TRS_HEAD_USERNAME", "FIN_TRS_HEAD_YEAR", "FIN_TRS_HEAD_YEARPERIOD", "FIN_TRS_LINE_BASEVALUESIGNED", "FIN_TRS_LINE_DEBITCREDIT", "FIN_TRS_LINE_DESCRIPTION", "FIN_TRS_LINE_DIM1", "FIN_TRS_LINE_DIM1GROUP1", "FIN_TRS_LINE_DIM1GROUP1NAME", "FIN_TRS_LINE_DIM1GROUP2", "FIN_TRS_LINE_DIM1GROUP2NAME", "FIN_TRS_LINE_DIM1GROUP3", "FIN_TRS_LINE_DIM1GROUP3NAME", "FIN_TRS_LINE_DIM1NAME", "FIN_TRS_LINE_DIM1GROUP4", "FIN_TRS_LINE_DIM1GROUP4NAME", "FIN_TRS_LINE_DIM1TYPE", "FIN_TRS_LINE_DIM2", "FIN_TRS_LINE_DIM2NAME", "FIN_TRS_LINE_DIM2TYPE", "FIN_TRS_LINE_VALUESIGNED", "FIN_TRS_LINE_VATBASEVALUESIGNED", "FIN_TRS_MNG_TYPE"}),
    #"Renamed Columns" = Table.RenameColumns(#"Removed Other Columns",{{"CODE", "Trans.type"}, {"NUMBER", "Trans.no"}, {"FIN_TRS_HEAD_CURCODE", "Currency"}, {"FIN_TRS_HEAD_DATE", "trans.date"}, {"FIN_TRS_HEAD_USERNAME", "gebruiker"}, {"FIN_TRS_LINE_BASEVALUESIGNED", "value"}, {"FIN_TRS_LINE_DEBITCREDIT", "debit.credit"}, {"FIN_TRS_LINE_DESCRIPTION", "omschrijving"}, {"FIN_TRS_LINE_DIM1", "grootboekrekening"}, {"FIN_TRS_LINE_DIM1GROUP1", "grpcode1"}, {"FIN_TRS_LINE_DIM1GROUP1NAME", "grpname1"}, {"FIN_TRS_LINE_DIM1GROUP2", "grpcode2"}, {"FIN_TRS_LINE_DIM1GROUP2NAME", "grpname2"}, {"FIN_TRS_LINE_DIM1GROUP3", "grpcode3"}, {"FIN_TRS_LINE_DIM1GROUP3NAME", "grpname3"}, {"FIN_TRS_LINE_DIM1NAME", "grootboeknaam"}, {"FIN_TRS_LINE_DIM1GROUP4", "grpcode4"}, {"FIN_TRS_LINE_DIM1GROUP4NAME", "grpname4"}, {"FIN_TRS_LINE_DIM1TYPE", "dimensietype"}})
in
    #"Renamed Columns"

Alvast bedankt voor de hulp!

Excuus, de code die niet werkt heeft ‘each ([FIN_TRS_HEAD_YEAR] = 2019 or [FIN_TRS_HEAD_YEAR] = 2020 )’ in plaats van ‘each ([FIN_TRS_HEAD_YEAR] = 2019)’.

Het werkt wel in de preview in de query editor maar bij het inladen krijg ik de foutmelding.

Uit de Bridge Online monitoring blijkt dat er een timeout optreed, mogelijk aan de kant van Twinfield. Dat zou kunnen als het om het ophalen van grote hoeveelheden data gaat, maar dat is zo vanaf hier moeilijk in te schatten. Heb je enig idee van de omvang (aantal rijen) van de data die je ophaalt?

Als ik de tabel zonder filters laat draaiien heb ik waarschijnlijk over de miljoen rijen. Echter, als ik slechts 1 klein bedrijf filter in power query en vervolgens 2 jaren doe, dan krijg ik ook de foutmelding. Terwijl dat slechts 2000 a 3000 rijen zouden moeten zijn. Daarom leek het mij een fout in mijn code te zijn.

Dat lijkt dan niet goed inderdaad. Ik zal kijken of ik iets kan vinden over de oorzaak.

Om hoeveel Twinfield administraties gaat het grofweg?

Welk filter is geprobeerd?

Het gaat om de GeneralLedgerDetailsV3@tfd tabel van 8 administraties, maar het probleem doet zich ook voor wanneer ik 1 (kleine) administratie filter. Ik heb in de m-code in de advanced editor geprobeerd:

  • each ([FIN_TRS_HEAD_YEAR] = 2022)
    deze werkt naar behoren voor ieder geselecteerd jaar
    Wat niet werkt is:
  • each ([FIN_TRS_HEAD_YEAR] = 2022 or [FIN_TRS_HEAD_YEAR] = 2021)
  • each ([FIN_TRS_HEAD_YEAR] > 2021)
  • zonder filter inladen

Het gekke is dus dat ik ~120.000 regels van alle administraties van 2021 in kan laden, maar niet ~3000 regels van 1 administratie van alle jaren.

Houdt er rekening mee dat ik een beginner ben met uw software en het dus ook een stomme fout kan zijn :wink:

Groet, matthijs

Dank. En bijvoorbeeld:

  • each ([FIN_TRS_HEAD_YEAR] >= 2021)

Werkt wel als filter stap dicht bij de data stap?

Nee, die lukt ook niet. Ik krijg opnieuw dezelfde foutcodes in PowerBI en Bridge Online helaas.

Heb je toevallig de bijbehorende URL in Invantive Bridge Online? Deze kun je vinden in de monitoring. Ik denk dat er iets niet goed gaat met het doorgeven van die specifieke filters.

Ik was er even uit met corona. Nog even terugkomend op dit probleem. Met deze URL krijg ik de foutmelding:

/xxx/odata4/Twinfield.Twinfield.GeneralLedgerDetailsV3@tfd?$filter=FIN_TRS_HEAD_YEAR%20eq%202021%20and%20FIN_TRS_LINE_DIM1TYPE%20eq%20%27PNL%27&$select=COMPANY_CODE%2CCOMPANY_NAME%2CCODE%2CNUMBER%2CLINE%2CFIN_TRS_HEAD_CURCODE%2CFIN_TRS_HEAD_DATE%2CFIN_TRS_HEAD_INPDATE%2CFIN_TRS_HEAD_ORIGIN%2CFIN_TRS_HEAD_PERIOD%2CFIN_TRS_HEAD_STATUS%2CFIN_TRS_HEAD_USERNAME%2CFIN_TRS_HEAD_YEAR%2CFIN_TRS_HEAD_YEARPERIOD%2CFIN_TRS_LINE_BASEVALUESIGNED%2CFIN_TRS_LINE_DEBITCREDIT%2CFIN_TRS_LINE_DESCRIPTION%2CFIN_TRS_LINE_DIM1%2CFIN_TRS_LINE_DIM1GROUP1%2CFIN_TRS_LINE_DIM1GROUP1NAME%2CFIN_TRS_LINE_DIM1GROUP2%2CFIN_TRS_LINE_DIM1GROUP2NAME%2CFIN_TRS_LINE_DIM1GROUP3%2CFIN_TRS_LINE_DIM1GROUP3NAME%2CFIN_TRS_LINE_DIM1GROUP4%2CFIN_TRS_LINE_DIM1GROUP4NAME%2CFIN_TRS_LINE_DIM1NAME%2CFIN_TRS_LINE_DIM1TYPE%2CFIN_TRS_LINE_DIM2%2CFIN_TRS_LINE_DIM2NAME%2CFIN_TRS_LINE_DIM2TYPE%2CFIN_TRS_LINE_VALUESIGNED%2CFIN_TRS_LINE_VATBASEVALUESIGNED%2CFIN_TRS_MNG_TYPE

Als ik het jaarfilter verwijder heb ik nog altijd hetzelfde probleem met deze URL:

/xxx/odata4/Twinfield.Twinfield.GeneralLedgerDetailsV3@tfd?$filter=FIN_TRS_LINE_DIM1TYPE%20eq%20%27PNL%27

Als ik de tabel 2x inlaad, de ene filter op 2022 en de andere op 2021 en de tabellen vervolgens appendeer werkt hij wel. Maar dat is niet echt een wenselijke oplossing. Deze URL hoort daarbij:

/xxx/odata4/Twinfield.Twinfield.GeneralLedgerDetailsV3@tfd?$filter=FIN_TRS_HEAD_YEAR%20gt%202019%20and%20FIN_TRS_LINE_DIM1TYPE%20eq%20%27PNL%27&$select=COMPANY_CODE%2CCOMPANY_NAME%2CCODE%2CNUMBER%2CLINE%2CFIN_TRS_HEAD_CURCODE%2CFIN_TRS_HEAD_DATE%2CFIN_TRS_HEAD_INPDATE%2CFIN_TRS_HEAD_ORIGIN%2CFIN_TRS_HEAD_PERIOD%2CFIN_TRS_HEAD_STATUS%2CFIN_TRS_HEAD_USERNAME%2CFIN_TRS_HEAD_YEAR%2CFIN_TRS_HEAD_YEARPERIOD%2CFIN_TRS_LINE_BASEVALUESIGNED%2CFIN_TRS_LINE_DEBITCREDIT%2CFIN_TRS_LINE_DESCRIPTION%2CFIN_TRS_LINE_DIM1%2CFIN_TRS_LINE_DIM1GROUP1%2CFIN_TRS_LINE_DIM1GROUP1NAME%2CFIN_TRS_LINE_DIM1GROUP2%2CFIN_TRS_LINE_DIM1GROUP2NAME%2CFIN_TRS_LINE_DIM1GROUP3%2CFIN_TRS_LINE_DIM1GROUP3NAME%2CFIN_TRS_LINE_DIM1GROUP4%2CFIN_TRS_LINE_DIM1GROUP4NAME%2CFIN_TRS_LINE_DIM1NAME%2CFIN_TRS_LINE_DIM1TYPE%2CFIN_TRS_LINE_DIM2%2CFIN_TRS_LINE_DIM2NAME%2CFIN_TRS_LINE_DIM2TYPE%2CFIN_TRS_LINE_VALUESIGNED%2CFIN_TRS_LINE_VATBASEVALUESIGNED%2CFIN_TRS_MNG_TYPE

Gelieve nogmaals te proberen via Invantive Cloud. Een aantal prestatie-optimalisaties zijn toegevoegd aan de Twinfield driver, waardoor er meer alternatieve paden geprobeerd worden om het datavolume te reduceren. Tot dusver lijkt dat zelfs te werken bij een Twinfield-omgeving met meer dan 100 miljoen regels.

Mocht dat nog steeds niet werken, gelieve dan delegatie te geven, samen met een actuele OData4-URL of SQL statement in Invantive Bridge Online Monitoring.

Dit heeft het probleem inderdaad opgelost. Bedankt voor de ondersteuning. :grinning:

1 Like