GOOGLE ADS

Mittwoch, 27. April 2022

Synapse - Der Spaltenname ist ungültig. Der Spaltenname darf diese Zeichen nicht enthalten:[,;{}()\\n\\t=]

Ich habe eine einfache Synapse-Pipeline, die Daten aus einer SQL Server-Tabelle in eine Parquet-Datei im Blob-Speicher verschiebt. Beim Ausführen der Pipeline schlägt sie mit der folgenden Fehlermeldung fehl:

{
"dataRead": 45,
"dataWritten": 0,
"filesWritten": 0,
"sourcePeakConnections": 1,
"sinkPeakConnections": 1,
"rowsRead": 1,
"rowsCopied": 1,
"copyDuration": 4,
"throughput": 0.011,
"errors": [
{
"Code": 21018,
"Message": "ErrorCode=ParquetInvalidColumnName,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The column name is invalid. Column name cannot contain these character:[,;{}()\\n\\t=],Source=Microsoft.DataTransfer.Common,'",
"EventType": 0,
"Category": 5,
"Data": {},
"MsgId": null,
"ExceptionType": null,
"Source": null,
"StackTrace": null,
"InnerEventInfos": []
}
],
"effectiveIntegrationRuntime": "AutoResolveIntegrationRuntime (UK South)",
"usedDataIntegrationUnits": 4,
"billingReference": {
"activityType": "DataMovement",
"billableDuration": [
{
"meterType": "AzureIR",
"duration": 0.06666666666666667,
"unit": "DIUHours"
}
]
},
"usedParallelCopies": 1,
"executionDetails": [
{
"source": {
"type": "AzureSqlDatabase",
"region": "UK South"
},
"sink": {
"type": "AzureBlobFS",
"region": "UK South"
},
"status": "Failed",
"start": "2022-03-25T09:50:19.7461477Z",
"duration": 4,
"usedDataIntegrationUnits": 4,
"usedParallelCopies": 1,
"profile": {
"queue": {
"status": "Completed",
"duration": 2
},
"transfer": {
"status": "Completed",
"duration": 1,
"details": {
"readingFromSource": {
"type": "AzureSqlDatabase",
"workingDuration": 0,
"timeToFirstByte": 0
},
"writingToSink": {
"type": "AzureBlobFS",
"workingDuration": 0
}
}
}
},
"detailedDurations": {
"queuingDuration": 2,
"timeToFirstByte": 0,
"transferDuration": 1
}
}
],
"dataConsistencyVerification": {
"VerificationResult": "NotVerified"
},
"durationInQueue": {
"integrationRuntimeQueue": 0
}
}

Zur Verdeutlichung enthält keiner der Tabellenspaltennamen tatsächlich "ungültige Zeichen". Sie sind alle nur AZ, kein Leerzeichen. Außerdem hat die Pipeline etwa 3 GB Daten verschoben, bevor sie ausfiel. Wenn ich die SQL-Abfrage ändere, um 10 Millionen Zeilen statt 72 Millionen Zeilen abzurufen, läuft die Pipeline einwandfrei.

Ich denke, die Fehlermeldung ist falsch, und dies schlägt tatsächlich fehl, weil etwas mit Daten zu tun hat. Gibt es keine erweiterten Debugging-Optionen in der Synapse-Pipeline, mit denen ich feststellen kann, wo / warum dies fehlschlägt?


Lösung des Problems


  • Gemäß diesem Github- Link besteht die Lösung für diese Art von Problem darin, die Spaltenzuordnung hinzuzufügen oder zu ändern, um den Namen der Senkenspalte gültig zu machen.

  • Auch Leerraum ist im Parkettformat nicht erlaubt. Bitte beachten Sie den Hinweis im folgenden Dokument.
    Parquet-Format in Azure Data Factory und Azure Synapse Analytics.

  • Einige Problemumgehungen für diesen Fehler können diesem SO-Thread entnommen werden.

Keine Kommentare:

Kommentar veröffentlichen

Warum werden SCHED_FIFO-Threads derselben physischen CPU zugewiesen, obwohl CPUs im Leerlauf verfügbar sind?

Lösung des Problems Wenn ich das richtig verstehe, versuchen Sie, SCHED_FIFO mit aktiviertem Hyperthreading ("HT") zu verwenden, ...