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 , , month
dayofmonth
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;
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 berbagai gudang dan lakehouse
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_name
penamaan 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.