Фабрика данных Azure версии 2: как передать имя файла в переменную хранимой процедуры

У меня есть большая таблица Azure SQL со следующей структурой:

Company     Revenue
-------------------
A              100
B              200
C              100
.               .
.               .
.               .

Сейчас я создаю хранимую процедуру на фабрике данных Azure V2, которая будет ежемесячно удалять все записи специальной компании из приведенной выше таблицы фактов SQL Azure. Для этого упражнения эта специальная компания будет идентифицирована переменной @company. Структура хранимой процедуры была создана как:

@company NVARCHAR(5)

DELETE FROM table 
WHERE [company] = @company

Поскольку у меня будут разные файлы Excel от каждой компании, которая будет ежемесячно вставлять данные в эту таблицу (с помощью операции копирования), я хочу использовать указанную выше хранимую процедуру, чтобы удалить старые данные из этой компании, прежде чем добавлять самые обновленные. один.

Затем я хотел бы передать переменной «@company» имя этого файла Excel (хранящегося в контейнере больших двоичных объектов), чтобы хранимая процедура знала, какие данные следует удалить из таблицы фактов. Например: если файл Excel - «A», хранимая процедура должна быть «удалить из таблицы, где company = A».

Есть идеи, как передать имена файлов Excel в переменную «@company» и настроить это на фабрике данных Azure V2?


person ERR    schedule 14.09.2018    source источник


Ответы (1)


Есть идеи, как передать имена файлов Excel в переменную @company и настроить это на фабрике данных Azure V2?

Основываясь на вашем описании, я нашел Триггер на основе событий в фабрике данных Azure, возможно, удовлетворит ваши потребности. Триггер на основе событий запускает конвейеры в ответ на событие, такое как прибытие файла или его удаление, в хранилище BLOB-объектов Azure.

Итак, когда новый файл Excel создается в хранилище BLOB-объектов (кстати, он поддерживает только учетную запись хранилища V2, дополнительные сведения см. В этом article), вы можете получить @triggerBody().folderPath и @triggerBody().fileName. Чтобы использовать значения этих свойств в конвейере, необходимо сопоставить свойства с параметрами конвейера. После сопоставления свойств с параметрами вы можете получить доступ к значениям, захваченным триггером, через выражение @pipeline.parameters.parameterName по конвейеру. (документ)

Вы можете получить имя файла и передать его в свою хранимую процедуру. Затем выполните действия по удалению и копированию.

person Jay Gong    schedule 18.09.2018
comment
Хорошая идея, Джей! Но как связать @company с параметром @triggerBody (). Filename? Не знаете, как это сделать? - person ERR; 18.09.2018