Bij het downloaden van gegevens van (cloud)platforms met behulp van OData, kan een fout worden weergegeven door Power BI (of Power Query) doordat ongeldige JSON wordt opgehaald:
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.
Deze foutmelding geeft aan dat de gegevens die zijn opgehaald in het JSON-transportformaat eigenlijk niet in een geldig JSON-formaat zijn.
Hier leggen we uit hoe deze fout te analyseren door het verstrekken van achtergrond en hulpmiddelen. Waarschijnlijk zijn niet alle mogelijke oorzaken gedocumenteerd. Gelieve uw probleem als een nieuw onderwerp toe te voegen wanneer dit onderwerp u niet voldoende hulp biedt. Neem de URL van dit onderwerp op in je nieuwe onderwerp; Invantive en misschien andere leden van de gemeenschap zullen proberen om u te helpen.
JSON en OData
De gedownloade gegevens zijn verpakt in het zogenaamde JSON-formaat. JSON is een tekstweergave en is redelijk leesbaar voor mensen. Het OData-formaat is een uitbreiding op JSON, dat meer context biedt, maar toch nog steeds leesbaar is.
Voor gebruik met Power BI, Power Query, Dataflows en Azure Data Factory leunt Invantive Bridge Online zwaar op OData versie 4 omdat Microsoft een out-of-the-box provider levert voor genoemde producten. Daarnaast biedt de Microsoft OData driver goede prestaties en schaalbaarheid, inclusief het doorsturen van vele soorten filters naar de Invantive databronnen om netwerkgebruik te verminderen en de snelheid te verhogen.
Ophalen OData in JSON formaat
Meestal wordt de werkelijke fout die het probleem veroorzaakt getoond in de Invantive Bridge Online Monitoring, zoals:
Het meest essentiele deel is de foutcode, zoals itgenoda198
.
Leer nu hoe JSON er uit ziet en hoe de JSON data van de OData Bridge van Invantive Cloud opgehaald kan worden met enkel uw browser.
Voer de volgende stappen uit om de JSON te downloaden en te tonen in uw browser:
- Ga naar https://bridge-online.cloud.
- Meld aan met uw gebruikersnaam en wachtwoord.
- Klik op “Databases”:
- Kies uw database.
- Een URL zoals https://bridge-online.cloud/sample/odata4 zal worden geopend.
- Elke beschikbare tabel is genoemd naar
naam
:
- Kies een tabel, zoals
Dummy.Demo.PhoneCalls@dmy2
. - Voeg de tabelnaam toe na de oorspronkelijke URL, waardoor de URL met tabelgegevens wordt: https://bridge-online.cloud/sample/odata4/Dummy.Demo.PhoneCalls@dmy2.
- Open de nieuwe URL:
Foutmelding
De foutmelding hierboven geeft aan dat de JSON een ongeldige structuur heeft. Er zijn twee veel voorkomende oorzaken van de fout “Er werd een komma-teken ‘,’ verwacht”:
- Er is een fout opgetreden tijdens het downloaden van de gegevens.
- Invantive Bridge Online retourneert ongeldige JSON.
Fout tijdens het downloaden van de gegevens
De JSON kan ongeldig zijn omdat Invantive Bridge Online begint met het terugsturen van gegevens naar Power BI voordat alle gegevens zijn verwerkt. Deze aanpak wordt “streaming” genoemd in tegenstelling tot “batching”, en verbetert de tijd tot de eerste ontvangen rij aanzienlijk en vaak ook de totale downloadtijd.
Een verbeteringsvoorstel voor Power BI is ingediend onder https://ideas.powerbi.com/ideas/idea/?ideaid=448e7b93-897f-ed11-a76e-281878bd0909 (zie lijst verbetervoorstellen op Power BI verbetersuggesties). Indien u geholpen zou zijn met deze aanpassing, gelieve dan een stem uit te brengen op dit verbeteridee.
Een nadeel, vooral bij omgevingen met honderden administraties, is dat de gegevens van sommige bedrijven pas later zullen worden verwerkt. Een foutmelding treedt op wanneer zo’n administratie een instelfout heeft of zelfs corrupte gegevens bevat.
Deze fout wordt ook aan de JSON toegevoegd om u te helpen te achterhalen wat er fout gaat. De fout wordt ook geregistreerd in Systeem Berichten van Invantive Cloud.
De geserialiseerde versie van de fout zou er ongeveer zo uit kunnen zien:
{
"error":
{ "code": "itgensop057"
, "message": "Server was unable to process request. ---\u003E Geen bedrijf rooster Check with the custom error message instructions of the platform used. (itgensop057, 673216ae-1e63-4245-937b-ce436d2ba0e5)"
, "target": null
, "details":
[
{ "code": "673216ae-1e63-4245-937b-ce436d2ba0e5"
, "target": null
, "message": "Unique ID"
}
]
, "innererror": null
}
}
De foutcode itgensop057
is een essentieel stuk informatie om de hoofdoorzaak te vinden en op te lossen.
Aanbevolen aanpak om de werkelijke oorzaak te vinden is het handmatig downloaden van de JSON in een browser zoals beschreven of het controleren van de inhoud van het scherm Systeemberichten in Invantive Cloud. Wanneer de foutmelding onduidelijk is, is het aan te bevelen een onderwerp toe te voegen aan de categorie Nederlandse of Engelse vragen op de forums, inclusief de foutmeldingscode.
Als alternatief kan een query op dezelfde tabel worden uitgevoerd met behulp van Invantive Query Tool of vergelijkbare producten zoals de online SQL editor op Invantive Cloud.
Invantive Bridge Online retourneert ongeldige JSON
De bekende voorbeelden van de tweede categorie (ongeldige JSON geretourneerd door Invantive Bridge Online) zijn:
- https://forums.invantive.com/t/foutmelding-ole-db-of-odbc-fout-invalid-json-a-comma-character-was-expected-in-scope-array/1094: een (historische en herstelde) bug die ervoor zorgde dat Invantive Bridge Online langlopende downloads te gretig afbrak.
- https://forums.invantive.com/t/connectie-exact-online-via-azure-data-factory-geeft-the-metadata-document-could-not-be-read/1086: een (historische en herstelde) bug die ervoor zorgde dat grote (100 MB+) downloads van Invantive Bridge Online soms extra tekst aan het eind bevatten.
Invantive Bridge Online-driver
Invantive-producten verbinden met Invantive Bridge Online via een driver. De Invantive-producten proberen zorgvuldig de feitelijke foutmelding uit Invantive Bridge Online te halen vanaf release 22.0.470 en tonen de respectievelijke fout.