#azure #tsql #azure-blob-storage #azure-sql-data-warehouse #azure-synapse
#azure #tsql #azure-blob-хранилище #azure-sql-хранилище данных #azure-synapse
Вопрос:
Я использую редактор запросов Azure synapse для выполнения приведенного ниже запроса, это также пример, приведенный в документации Azure
SELECT
nyc.filename() AS [filename]
,COUNT_BIG(*) AS [rows]
FROM
OPENROWSET(
BULK '../userdata1.parquet',
DATA_SOURCE = AzureStorage,
FORMAT_TYPE = PARQUET
) nyc
GROUP BY nyc.filename();
Но он всегда выдает
Ошибка синтаксического анализа в строке: 5, столбец: 5: неправильный синтаксис рядом с ‘OPENROWSET’.
Но мне удалось успешно запустить инструкцию Create с полной схемой и выполнить запросы select во внешней таблице
CREATE EXTERNAL TABLE dbo.userdata1 (
[registration_dttm] nvarchar(100) NULL,
[id] decimal(38,0) NULL,
[first_name] nvarchar(100) NULL,
[last_name] nvarchar(100) NULL,
|
|
|
)
WITH (
LOCATION='../userdata1.parquet',
DATA_SOURCE = AzureStorage,
FILE_FORMAT=parquet_file_format
);
Выберите @@Version —
Хранилище данных Microsoft Azure SQL — 10.0.15225.0 8 сентября 2020 20:17:38 Авторское право (c) Корпорация Microsoft
Пожалуйста, поправьте меня, если что-то не так…
Ответ №1:
При назначении nyc для набора строк вам не хватает «AS»:
ВЫБЕРИТЕ … ИЗ
OPENROWSET( … ) В КАЧЕСТВЕ ГРУППЫ nyc ПО nyc.filename();
Комментарии:
1. Спасибо за ответ @joel-cochran , также я просмотрел документы и понял, что этот запрос работает только в Azure Synapse SQL On-Demand, я прав??
2. Да, этот синтаксис предназначен для SQL On-demand (SOD). В пуле SQL вы должны использовать Polybase (внешние таблицы), которыми вы поделились в своем сообщении. Если этот ответ решил вашу проблему, пожалуйста, примите его как ответ.