как создать текстовый файл и вставить в него сообщение об ошибке в ADFV2 - PullRequest
0 голосов
/ 25 октября 2019

У нас есть операция копирования в ADF, и требуется отменить операцию при ошибке, отправить письмо с сообщением об ошибке и записать информацию об ошибке в текстовом файле в хранилище BLOB-объектов.

До отправки письмас сообщением об ошибке, задача завершается с помощью логических приложений. Так как пропустить и войти невозможно в ADF отказоустойчивости в нашем случае, чтобы сохранить информацию об ошибке в хранилище BLOB-объектов. Есть способ, которым мы можем записать информацию об ошибке в текстовом файле вхранилище больших двоичных объектов с использованием ADF, если отказоустойчивость для операции копирования установлена ​​как «прерывание активности в первой несовместимой строке»?

Пожалуйста, дайте мне знать, если есть какой-либо способ записать информацию об ошибках в хранилище больших двоичных объектов, когда отказоустойчивость равна 'прервать действие в первой несовместимой строке '.

1 Ответ

0 голосов
/ 28 октября 2019

vicky, основываясь на документе Отказоустойчивость и опциях в интерфейсе АПД, мы можем выбрать только 3 варианта:

enter image description here

Только "Skip and log incompatible rows" может сохранить журнал ошибок в хранилище BLOB-объектов Azure, которое настроено нами. Нет прямого способа сохранить журнал ошибок в хранилище Azure, если вам нужно выбрать "abort activity on first incompatible row".

Итак, мой обходной путь - добавить действие функции Azure за операцией копирования, если копированиеСостояние активности - «Сбой», например:

enter image description here

Я специально создаю ситуацию с ошибкой для операции копирования, и вы можете просмотреть выходные данные операции копирования, которая содержитсообщение об ошибке:

enter image description here

Затем вы можете отослать это сообщение в теле функции лазурной системы по @activity('Copy data1').output

enter image description here

Внутри функции Azure вы можете сохранить ее в хранилище BLOB-объектов, используя код SDK.


Можете ли вы поделиться кодом для функции Azure, чтобы сохранитьинформация об ошибках в хранилище больших двоичных объектов, поскольку я не очень разбираюсь в c #.

Я следовал этому учебнику , чтобы протестировать код на c # для вас:

using System.IO;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.WindowsAzure.Storage.Blob;

namespace FunctionApp2
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static async Task<HttpResponseMessage> Run([HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]HttpRequestMessage req,
            [Blob("test/error.txt", FileAccess.ReadWrite)] CloudBlockBlob blob,
            TraceWriter log)
        {
            log.Info("C# HTTP trigger function processed a request.");
            string name = req.GetQueryNameValuePairs()
                .FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
                .Value;
            await blob.UploadTextAsync(name);
            if (name == null)
            {
                // Get request body
                dynamic data = await req.Content.ReadAsAsync<object>();
                name = data?.name;
            }
            return name == null
                ? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
                : req.CreateResponse(HttpStatusCode.OK, "Hello " + name);
        }
    }
}

Параметр name - это error message, который необходимо передать. Затем он будет сохранен в test/error.txt путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...