Aracılığıyla paylaş


Transact-SQL kullanarak Verileri Ambarınıza alma

Şunlar için geçerlidir:✅ Microsoft Fabric'te Ambar

Transact-SQL dili, lakehouse ve ambarınızdaki mevcut tablolardan ambarınızdaki yeni tablolara büyük ölçekte veri yüklemek için kullanabileceğiniz seçenekler sunar. Bir tablonun toplanmış verilerle yeni sürümlerini, satırların alt kümesine sahip tabloların sürümlerini oluşturmanız veya karmaşık bir sorgunun sonucu olarak tablo oluşturmanız gerekiyorsa bu seçenekler kullanışlıdır. Şimdi bazı örnekleri inceleyelim.

CREATE TABLE AS SELECT (CTAS) kullanarak sorgu sonucuyla yeni bir tablo oluşturma

CREATE TABLE AS SELECT (CTAS) deyimi, bir SELECT deyiminin çıkışından ambarınızda yeni bir tablo oluşturmanıza olanak tanır. Veri dönüştürme ve çalışma alanınızda yeni tablolar oluşturma için son derece verimli hale getirerek yeni tabloya alma işlemini paralel olarak çalıştırır.

CTAS deyiminin SELECT bölümü için aşağıdaki seçenekleri kullanabilirsiniz:

  • Örneğin hazırlama tablosu gibi bir depo tablosunu okuma.
  • Lakehouse için SQL analiz uç noktası aracılığıyla otomatik olarak oluşturulan bir Lakehouse tablosunu okuma.
  • OPENROWSET işlevini (önizleme) kullanarak verileri doğrudan dış dosyadan okuma.

Not

Bu makaledeki örneklerde Bing COVID-19 örnek veri kümesi kullanılmıştır. Örnek veri kümesini yüklemek için COPY deyimini kullanarak verileri Ambarınıza alma bölümünde yer alan adımları izleyerek örnek verileri ambarınıza oluşturun.

İlk örnekte, mevcut dbo.[bing_covid-19_data_2023] tablonun bir kopyası olan ancak yalnızca 2023 yılına ait verilere filtrelenmiş yeni bir tablonun nasıl oluşturulacağı gösterilmektedir:

CREATE TABLE [dbo].[bing_covid-19_data_2023]
AS
SELECT * 
FROM [dbo].[bing_covid-19_data] 
WHERE DATEPART(YEAR,[updated]) = '2023';

Hazırlama [bing_covid-19_data] tablosundaki verileri okumak yerine, OPENROWSET işlevini (genel önizleme) kullanarak doğrudan dış dosyadan yeni bir tablo da oluşturabilirsiniz:

CREATE TABLE [dbo].[bing_covid-19_data_2022]
AS
SELECT id, updated, confirmed, deaths, recovered, latitude, longitude, iso2, iso3, country_region
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet') AS data
WHERE DATEPART(YEAR,[updated]) = '2022'

Ayrıca, kaynak tablodaki sütundan year alınan değerlerle yeni , month, dayofmonth sütunları içeren yeni updatedbir tablo da oluşturabilirsiniz. Bu, enfeksiyon verilerini yıla göre görselleştirmeye çalışıyorsanız veya en çok COVID-19 vakasının gözlemlendiği ayları görmek için yararlı olabilir:

CREATE TABLE [dbo].[bing_covid-19_data_with_year_month_day]
AS
SELECT DATEPART(YEAR,[updated]) [year], DATEPART(MONTH,[updated]) [month], DATEPART(DAY,[updated]) [dayofmonth], * 
FROM [dbo].[bing_covid-19_data];

Hazırlama [bing_covid-19_data] tablosundaki verileri okumak yerine, doğrudan bir dış dosyadan yeni bir tablo oluşturabilir ve sonuçları dönüştürebilirsiniz:

CREATE TABLE [dbo].[bing_covid-19_data_with_year_month_day]
AS
SELECT DATEPART(YEAR,[updated]) [year], DATEPART(MONTH,[updated]) [month], DATEPART(DAY,[updated]) [dayofmonth],
        id, confirmed, deaths, recovered, latitude, longitude, iso2, iso3, country_region
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet') AS data

