В чем разница между использованием действия COPY DATA в таблицу SQL и использованием CREATE EXTERNAL TABLE?

У меня есть куча действий U-SQL, которые манипулируют и преобразовывают данные в Azure Data Lake. Из этого я получаю файл csv, содержащий все мои события.

Затем я бы просто использовал действие Copy Data, чтобы скопировать файл csv из озера данных непосредственно в таблицу Azure SQL Data Warehouse.

В чем разница между использованием действия COPY DATA в таблицу SQL и использованием CREATE EXTERNAL TABLE?

  1. Я извлекаю информацию из набора JSON файлов, хранящихся в Data Lake, и создаю промежуточный .csv файл;
  2. Я беру промежуточный .csv файл и рабочий .csv файл, вношу последние изменения (и избегаю дубликатов) и сохраняю рабочий .csv файл;
  3. Скопируйте производственный файл .csv прямо в таблицу Warehouse.

Я понял, что моя таблица содержит повторяющиеся строки, и, протестировав сценарии U-SQL, я предполагаю, что действие Copy Data каким-то образом объединяет содержимое файла csv в таблицу.

Вопрос

Я не уверен, что поступаю правильно. Должен ли я определить свою складскую таблицу как таблицу ВНЕШНИЙ, которая будет получать данные из производственного файла .csv? Или мне следует изменить свой U-SQL, чтобы он включал только последние изменения?

Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
0
0
414
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите использовать внешние таблицы, зависит от вашего варианта использования. Если вы хотите, чтобы данные хранились внутри SQL DW для повышения производительности, вы должны скопировать их в какой-то момент, например. через хранимую процедуру. Затем вы можете просто вызвать хранимую процедуру, например, из ADF.

Или, если вы не хотите/не можете отфильтровать данные заранее, вы также можете реализовать хранимую процедуру «Upsert» в своем SQL DW и назовите это для вставки ваших данных вместо действия копирования.

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

Kzrystof 12.04.2019 16:01

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

silent 15.04.2019 10:08

Другие вопросы по теме