CREATE EXTERNAL AS SELECT (CETAS)

Effectué

Cette unité examine de plus près la commande CREATE EXTERNAL TABLE AS SELECT (CETAS) et les avantages qu’elle offre.

CETAS prend en charge stockage Blob Azure, Azure Data Lake Storage, stockage d’objets compatible S3 et bases de données externes. CETAS prend également en charge l’exportation de fichiers au format CSV ou Parquet.

La fonctionnalité la plus puissante de CETAS consiste à combiner avec d’autres opérations SELECT, telles que la combinaison avec OPENROWSET ou d’autres tables externes. Cette combinaison permet à CETAS d’être utilisé de différentes manières et flexibles.

Cas d’usage pour CETAS

Il existe de nombreux cas d’usage différents pour CETAS, mais les trois principaux sont :

  • Rapports
  • Hiérarchisation ou déchargement des données
  • Hub d’exportation de données

Rapports

Le cas d’usage le plus évident pour CETAS consiste à simplifier la création de rapports à l’aide de toutes les fonctionnalités de PolyBase et de SQL Server. Vous pouvez vous connecter à n’importe quelle source de données, table ou fichier prise en charge et utiliser T-SQL pour manipuler et exporter les résultats. Par exemple, au lieu de connecter des outils de création de rapports à SQL Server, vous pouvez utiliser CETAS pour effectuer toutes les requêtes nécessaires, exporter le résultat sous forme de fichier Parquet et pointer l’outil de création de rapports vers les données exportées.

Hiérarchisation ou déchargement des données

Un autre scénario courant consiste à exporter des données d’archive ou en lecture seule hors des tables SQL Server vers un stockage distant, mais il l’interroge normalement via des tables externes. De cette façon, vous pouvez conserver uniquement les données actives sur SQL Server, enregistrer des ressources, mais toujours accéder aux données de manière transparente chaque fois que nécessaire. D’un point de vue d’application, il s’agit simplement d’accéder à une table SQL Server standard.

Par exemple, imaginez que votre order table a des données historiques des dernières années qui ne changent pas, mais vous avez toujours besoin qu’elle soit entièrement accessible. CETAS peut aider à exporter toutes les order données de table vers un autre emplacement, ce qui réduit la taille de la base de données et le temps de maintenance requis. Avec une table externe, les données exportées se comportent comme une table normale.

Hub d’exportation de données

En utilisant SQL Server 2025 comme hub de données, vous pouvez combiner CETAS avec toutes les fonctionnalités PolyBase existantes, notamment la connexion à d’autres sources de données telles que Oracle, Teradata, ODBC ou d’autres versions de SQL Server.

Conditions requises pour CETAS

Pour utiliser CETAS dans SQL Server 2025, vous devez activer la propriété ALLOW POLYBASE EXPORT à l’aide sp_configurede . Pour plus d’informations, consultez l’exercice suivant.

Autorisations CETAS

Pour utiliser CETAS, vous avez besoin de trois niveaux d’autorisation différents :

  • Autorisation d’accès et de lecture de la source de données. Si les données résident en dehors de SQL Server, sur un partage réseau ou un autre serveur de base de données, le compte de service SQL Server doit avoir l’autorisation d’accéder à la source de données.

  • Autorisation sur SQL Server 2025 d’utiliser la commande CETAS. Pour que l'utilisateur de base de données exécute la commande CETAS, il a besoin des autorisations ADMINISTER BULK OPERATIONS, ALTER ANY EXTERNAL DATA SOURCE et ALTER ANY EXTERNAL FILE FORMAT.

  • Autorisation d’écriture sur la destination pour écrire les résultats de CETAS. Pour pouvoir écrire dans le fichier de destination, Parquet ou CSV, l’utilisateur a besoin d’autorisations d’écriture sur la destination. Par exemple, pour écrire dans Stockage Blob Azure ou Azure Data Lake Storage, l’utilisateur a besoin des autorisations LIST, READ, CREATE et WRITE sur ces destinations.

Pour plus d’informations sur les autorisations pour CETAS, consultez CREATE EXTERNAL TABLE AS SELECT (CETAS) permissions.

Formats pris en charge par CETAS

CETAS reçoit un flux de données, à l’aide d’une commande SELECT comme entrée et exporte les résultats au format CSV ou Parquet. L’entrée prend en charge les mêmes formats qu’une commande SELECT, y compris les résultats OPENROWSET.

L’entrée peut être une table s’exécutant localement sur votre instance SQL Server, un fichier réseau accessible via une opération OPENROWSET, une table dans un autre système de base de données ou un fichier Delta stocké sur stockage Blob Azure, Azure Data Lake Storage ou stockage objet compatible S3.

  • Pour obtenir la liste complète des formats pris en charge, consultez CREATE EXTERNAL FILE FORMAT.
  • Pour obtenir la liste complète des sources de données prises en charge, consultez CREATE EXTERNAL DATA SOURCE.
  • Pour en savoir plus sur l’accès aux fichiers distants à l’aide d’OPENROWSET, consultez OPENROWSET.

Structure T-SQL CETAS

Pour mieux comprendre CETAS, vous pouvez décomposer la syntaxe T-SQL globale. La structure T-SQL CETAS suit une approche logique ascendante. Il est plus facile de commencer à la fin de l’instruction, puis de travailler en haut de l’instruction T-SQL.

Image de la structure T-SQL de CREATE EXTERNAL TABLE en tant qu’instruction SELECT.

  • Le bas de la structure CETAS contient une instruction SELECT que vous utilisez pour définir les données à exporter.
  • Au milieu, vous pouvez utiliser des paramètres facultatifs pour rejeter les données que vous ne souhaitez pas exporter.
  • En haut de l’instruction CETAS, après avoir déclaré CREATE EXTERNAL TABLE, vous ajoutez des informations sur l’emplacement de destination, le nom de fichier et le format de fichier.

Cette structure permet à CETAS d’être combiné avec n’importe quelle instruction SELECT pour interroger des données en dehors de SQL Server, dans SQL Server ou à partir d’une autre base de données prise en charge. SQL Server 2025 crée automatiquement le nom de fichier et fractionne les résultats dans plusieurs fichiers à des fins d’optimisation. Par exemple, une table exportée en tant que Parquet peut générer plusieurs fichiers, en fonction de la taille des données exportées. L’instruction select définit la définition et le type de colonne de table externe.

Exporter une table depuis SQL Server au format Parquet

L’exemple suivant utilise CETAS pour exporter une table à partir de SQL Server en tant que Parquet :

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

Lire un fichier Delta et exporter au format Parquet

L’exemple suivant utilise CETAS pour lire un fichier Delta et l’exporter en tant que 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];

Dans l’exercice suivant, vous utilisez CETAS pour :

  • Exporter une table au format Parquet.
  • Déplacez les données froides depuis une base de données vers un espace de stockage.
  • Créez une table externe pour accéder aux données stockées.
  • Utilisez les vues, la recherche générique, l’élimination des dossiers et les métadonnées comme stratégies de requête.