#sql-server #external-tables #azure-synapse #polybase
#sql-сервер #внешние таблицы #azure-synapse #polybase
Вопрос:
Я не могу найти способ создать внешнюю таблицу в хранилище данных SQL Azure (Synapse SQL Pool) с помощью Polybase, где некоторые поля содержат встроенные запятые.
Для файла csv с 4 столбцами, как показано ниже:
myresourcename,
myresourcelocation,
"""resourceVersion"": ""windows"",""deployedBy"": ""john"",""project_name"": ""test_project""",
"{ ""ResourceType"": ""Network"", ""programName"": ""v1""}"
Пробовал со следующими инструкциями Create External Table .
CREATE EXTERNAL FILE FORMAT my_format
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS(
FIELD_TERMINATOR=',',
STRING_DELIMITER='"',
First_Row = 2
)
);
CREATE EXTERNAL TABLE my_external_table
(
resourceName VARCHAR,
resourceLocation VARCHAR,
resourceTags VARCHAR,
resourceDetails VARCHAR
)
WITH (
LOCATION = 'my/location/',
DATA_SOURCE = my_source,
FILE_FORMAT = my_format
)
Но запрос этой таблицы выдает следующую ошибку:
Failed to execute query. Error: HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: HadoopExecutionException: Too many columns in the line.
Любая помощь будет оценена.
Комментарии:
1. Вам нужно форматировать текст с разделителями? Я предпочитаю использовать parquet.snappy, поскольку сжатие лучше, а проблем с качеством данных практически не существует. В противном случае я считаю эти данные мусором и устанавливаю порог отклонения от 0 до 50 или что-то в этом роде
Ответ №1:
В настоящее время это не поддерживается в polybase, необходимо соответствующим образом изменить входные данные, чтобы заставить их работать.