Başka bir örnek olarak, mevsimselliğin belirli bir ülkede/bölgede nasıl yayıldığını değerlendirmek için yıldan bağımsız olarak her ay gözlemlenen vaka sayısını özetleyen yeni bir tablo oluşturabilirsiniz. Önceki örnekte month oluşturulan tabloyu yeni sütun kaynak olarak kullanır:

CREATE TABLE [dbo].[infections_by_month]
AS
SELECT [country_region],[month], SUM(CAST(confirmed as bigint)) [confirmed_sum]
FROM [dbo].[bing_covid-19_data_with_year_month_day]
GROUP BY [country_region],[month];

CREATE TABLE [dbo].[infections_by_month_2022]
AS
SELECT [country_region], DATEPART(MONTH,[updated]) AS [month], SUM(CAST(confirmed as bigint)) [confirmed_sum]
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet') AS data
WHERE DATEPART(YEAR,[updated]) = '2022'
GROUP BY [country_region],DATEPART(MONTH,[updated]);

Bu yeni tabloya dayanarak, Birleşik Devletler ile ve ayını Januaryizleyen DecemberOctobertüm yıllarda daha doğrulanmış vakalar gözlemlediğini görebiliriz. April , genel olarak en düşük vaka sayısının olduğu aydır:

SELECT * FROM [dbo].[infections_by_month]
WHERE [country_region] = 'United States'
ORDER BY [confirmed_sum] DESC;

Birleşik Devletler aya göre, aya göre azalan sırada sıralanmış bulaşma sayısını gösteren sorgu sonuçlarının ekran görüntüsü. 1. ay en üstte gösterilir.

Daha fazla örnek ve söz dizimi başvurusu için bkz . CREATE TABLE AS SELECT (Transact-SQL).

T-SQL sorguları ile mevcut tablolara veri alma

Önceki örneklerde bir sorgunun sonucuna göre yeni tablolar oluşturulur. Örnekleri var olan tablolarda çoğaltmak için INSERT... SELECT deseni kullanılabilir. Örneğin, aşağıdaki kod yeni verileri mevcut bir tabloya alır:

INSERT INTO [dbo].[bing_covid-19_data_2023]
SELECT * FROM [dbo].[bing_covid-19_data] 
WHERE [updated] > '2023-02-28';

Sonuçta elde edilen sorgu sütun türleri hedef tablodaki SELECT sütunlarla uyumlu olduğu sürece deyiminin sorgu ölçütleri geçerli herhangi bir sorgu olabilir. Sütun adları belirtilirse ve hedef tablodaki sütunların yalnızca bir alt kümesini içerirse, diğer tüm sütunlar olarak NULLyüklenir. Daha fazla bilgi için bkz . INSERT INTO kullanma... Select to Bulk Import data with minimal logging and parallelism.

Farklı ambarlardaki ve göllerdeki tablolardan veri alma

HEM CREATE TABLE AS SELECT hem de INSERT... SELECT deyimi, SELECT çapraz ambar sorgularını kullanarak hedef tablonuzun depolandığı ambardan farklı olan ambarlardaki tablolara da başvurabilir. Bu, üç bölümlü adlandırma kuralı [warehouse_or_lakehouse_name.][schema_name.]table_namekullanılarak elde edilebilir. Örneğin, aşağıdaki çalışma alanı varlıklarına sahip olduğunuzu varsayalım:

  • Adlı ve en son olay verilerine sahip bir lakehouse cases_lakehouse .
  • Başvuru verileri için kullanılan tablolarla adlı reference_warehouse bir ambar.
  • Hedef tablonun oluşturulduğu yer adlı research_warehouse bir ambar.

Bu çalışma alanı varlıklarındaki tablolardaki verileri birleştirmek için üç bölümlü adlandırma kullanan yeni bir tablo oluşturulabilir:

CREATE TABLE [research_warehouse].[dbo].[cases_by_continent]
AS
SELECT 
FROM [cases_lakehouse].[dbo].[bing_covid-19_data] cases
INNER JOIN [reference_warehouse].[dbo].[bing_covid-19_data] reference
ON cases.[iso3] = reference.[countrycode];

Çapraz ambar sorguları hakkında daha fazla bilgi edinmek için bkz . Veritabanları arası SQL Sorgusu yazma.