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 updated
bir 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ı January
izleyen December
October
tü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;
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 NULL
yü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_name
kullanı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.