CREATE EXTERNAL TABLE AS SELECT (CETAS)
Questa unità esamina in modo più approfondito il comando CREATE EXTERNAL TABLE AS SELECT (CETAS) e i vantaggi offerti.
CETAS supporta Archiviazione BLOB di Azure, Azure Data Lake Storage, archiviazione oggetti compatibile con S3 e database esterni. CETAS supporta anche l'esportazione di formati di file come file CSV o Parquet.
La funzionalità più potente di CETAS consiste nel combinare con altre operazioni SELECT, ad esempio la combinazione con OPENROWSET o con altre tabelle esterne. Questa combinazione consente l'uso di CETAS in modi diversi e flessibili.
Casi d'uso per CETAS
Esistono molti casi d'uso diversi per CETAS, ma i tre principali sono:
- Rendicontazione
- Livellamento o scaricamento dei dati
- Hub di esportazione dei dati
Rendicontazione
Il caso d'uso più ovvio per CETAS consiste nel semplificare la creazione di report usando tutte le funzionalità di PolyBase e la flessibilità di SQL Server. È possibile connettersi a qualsiasi origine dati, tabella o file supportata e usare T-SQL per modificare ed esportare i risultati. Ad esempio, invece di connettere gli strumenti di creazione report a SQL Server, è possibile usare CETAS per eseguire tutte le query necessarie, esportare il risultato come file Parquet e puntare lo strumento di creazione report ai dati esportati.
Livellamento o scaricamento dei dati
Un altro scenario comune è l'esportazione di dati archiviati o di sola lettura da tabelle di SQL Server a un'archiviazione remota, ma l'interrogazione avviene normalmente tramite tabelle esterne. In questo modo, è possibile mantenere solo i dati attivi in SQL Server, salvando le risorse, ma comunque accedere ai dati in modo trasparente ogni volta che necessario. Dal punto di vista dell'applicazione, è proprio come accedere a una normale tabella di SQL Server.
Si supponga, ad esempio, che la order tabella disponga di dati cronologici degli ultimi anni che non cambiano, ma che sia comunque necessaria per essere completamente accessibile. CETAS consente di esportare tutti i order dati della tabella in un'altra posizione, riducendo le dimensioni del database e il tempo di manutenzione necessario. Con una tabella esterna, i dati esportati si comportano esattamente come una normale tabella.
Hub di esportazione dei dati
Usando SQL Server 2025 come hub dati, è possibile combinare CETAS con tutte le funzionalità PolyBase esistenti, inclusa la connessione ad altre origini dati come Oracle, Teradata, ODBC o altre versioni di SQL Server.
Requisiti CETAS
Per usare CETAS in SQL Server 2025, è necessario abilitare la proprietà ALLOW POLYBASE EXPORT tramite sp_configure. Per informazioni dettagliate, vedere l'esercizio successivo.
Autorizzazioni CETAS
Per usare CETAS, sono necessari tre diversi livelli di autorizzazione:
Autorizzazione ad accedere e a leggere l'origine dati. Se i dati si trovano all'esterno di SQL Server, in una condivisione di rete o in un altro server di database, l'account del servizio SQL Server deve disporre dell'autorizzazione per accedere all'origine dati.
Autorizzazione per SQL Server 2025 per usare il comando CETAS. Per consentire all'utente del database di eseguire il comando CETAS, sono necessarie le autorizzazioni ADMINISTER BULK OPERATIONS, ALTER ANY EXTERNAL DATA SOURCE e ALTER ANY EXTERNAL FILE FORMAT.
Autorizzazione di scrittura nella destinazione per scrivere i risultati di CETAS. Per poter scrivere nel file di destinazione, Parquet o CSV, l'utente deve disporre delle autorizzazioni di scrittura per la destinazione. Ad esempio, per scrivere in Archiviazione Blob di Azure o in Azure Data Lake Storage, l'utente deve disporre delle autorizzazioni LIST, READ, CREATE e WRITE per tali destinazioni.
Per altre informazioni sulle autorizzazioni per CETAS, vedere Autorizzazioni di CREATE EXTERNAL TABLE AS SELECT (CETAS).
Formati supportati da CETAS
CETAS riceve un flusso di dati, usando un comando SELECT come input ed esporta i risultati in formato CSV o Parquet. L'input supporta gli stessi formati di un comando SELECT, inclusi i risultati OPENROWSET.
L'input può essere una tabella in esecuzione localmente nell'istanza di SQL Server, un file di rete a cui si accede tramite un'operazione OPENROWSET, una tabella in un altro sistema di database o un file Delta archiviato in Archiviazione BLOB di Azure, Azure Data Lake Storage o un archivio oggetti compatibile con S3.
- Per un elenco completo dei formati supportati, vedere CREATE EXTERNAL FILE FORMAT.
- Per un elenco completo delle origini dati supportate, vedere CREATE EXTERNAL DATA SOURCE.
- Per informazioni sull'accesso ai file remoti tramite OPENROWSET, vedere OPENROWSET.
Struttura T-SQL CETAS
Per comprendere meglio CETAS, è possibile suddividere la sintassi T-SQL complessiva in tre parti:
-
CREATE EXTERNAL TABLEclausola : si tratta della prima parte dell'istruzione, in cui si dichiara il nome della tabella esterna e si specifica il percorso di destinazione, il nome file e il formato di file usando laWITHclausola , che includeLOCATIONle opzioni ,DATA_SOURCEeFILE_FORMAT. -
Parametri di rifiuto facoltativi : tra la clausola e la
WITHASparola chiave è possibile includere parametri facoltativi per filtrare o rifiutare i dati che non si desidera esportare. -
SELECTstatement : la parte finale dell'istruzione è una query standardSELECTche definisce i dati da esportare. Questa query determina le definizioni di colonna, i tipi di dati e l'origine dei dati esportati.
La sintassi CETAS segue un flusso logico: prima si definisce dove e come esportare, quindi si definiscono gli elementi da esportare. Questa struttura consente di combinare CETAS con qualsiasi SELECT istruzione per eseguire query sui dati all'esterno di SQL Server, all'interno di SQL Server o da qualsiasi altro database supportato. SQL Server 2025 crea automaticamente il nome del file e suddivide i risultati in più file per l'ottimizzazione. Ad esempio, una tabella esportata come Parquet può generare diversi file, a seconda delle dimensioni dei dati esportate.
Esportare una tabella da SQL Server come Parquet
L'esempio seguente usa CETAS per esportare una tabella da SQL Server come Parquet:
CREATE EXTERNAL TABLE ext_sales
WITH (
LOCATION = '/cetas',
DATA_SOURCE = s3_eds,
FILE_FORMAT = ParquetFileFormat
) AS
SELECT *
FROM AdventureWorks2025.[Sales].[SalesOrderDetail];
Leggere un file Delta ed esportare come Parquet
L'esempio seguente usa CETAS per leggere un file Delta ed esportarlo come 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];
Nell'esercizio successivo si usa CETAS per:
- Esportare una tabella come Parquet.
- Spostare i dati ad accesso saltuario da un database all'archiviazione.
- Creare una tabella esterna per accedere ai dati archiviati.
- Usare viste, ricerca con caratteri jolly, eliminazione di cartelle e metadati come strategie di query.