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