У меня есть конвейер в фабрике данных Azure, который выполняет вызов API REST и сохраняет его в объекте json в Azure Data Lake Gen2. Он всегда кодирует файл как UTF-8 с спецификацией. Это вызывает проблемы в моем приложении логики, мне нужно, чтобы файл был закодирован как UTF-8 без спецификации.
При выборе кодировки в наборе данных в фабрике данных я могу выбирать между UTF-8 (по умолчанию) и UTF-8. Обе эти опции сохраняют файл json как UTF-8 с BOM.
Я пытался Base64ToString () преобразовать UTF-8 с файлом BOM в строку, но это по-прежнему не позволяет мне анализироватьJSON. Я предполагаю, что есть скрытые символы спецификации?
Это код набора данных озера данных:
{
"name": "Datalake",
"properties": {
"linkedServiceName": {
"referenceName": "Datalake",
"type": "LinkedServiceReference"
},
"parameters": {
"datasetfolder": {
"type": "string",
"defaultValue": "@pipeline().parameters.folder"
}
},
"annotations": [],
"type": "Json",
"typeProperties": {
"location": {
"type": "AzureBlobFSLocation",
"fileName": {
"value": "@concat(formatDateTime(utcnow()), '.json')",
"type": "Expression"
},
"folderPath": {
"value": "@concat(formatDateTime(utcNow(),'yyyy-MM-dd'))",
"type": "Expression"
},
"fileSystem": {
"value": "@dataset().datasetfolder",
"type": "Expression"
}
}
}
},
"type": "Microsoft.DataFactory/factories/datasets"
}
Это код конвейера:
"name": "2 - Microsoft365_AuditData_to_Datalake",
"properties": {
"activities": [
{
"name": "Copy Data1",
"type": "Copy",
"dependsOn": [],
"policy": {
"timeout": "7.00:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"userProperties": [],
"typeProperties": {
"source": {
"type": "RestSource",
"httpRequestTimeout": "00:01:40",
"requestInterval": "00.00:00:00.010",
"requestMethod": "GET",
"additionalHeaders": {
"Content-Type": "application/json; charset=utf-8"
}
},
"sink": {
"type": "JsonSink",
"storeSettings": {
"type": "AzureBlobFSWriteSettings",
"copyBehavior": "FlattenHierarchy"
},
"formatSettings": {
"type": "JsonWriteSettings",
"quoteAllText": true,
"filePattern": "arrayOfObjects"
}
},
"enableStaging": false
},
"inputs": [
{
"referenceName": "REST_Microsoft0365_Audit",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "Datalake",
"type": "DatasetReference",
"parameters": {
"datasetfolder": "@pipeline().parameters.folder"
}
}
]
}
],
"parameters": {
"folder": {
"type": "string",
"defaultValue": "auditgeneral"
}
},
"annotations": []
},
"type": "Microsoft.DataFactory/factories/pipelines"
}```
I expect the file to be encoded as UTF-8 Without BOM!