Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Ş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.
Sorgunun sonucuyla yeni bir tablo oluşturma
Microsoft Fabric'teki Warehouse, aşağıdaki T-SQL deyimlerini kullanarak T-SQL sorgusunun sonucuna göre kolayca yeni bir tablo oluşturmanızı sağlar:
-
CREATE TABLE AS SELECT(CTAS) ifadesi,SELECTdeyimi çıktısından ambarınızda yeni bir tablo oluşturmanıza olanak tanır. -
SELECT INTOherhangi bir tablo kaynağından sonuçları seçmenizi ve sonuçları yeni bir tabloya yönlendirmenizi sağlayan query yan tümcesi. Bu, T-SQL dilinde standart bir özelliktir.
Bu iki deyim benzerdir, bu nedenle aşağıdaki örnekler CTAS deyimine odaklanmıştır.
CTAS deyimi, veri dönüştürme ve çalışma alanınızda yeni tablolar oluşturma konusunda 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ında otomatik olarak oluşturulan bir tablo kullanarak Lakehouse Delta Lake klasörünü okuma.
-
OPENROWSETişlevini kullanarak Azure Data Lake veya Azure Blob depolama alanlarından doğrudan CSV, Parquet veya JSONL dosyalarını okuma.
Note
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.
Ambar tablosundan tablo oluşturma
İlk örnekte, mevcut dbo.bing_covid19_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_covid19_data_2023
AS
SELECT *
FROM dbo.bing_covid19_data
WHERE DATEPART(YEAR, updated) = '2023';
Ayrıca, kaynak tablodaki year sütunundan alınan değerlerle yeni month, dayofmonth, updated sütunları içeren yeni 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_covid19_data_with_year_month_day
AS
SELECT DATEPART(YEAR, updated) AS [year],
DATEPART(MONTH, updated) AS [month],
DATEPART(DAY, updated) AS [dayofmonth],
*
FROM dbo.bing_covid19_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 oluşturulan tabloyu, yeni month sütunu ile kaynak olarak kullanır.
CREATE TABLE dbo.infections_by_month
AS
SELECT country_region, [month],
SUM(CAST(confirmed as bigint)) AS confirmed_sum
FROM dbo.bing_covid19_data_with_year_month_day
GROUP BY country_region, [month];
Bu yeni tabloya dayanarak, Birleşik Devletler'in, ay January olduğunda tüm yıllarda daha fazla doğrulanmış vaka gözlemlediğini görüyoruz, bunu December ve October takip ediyor.
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;
Delta Lake klasöründen tablo oluşturma
OneLake'de kalıcı olan Delta Lake klasörleri, /Tables klasöründe bir göl evinde depolanıyorsa otomatik olarak tablo olarak temsil edilir. Aşağıdaki kodbing_covid19_data_2023 lakehouse içindeki Delta Lake klasöründen /Tables/bing_covid19_delta_lake yeni bir tablo oluşturur:
CREATE TABLE dbo.bing_covid19_data_2023
AS
SELECT *
FROM MyLakehouse.dbo.bing_covid19_delta_lake
WHERE DATEPART(YEAR, updated) = '2023';
Delta Lake klasörüne, dosyaların depolandığı lakehouse'u ifade eden üç parçalı ad gösterimini kullanarak başvurabilirsiniz. Önceki bölümde gösterilen tüm örnekler Delta Lake klasörleri için geçerlidir.
CSV/Parquet/JSONL dosyasından tablo oluşturma
Warehouse bing_covid19_data tablosundaki verileri okumak yerine, işlevini kullanarak OPENROWSET doğrudan dış dosyadan yeni bir tablo da oluşturabilirsiniz:
CREATE TABLE dbo.bing_covid19_data_2022
AS
SELECT *
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, dış CSV dosyasındaki verileri dönüştürerek yeni bir tablo da oluşturabilirsiniz:
CREATE TABLE dbo.bing_covid19_data_with_year_month_day
AS
SELECT DATEPART(YEAR, updated) AS [year],
DATEPART(MONTH, updated) AS [month],
DATEPART(DAY, updated) AS [dayofmonth],
*
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.csv') 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 oluşturulan tabloyu, yeni month sütunu ile kaynak olarak kullanır.
CREATE TABLE dbo.infections_by_month_2022
AS
SELECT country_region,
DATEPART(MONTH, updated) AS [month],
SUM(CAST(confirmed as bigint)) AS [confirmed_sum]
FROM OPENROWSET(BULK 'https://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.jsonl') AS data
WHERE DATEPART(YEAR, updated) = '2022'
GROUP BY country_region, DATEPART(MONTH, updated);
Bu yeni tabloya dayanarak, Birleşik Devletler'in, ay January olduğunda tüm yıllarda daha fazla doğrulanmış vaka gözlemlediğini görüyoruz, bunu December ve October takip ediyor.
April , genel olarak en düşük vaka sayısının olduğu aydır:
SELECT * FROM dbo.infections_by_month_2022
WHERE country_region = 'United States'
ORDER BY confirmed_sum DESC;
Daha fazla örnek ve sözdizimi başvurusu için CREATE TABLE AS SELECT (Transact-SQL)'e bakın.
T-SQL sorguları ile mevcut tablolara veri alma
Önceki örneklerde bir sorgunun sonucuna göre yeni tablolar oluşturulur. Mevcut tablolar üzerinde örnekleri çoğaltmak için INSERT ... SELECT deseni kullanılabilir.
Depolama tablosundan veri alma
Aşağıdaki kod, bir ambar tablosundaki yeni verileri mevcut bir tabloya alır:
INSERT INTO dbo.bing_covid19_data_2023
SELECT *
FROM dbo.bing_covid19_data
WHERE DATEPART(YEAR, updated) = '2023';
SELECT deyiminin sorgu ölçütleri, elde edilen sorgu sütun türleri hedef tablodaki sütunlarla uyumlu olduğu sürece, 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 INSERT INTO...SELECT ile veri toplu ithalini asgari günlükle ve paralellikle yapma bölümüne bakın.
Delta Lake klasöründen veri alma
OneLake'de kalıcı olan Delta Lake klasörleri, bir lakehouse klasöründe /Tables depolanıyorsa otomatik olarak tablo olarak temsil edilir.
Aşağıdaki kod, /Tables/bing_covid19_delta_lake bölümündeki MyLakehouse* lakehouse içinde yer alan Delta Lake klasöründen yeni verileri almaktadır.
INSERT INTO dbo.bing_covid19_data_2023
SELECT *
FROM MyLakehouse.dbo.bing_covid19_delta_lake
WHERE DATEPART(YEAR, updated) = '2023';
CSV/Parquet/JSONL dosyasından veri alma
Parquet, CSV veya JSON dosyalarını depolama alanından almak için işlevini kaynak olarak kullanabilirsiniz OPENROWSET :
INSERT INTO dbo.bing_covid19_data_2023
SELECT *
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) = '2023';
gibi joker karakterler kullanarak veya gibi *.parquet/year=*/month=*bölümlenmiş dizinleri hedefleyerek birden çok dosyayı okuyabilirsiniz. Performansı iyileştirmek için WHERE yan tümcesine filtre uygulayarak sorgu yürütme sırasında gereksiz satırları ve bölümleri ortadan kaldırın.
Bu örnek COPY INTO ile alımda kullanılanlara benzer. COPY INTO komutunun kullanımı, özellikle basit kaynak-hedef veri yükleri için daha kolaydır. Bununla birlikte, kaynak verileri dönüştürmeniz gerekiyorsa (değerleri dönüştürme veya diğer tablolarla birleştirme gibi), kullanarak INSERT ... SELECT alma sırasında dönüştürme gerçekleştirme esnekliğine sahip olursunuz.
OneLake'ten veri alma
Fabric OneLake depolama alanından veri yüklemek için OPENROWSET işlevini kaynak olarak kullanabilirsiniz.
{workspaceId} ve {lakehouseId} etiketlerini aşağıdaki örnekte, çalışma alanı ve lakehouse GUID'leri ile değiştirin:
INSERT INTO dbo.bing_covid19_data_2023
SELECT *
FROM OPENROWSET(BULK 'https://onelake.dfs.fabric.microsoft.com/{workspaceId}/{lakehouseId}/Files/year=*/month=*/*.parquet') AS data
WHERE data.filepath(1) = '2023'
Bu örnek, Azure Data Lake Storage'dan veri okuyan önceki örnek üzerinde derlemektedir. Kaynak verileri dönüştürmeniz, örneğin değerleri dönüştürmeniz, diğer tablolarla birleştirmeniz veya belirli bölümleri okumanız gerektiğinde bu yaklaşımı kullanın.
INSERT ... SELECT kullanmak, bu gibi durumlarda veri alımı sırasında dönüşümleri uygulama esnekliği sağlar.
Farklı ambarlardaki ve göllerdeki tablolardan veri alma
Hem CREATE TABLE AS SELECT hem de INSERT ... SELECT için SELECT deyimi, hedef tablonuzun depolandığı ambardan farklı olan ambarlardaki tablolara da çapraz ambar sorgularını kullanarak 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:
- En son olay verilerine sahip
cases_lakehouseadlı bir lakehouse. - Referans verileri için kullanılan tablolar içeren
reference_warehouseadlı bir ambar. - Hedef tablonun oluşturulduğu
research_warehouseadlı 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_covid19_data AS cases
INNER JOIN reference_warehouse.dbo.bing_covid19_data AS reference
ON cases.iso3 = reference.countrycode;
Çapraz ambar sorguları hakkında daha fazla bilgi edinmek için Veritabanları Arası SQL Sorgusu Yazma kısmına bakınız.
T-SQL alımını denetleme ve izleme
T-SQL aracılığıyla yürütülen hem hem CTAS de INSERT ... SELECT işlemler ambar sorgu geçmişinde/etkinliğinde görünür ve diğer ambar işlemleriyle birlikte izlenebilir.
Veri alımı seçenekleri
Verileri ambarınıza almanın diğer yolları şunlardır:
- COPY deyimini kullanarak veri alma
- İşlem hatlarını kullanarak veri alma
- Veri akışı kullanarak veri alma