إنشاء CETAS من خلال خادم Synapse SQL

يمكنك استخدام إنشاء جدول خارجي كاختيار (CETAS) في تجمع SQL المخصصة، أو أي تجمع آخر في SQL بلا خادم لإكمال المهام التالية:

  • إنشاء جدول خارجي

  • ترحيل، بالتوازي، نتائج Transact - SQL واختيار بيان إلى:

    • Hadoop
    • كائن التخزين الثنائي للبيانات الكبيرة في Azure
    • Azure Data Lake Storage Gen2

CETAS في تجمع SQL المخصص

بالنسبة لتجمع SQL المخصصة، واستخدام CETAS وبناء الجملة، راجع مقالة⁧⁩CREATE EXTERNAL TABLE AS SELECT⁧⁩. بالإضافة إلى ذلك، للحصول على إرشادات حول CTAS باستخدام تجمع SQL المخصصة، راجع مقالة بعنوان⁧⁩CREATE TABLE AS SELECT⁧⁩.

إنشاء CETAS في تجمع SQL بلا خادم

عند استخدام مجموعة SQL بلا خادم، يجرى استخدام CETAS لإنشاء جدول خارجي، وترحيل نتائج الاستعلام إلى كائن البيانات الثنائية لتخزين Azure، أو Azure Data Lake Storage Gen 2.

للحصول على بناء الجملة الكامل، راجع CREATE EXTERNAL TABLE AS SELECT (Transact-SQL).

أمثلة

تستخدم هذه الأمثلة CETAS لحفظ إجمالي عدد السكان المجمعين حسب السنة والحالة إلى مجلد البيانات المجمعة الموجود في مصدر بيانات_الشريحة السكانية.

يعتمد هذا النموذج على بيانات الاعتماد، ومصدر البيانات، وتنسيق الملف الخارجي الذي تم إنشاؤه مسبقًا. ارجع إلى مستند⁧⁩الجداول الخارجية⁧⁩ لحفظ نتائج الاستعلام في مجلد مختلف في نفس مصدر البيانات، قم بتغيير وسيطة LOCATION.

لحفظ النتائج في حساب تخزين مختلف، قم بإنشاء واستخدام مصدر بيانات مختلف لوسيطة DATA_SOURCE.

ملاحظة

تستخدم النماذج التالية حساب تخزين Azure Open Data عاماً. وهو للقراءة فقط. لتنفيذ هذه الاستعلامات، تحتاج إلى توفير مصدر البيانات الذي لديك أذونات بالكتابة به.

-- use CETAS to export select statement with OPENROWSET result to  storage
CREATE EXTERNAL TABLE population_by_year_state
WITH (
    LOCATION = 'aggregated_data/',
    DATA_SOURCE = population_ds,  
    FILE_FORMAT = census_file_format
)  
AS
SELECT decennialTime, stateName, SUM(population) AS population
FROM
    OPENROWSET(BULK 'https://azureopendatastorage.dfs.core.windows.net/censusdatacontainer/release/us_population_county/year=*/*.parquet',
    FORMAT='PARQUET') AS [r]
GROUP BY decennialTime, stateName
GO

-- you can query the newly created external table
SELECT * FROM population_by_year_state

يستخدم النموذج التالي جدول خارجي كمصدر لـتطبيق CETAS. ويعتمد على بيانات الاعتماد، ومصدر البيانات، وتنسيق الملف الخارجي، والجدول الخارجي الذي تم إنشاؤه مسبقًا. ارجع إلى مستند⁧⁩الجداول الخارجية⁧

-- use CETAS with select from external table
CREATE EXTERNAL TABLE population_by_year_state
WITH (
    LOCATION = 'aggregated_data/',
    DATA_SOURCE = population_ds,  
    FILE_FORMAT = census_file_format
)  
AS
SELECT decennialTime, stateName, SUM(population) AS population
FROM census_external_table
GROUP BY decennialTime, stateName
GO

-- you can query the newly created external table
SELECT * FROM population_by_year_state

مثال عام

في هذا المثال، يمكننا رؤية مثال على رمز قالب لكتابة CETAS مع عرض كمصدر واستخدام الهوية المدارة كمصادقة.

CREATE DATABASE [<mydatabase>];
GO

USE [<mydatabase>];
GO

CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<strong password>';

CREATE DATABASE SCOPED CREDENTIAL [WorkspaceIdentity] WITH IDENTITY = 'Managed Identity';
GO

CREATE EXTERNAL FILE FORMAT [ParquetFF] WITH (
    FORMAT_TYPE = PARQUET,
    DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
);
GO

CREATE EXTERNAL DATA SOURCE [SynapseSQLwriteable] WITH (
    LOCATION = 'https://<mystoageaccount>.dfs.core.windows.net/<mycontainer>/<mybaseoutputfolderpath>',
    CREDENTIAL = [WorkspaceIdentity]
);
GO

CREATE EXTERNAL TABLE [dbo].[<myexternaltable>] WITH (
        LOCATION = '<myoutputsubfolder>/',
        DATA_SOURCE = [SynapseSQLwriteable],
        FILE_FORMAT = [ParquetFF]
) AS
SELECT * FROM [<myview>];
GO

أنواع البيانات المدعومة

يمكن استخدام CETAS لتخزين مجموعات النتائج بأنواع بيانات SQL التالية:

  • ثنائي
  • ثنائي متغير
  • حرف
  • حروف متنوعة
  • nchar
  • nvarchar
  • Smalldate
  • التاريخ
  • التاريخ والوقت
  • datetime2
  • datetimeoffset
  • الوقت
  • عشري
  • عددي
  • حُر
  • حقيقي
  • عدد صحيح كبير
  • Tinyint
  • Smallint
  • Int
  • Bigint
  • بت
  • money
  • smallmoney
  • uniqueidentifier

ملاحظة

لا يمكن استخدام LOBs أكبر من 1 ميجابايت مع CETAS.

الخطوات التالية

جرب الاستعلام عن ⁧⁩استخدام Apache Spark لإنشاء جداول خارجية لنظام Azure Synapse⁧