Поделиться через


Табличные типы данных в Synapse SQL

В этой статье содержатся рекомендации по определению табличных типов данных в выделенном пуле Synapse SQL.

Типы данных

Выделенный пул Synapse SQL поддерживает самые распространенные типы данных. Список поддерживаемых типов данных см. в типах данных в инструкции CREATE TABLE. Для Synapse SQL Serverless см. статью "Запрос файлов хранилища с бессерверным пулом SQL в Azure Synapse Analytics и использование OPENROWSET с использованием бессерверного пула SQL в Azure Synapse Analytics"

Уменьшение длины строки

Уменьшение размера типов данных сокращает длину строки, что улучшает производительность запросов. Используйте наименьший тип данных для данных.

  • Не рекомендуется использовать по умолчанию длинные значения столбцов. Например, если самое длинное значение состоит из 25 знаков, столбец необходимо определить как VARCHAR(25).
  • Не нужно использовать NVARCHAR, если вам требуется только VARCHAR.
  • По возможности используйте NVARCHAR(4000) или VARCHAR(8000) вместо NVARCHAR(MAX) или VARCHAR(MAX).
  • Старайтесь не использовать числа с плавающей точкой и десятичные числа с нулевой (0) шкалой. Они должны быть TINYINT, SMALLINT, INT или BIGINT.

Примечание.

Если для загрузки таблиц Synapse SQL используются внешние таблицы PolyBase, определенная длина строки таблицы не должна превышать 1 МБ. Если строка с данными переменной длины превышает 1 МБ, можно загрузить строку с помощью BCP, а не PolyBase.

Определение неподдерживаемых типов данных

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

SELECT  t.[name], c.[name], c.[system_type_id], c.[user_type_id], y.[is_user_defined], y.[name]
FROM sys.tables  t
JOIN sys.columns c on t.[object_id]    = c.[object_id]
JOIN sys.types   y on c.[user_type_id] = y.[user_type_id]
WHERE y.[name] IN ('geography','geometry','hierarchyid','image','text','ntext','sql_variant','xml')
 OR  y.[is_user_defined] = 1;

Обходные решения для неподдерживаемых типов данных

В следующем списке показаны типы данных, которые Synapse SQL не поддерживаются и предоставляют альтернативные варианты, которые можно использовать вместо неподдерживаемых типов данных.

Неподдерживаемые типы данных Обходное решение
geometry varbinary
geography varbinary
hierarchyid nvarchar(4000)
Изображение varbinary
text varchar
ntext nvarchar
sql_variant Разделите столбец на несколько строго типизированных столбцов.
table Преобразуйте во временные таблицы или сохраните в хранилище с помощью CETAS.
timestamp Для использования datetime2 и функции CURRENT_TIMESTAMP внесите изменения в код. В качестве значений по умолчанию поддерживаются только константы, поэтому current_timestamp нельзя определить как ограничение по умолчанию. Если нужно перенести значения версии строки из типизированного столбца timestamp, используйте BINARY(8) или VARBINARY(8) в качестве значений версии строки NOT NULL или NULL.
xml varchar
Определяемый пользователем тип По возможности выполните преобразование в исходный тип данных.
Значения по умолчанию Значения по умолчанию поддерживают только литералы и константы.

Дополнительные сведения о разработке таблиц см . в обзоре разработки.