Удалить последнюю запись из плоского файла в BLOB-хранилище данных Azure - PullRequest
1 голос
/ 14 апреля 2020

У меня есть несколько плоских файлов с разделителями трубы в хранилище BLOB-объектов, и в каждом файле есть запись верхнего и нижнего колонтитула с именем файла, датой извлечения и количеством записей. Я использую конвейер ADF с toload Polybase в Azure DWH. Я мог пропустить запись заголовка, но не смог пропустить нижний колонтитул. Единственный способ, о котором я мог подумать, - это создать промежуточную таблицу со всеми varchar и загрузить ее в промежуточную, а затем преобразовать типы данных обратно в основные таблицы. Но это не работает, так как количество столбцов отличается от нижнего колонтитула и данных. Есть ли более простой способ сделать это? Пожалуйста, сообщите.

1 Ответ

1 голос
/ 14 апреля 2020

Polybase не имеет явной опции для удаления строк нижнего колонтитула, но у нее есть набор опций отклонения, которыми вы потенциально можете воспользоваться. Если вы установите REJECT_TYPE как VALUE (а не PERCENTAGE) и REJECT_VALUE AS 1, вы скажете Polybase отклонить только одну строку. Если нижний колонтитул имеет формат, отличный от основных строк данных, он будет отклонен, но ваш запрос не должен завершиться ошибкой.

CREATE EXTERNAL TABLE yourTable
...    
<reject_options> ::=  
{  
    | REJECT_TYPE = value,  
    | REJECT_VALUE = 2 

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

Обновление: Проверьте это сообщение в блоге для получения информации о отслеживании отклоненных строк:

https://azure.microsoft.com/en-us/blog/load-confidently-with-sql-data-warehouse-polybase-rejected-row-location/

...