Menyerap data ke Gudang Anda menggunakan Transact-SQL

Berlaku untuk: Gudang di Microsoft Fabric

Bahasa Transact-SQL menawarkan opsi yang dapat Anda gunakan untuk memuat data dalam skala besar dari tabel yang ada di lakehouse dan gudang Anda ke tabel baru di gudang Anda. Opsi ini nyaman jika Anda perlu membuat versi baru tabel dengan data agregat, versi tabel dengan subset baris, atau untuk membuat tabel sebagai hasil dari kueri kompleks. Mari kita jelajahi beberapa contoh.

Membuat tabel baru dengan hasil kueri dengan menggunakan CREATE TABLE AS SELECT (CTAS)

Pernyataan CREATE TABLE AS SELECT (CTAS) memungkinkan Anda membuat tabel baru di gudang Anda dari output SELECT pernyataan. Ini menjalankan operasi penyerapan ke dalam tabel baru secara paralel, membuatnya sangat efisien untuk transformasi data dan pembuatan tabel baru di ruang kerja Anda.

Catatan

Contoh dalam artikel ini menggunakan himpunan data sampel Bing COVID-19. Untuk memuat himpunan data sampel, ikuti langkah-langkah dalam Menyerap data ke gudang Anda menggunakan pernyataan COPY untuk membuat data sampel ke gudang Anda.

Contoh pertama menggambarkan cara membuat tabel baru yang merupakan salinan tabel yang sudah ada dbo.[bing_covid-19_data_2023] , tetapi difilter ke data dari tahun 2023 saja:

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

Anda juga dapat membuat tabel baru dengan kolom , , monthdayofmonth baruyear, dengan nilai yang diperoleh dari updated kolom dalam tabel sumber. Ini dapat berguna jika Anda mencoba memvisualisasikan data infeksi menurut tahun, atau untuk melihat bulan ketika kasus COVID-19 terbanyak diamati:

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];

Sebagai contoh lain, Anda dapat membuat tabel baru yang meringkas jumlah kasus yang diamati dalam setiap bulan, terlepas dari tahun tersebut, untuk mengevaluasi bagaimana musiman memengaruhi penyebaran di negara/wilayah tertentu. Ini menggunakan tabel yang dibuat dalam contoh sebelumnya dengan kolom baru month sebagai sumber:

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];

Berdasarkan tabel baru ini, kita dapat melihat bahwa Amerika Serikat mengamati kasus yang lebih terkonfirmasi sepanjang tahun di bulan January, diikuti oleh December dan October. April adalah bulan dengan jumlah kasus terendah secara keseluruhan:

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

Screenshot of the query results showing the number of infections by month in the United States, ordered by month, in descending order. The month number 1 is shown on top.

Untuk contoh dan referensi sintaks lainnya, lihat CREATE TABLE AS SELECT (Transact-SQL).

Menyerap data ke dalam tabel yang ada dengan kueri T-SQL

Contoh sebelumnya membuat tabel baru berdasarkan hasil kueri. Untuk mereplikasi contoh tetapi pada tabel yang ada, INSERT... Pola SELECT dapat digunakan. Misalnya, kode berikut menyerap data baru ke dalam tabel yang sudah ada:

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

Kriteria kueri untuk SELECT pernyataan bisa berupa kueri yang valid, selama tipe kolom kueri yang dihasilkan selaras dengan kolom pada tabel tujuan. Jika nama kolom ditentukan dan hanya menyertakan subset kolom dari tabel tujuan, semua kolom lain dimuat sebagai NULL. Untuk informasi selengkapnya, lihat Menggunakan INSERT INTO... SELECT untuk Mengimpor data secara massal dengan pengelogan dan paralelisme minimal.

Menyerap data dari tabel di gudang dan lakehouse yang berbeda

Untuk CREATE TABLE AS SELECT dan INSERT... SELECT, pernyataan juga SELECT dapat mereferensikan tabel pada gudang yang berbeda dari gudang tempat tabel tujuan Anda disimpan, dengan menggunakan kueri lintas gudang. Ini dapat dicapai dengan menggunakan konvensi [warehouse_or_lakehouse_name.][schema_name.]table_namepenamaan tiga bagian . Misalnya, Anda memiliki aset ruang kerja berikut:

  • Sebuah lakehouse bernama cases_lakehouse dengan data kasus terbaru.
  • Gudang bernama reference_warehouse dengan tabel yang digunakan untuk data referensi.
  • Gudang bernama research_warehouse tempat tabel tujuan dibuat.

Tabel baru dapat dibuat yang menggunakan penamaan tiga bagian untuk menggabungkan data dari tabel pada aset ruang kerja ini:

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];

Untuk mempelajari selengkapnya tentang kueri lintas gudang, lihat Menulis Kueri SQL lintas database.