Я не верю, что вы можете сделать это напрямую с помощью Polybase, потому что, как вы заметили, оператор CREATE EXTERNAL TABLE требует объявления столбцов. Во время выполнения данные CSV затем сопоставляются с этими именами столбцов.
Вы можете легко sh это сделать с помощью Azure Фабрики данных и потока данных (который использует Polybase под крышками для перемещения данных в Synapse ), разрешив потоку данных создать таблицу. Это работает, потому что таблица создается после того, как данные были прочитаны, а не раньше, как с EXTERNAL.
Для набора данных приемника создайте его с параметризованным именем таблицы [и, возможно, схемой]:
В действии Sink укажите «Recreate table»: ![enter image description here](https://i.stack.imgur.com/Q3edu.png)
Передайте желаемое имя таблицы в набор данных приемника из конвейера: ![enter image description here](https://i.stack.imgur.com/RkDOY.png)
Имейте в виду, что все столбцы на основе строк будут определены как VARCHAR (MAX).