СОЗДАТЬ ВНЕШНЮЮ ТАБЛИЦУ КАК ВЫБОР (CETAS)

Завершено

Этот модуль внимательно изучит команду CREATE EXTERNAL TABLE AS SELECT (CETAS) и преимущества, предоставляемые им.

CETAS поддерживает хранилище BLOB-объектов Azure, Azure Data Lake Storage, хранилище объектов, совместимое с S3, и внешние базы данных. CETAS также поддерживает экспорт файлов в формате CSV или Parquet.

Самая мощная возможность CETAS заключается в сочетании с другими операциями SELECT, такими как объединение с OPENROWSET или с другими внешними таблицами. Это сочетание позволяет CETAS использоваться различными и гибкими способами.

Варианты использования CETAS

Существует множество различных вариантов использования для CETAS, но три основных:

  • Отчётность
  • Многоуровневая загрузка или разгрузка данных
  • Центр экспорта данных

Отчётность

Наиболее очевидным вариантом использования CETAS является упрощение отчетов с помощью всех возможностей PolyBase и SQL Server. Вы можете подключиться к любому поддерживаемому источнику данных, таблице или файлу и использовать T-SQL для управления результатами и экспорта результатов. Например, вместо подключения средств создания отчетов к SQL Server можно использовать CETAS для выполнения всех необходимых запросов, экспорта результата в виде файла Parquet и указания средства создания отчетов экспортируемым данным.

Многоуровневая загрузка или разгрузка данных

Другой распространенный сценарий заключается в экспорте архивных или доступных только для чтения данных из таблиц SQL Server в удаленное хранилище, но по-прежнему запрашивать их обычно через внешние таблицы. Таким образом, вы можете хранить только активные данные в SQL Server, сохраняя ресурсы, но по-прежнему получать доступ к данным прозрачным способом при необходимости. С точки зрения приложения это так же, как доступ к обычной таблице SQL Server.

Например, представьте, что в таблице order находятся исторические данные прошлых лет, которые не изменяются, но тем не менее вам необходимо иметь к ним полный доступ. CETAS может помочь экспортировать все данные таблицы order в другое расположение, уменьшая размер базы данных и требуемое время обслуживания. При использовании внешней таблицы экспортированные данные ведут себя так же, как обычная таблица.

Центр экспорта данных

С помощью SQL Server 2025 в качестве концентратора данных можно объединить CETAS со всеми существующими возможностями PolyBase, включая подключение к другим источникам данных, таким как Oracle, Teradata, ODBC или другие версии SQL Server.

Требования CETAS

Чтобы использовать CETAS в SQL Server 2025, необходимо включить свойство ALLOW POLYBASE EXPORT с помощью sp_configure. Дополнительные сведения см. в следующем упражнении.

Разрешения CETAS

Чтобы использовать CETAS, вам потребуется три различных уровня разрешений:

  • Разрешение на доступ и чтение источника данных. Если данные находятся за пределами SQL Server, на сетевом ресурсе или другом сервере базы данных учетная запись службы SQL Server должна иметь разрешение на доступ к источнику данных.

  • Разрешение на SQL Server 2025 для использования команды CETAS. Для выполнения команды CETAS пользователю базы данных требуется АДМИНИСТРИРОВАНИЕ МАССОВЫХ ОПЕРАЦИЙ, ALTER ANY EXTERNAL DATA SOURCEи ALTER ANY EXTERNAL FILE FORMAT разрешения.

  • Разрешение на запись результатов CETAS в место назначения. Чтобы иметь возможность записывать в целевой файл, будь то Parquet или CSV, пользователю требуются разрешения на запись на целевое место. Например, для записи в хранилище BLOB-объектов Azure или Azure Data Lake Storage пользователю требуются разрешения LIST, READ, CREATEи WRITE для этих мест назначения.

Для получения дополнительной информации о разрешениях для CETAS см. раздел разрешения CREATE EXTERNAL TABLE AS SELECT (CETAS).

Поддерживаемые форматы CETAS

CETAS получает поток данных с помощью команды SELECT в качестве входных данных и экспортирует результаты в формате CSV или Parquet. Входные данные поддерживают те же форматы, что и команда SELECT, включая результаты OPENROWSET.

Входные данные могут быть таблицей, работающей локально в экземпляре SQL Server, сетевым файлом, к которому происходит доступ через операцию OPENROWSET, таблицей в другой системе базы данных, или файлом формата Delta, хранящимся в Azure Blob Storage, Azure Data Lake Storage или в хранилище объектов, совместимом с S3.

  • Полный список поддерживаемых форматов см. в разделе CREATE EXTERNAL FILE FORMAT.
  • Полный список поддерживаемых источников данных см. в разделе CREATE EXTERNAL DATA SOURCE.
  • Сведения о доступе к удаленным файлам с помощью OPENROWSET см. в статье OPENROWSET.

Структура CETAS T-SQL

Чтобы лучше понять CETAS, можно разбить общий синтаксис T-SQL. Структура CETAS T-SQL соответствует подходу логики внизу вверх. Проще начать с конца инструкции и постепенно подниматься к началу инструкции T-SQL.

  • В нижней части структуры CETAS содержится инструкция SELECT, используемая для определения экспортируемых данных.
  • В середине есть необязательные параметры, которые можно использовать для отклонения данных, которые вы не хотите экспортировать.
  • В верхней части инструкции CETAS после объявления CREATE EXTERNAL TABLE добавьте сведения о расположении назначения, имени файла и формате файла.

Эта структура позволяет CETAS объединяться с любой инструкцией SELECT для запроса данных за пределами SQL Server, в SQL Server или из любой другой поддерживаемой базы данных. SQL Server 2025 автоматически создает имя файла и разбивает результаты в нескольких файлах для оптимизации. Например, таблица, экспортируемая как Parquet, может создавать несколько файлов в зависимости от экспортированного размера данных. Инструкция select определяет определение и тип внешнего столбца таблицы.

Экспорт таблицы из SQL Server в виде Parquet

В следующем примере CETAS используется для экспорта таблицы из SQL Server в формате Parquet.

CREATE EXTERNAL TABLE ext_sales
WITH (
      LOCATION = '/cetas',
      DATA_SOURCE = s3_eds,
      FILE_FORMAT = ParquetFileFormat
     ) AS
SELECT *
FROM AdventureWorks2025.[Sales].[SalesOrderDetail];

Чтение файла Delta и экспорт в формате Parquet

В следующем примере CETAS используется для чтения Delta файла и экспорта его в формате Parquet.

CREATE EXTERNAL TABLE Delta_to_Parquet
WITH (
        LOCATION = N'/backup/sales',
        DATA_SOURCE = s3_parquet,
        FILE_FORMAT = ParquetFileFormat
      ) AS
SELECT *
FROM OPENROWSET(BULK N'/delta/sales_fy22/',
FORMAT = 'DELTA',
DATA_SOURCE = 's3_delta') AS [r];

В следующем упражнении вы используете CETAS для:

  • Экспорт таблицы как Parquet.
  • Переместите холодные данные из базы данных в хранилище.
  • Создайте внешнюю таблицу для доступа к сохраненным данным.
  • Используйте представления, поиск подстановочных знаков, ликвидацию папок и метаданные в качестве стратегий запросов.