#azure #azure-data-factory #azure-data-lake #u-sql #azure-sqldw
#azure #azure-data-factory #azure-data-lake #u-sql #azure-sqldw
Вопрос:
У меня есть куча операций U-SQL, которые обрабатывают и преобразуют данные в Azure Data Lake
. Из этого я получаю csv
файл, содержащий все мои события.
Затем я бы просто использовал Copy Data
действие для копирования csv
файла из озера данных непосредственно в Azure SQL Data Warehouse
таблицу.
- Я извлекаю информацию из множества
JSON
файлов, хранящихся в озере данных, и создаю промежуточный.csv
файл; - Я беру промежуточный
.csv
файл и рабочий.csv
файл, внедряю последние изменения (и избегаю дубликатов) и сохраняю рабочий.csv
файл; - Скопируйте
.csv
производственный файл непосредственно в таблицу хранилища.
Я понял, что моя таблица содержит дублированные строки, и, после тестирования U-SQL
сценариев, я предполагаю, что Copy Data
действие каким-то образом объединяет содержимое csv
файла в таблицу.
Вопрос
Я не уверен, что здесь я поступаю правильно. Должен ли я определить свою складскую таблицу как ВНЕШНЮЮ таблицу, которая будет получать свои данные из .csv
производственного файла? Или я должен изменить свой U-SQL, чтобы включать только последние изменения?
Ответ №1:
Если вы хотите использовать внешние таблицы, зависит от вашего варианта использования. Если вы хотите, чтобы данные хранились внутри SQL DW для повышения производительности, вы должны скопировать их в какой-то момент, например, с помощью хранимой процедуры. Затем вы могли бы просто вызвать хранимую процедуру, например, из ADF.
Или, если вы не хотите / не можете предварительно отфильтровать данные, вы также можете реализовать хранимую процедуру «Upsert» в вашем SQL DW и вызвать ее для вставки ваших данных вместо операции копирования.
Комментарии:
1. Есть ли причина, по которой я предпочел бы использовать копирование данных из озера в хранилище (с помощью операции копирования) вместо создания внешней таблицы в хранилище и ссылки на данные из озера? Я имею в виду, является ли одно более эффективным, чем другое?
2. Если, например, вы не можете (или не хотите) настраивать внешние таблицы (включая хранение ключа учетной записи хранилища) или хранимые процедуры внутри вашего SQL DW, копирование с фабрики данных может иметь смысл. Но с точки зрения производительности Polybase (внешняя таблица), вероятно, лучше.