Tutorial: Menyerap data ke dalam kumpulan data SQL Server dengan Transact-SQL
Berlaku untuk: SQL Server 2019 (15.x)
Penting
Add-on Kluster Big Data Microsoft SQL Server 2019 akan dihentikan. Dukungan untuk SQL Server 2019 Kluster Big Data akan berakhir pada 28 Februari 2025. Semua pengguna SQL Server 2019 yang ada dengan Jaminan Perangkat Lunak akan didukung sepenuhnya pada platform dan perangkat lunak akan terus dipertahankan melalui pembaruan kumulatif SQL Server hingga saat itu. Untuk informasi selengkapnya, lihat posting blog pengumuman dan Opsi big data di platform Microsoft SQL Server.
Tutorial ini menunjukkan cara menggunakan Transact-SQL untuk memuat data ke dalam kumpulan data SQL Server 2019 Kluster Big Data. Dengan SQL Server Kluster Big Data, data dari berbagai sumber dapat diserap dan didistribusikan di seluruh instans kumpulan data.
Dalam tutorial ini, Anda akan mempelajari cara:
- Buat tabel eksternal di kumpulan data.
- Sisipkan sampel data clickstream web ke dalam tabel kumpulan data.
- Gabungkan data dalam tabel kumpulan data dengan tabel lokal.
Tip
Jika mau, Anda dapat mengunduh dan menjalankan skrip untuk perintah dalam tutorial ini. Untuk petunjuknya, lihat Sampel kumpulan data di GitHub.
Prasyarat
- Alat big data
- kubectl
- Azure Data Studio
- Ekstensi SQL Server 2019
- Memuat data sampel ke dalam kluster big data Anda
Membuat tabel eksternal di kumpulan data
Langkah-langkah berikut membuat tabel eksternal di kumpulan data bernama web_clickstream_clicks_data_pool. Tabel ini kemudian dapat digunakan sebagai lokasi untuk menyerap data ke dalam kluster big data.
Di Azure Data Studio, sambungkan ke instans master SQL Server dari kluster big data Anda. Untuk informasi selengkapnya, lihat Menyambungkan ke instans master SQL Server.
Klik dua kali pada koneksi di jendela Server untuk menampilkan dasbor server untuk instans master SQL Server. Pilih Kueri Baru.
Jalankan perintah Transact-SQL berikut untuk mengubah konteks ke database Penjualan dalam instans master.
USE Sales GO
Buat sumber data eksternal ke kumpulan data jika belum ada.
IF NOT EXISTS(SELECT * FROM sys.external_data_sources WHERE name = 'SqlDataPool') CREATE EXTERNAL DATA SOURCE SqlDataPool WITH (LOCATION = 'sqldatapool://controller-svc/default');
Buat tabel eksternal bernama web_clickstream_clicks_data_pool di kumpulan data.
IF NOT EXISTS(SELECT * FROM sys.external_tables WHERE name = 'web_clickstream_clicks_data_pool') CREATE EXTERNAL TABLE [web_clickstream_clicks_data_pool] ("wcs_user_sk" BIGINT , "i_category_id" BIGINT , "clicks" BIGINT) WITH ( DATA_SOURCE = SqlDataPool, DISTRIBUTION = ROUND_ROBIN );
Pembuatan tabel eksternal kumpulan data adalah operasi pemblokiran. Kontrol mengembalikan ketika tabel yang ditentukan telah dibuat pada semua simpul kumpulan data back-end. Jika kegagalan terjadi selama operasi buat, pesan kesalahan dikembalikan ke pemanggil.
Memuat Data
Langkah-langkah berikut ini menyerap sampel data clickstream web ke dalam kumpulan data menggunakan tabel eksternal yang dibuat di langkah-langkah sebelumnya.
INSERT INTO
Gunakan pernyataan untuk menyisipkan hasil dari kueri ke dalam kumpulan data (tabel web_clickstream_clicks_data_pool eksternal).INSERT INTO web_clickstream_clicks_data_pool SELECT wcs_user_sk, i_category_id, COUNT_BIG(*) as clicks FROM sales.dbo.web_clickstreams_hdfs INNER JOIN sales.dbo.item it ON (wcs_item_sk = i_item_sk AND wcs_user_sk IS NOT NULL) GROUP BY wcs_user_sk, i_category_id HAVING COUNT_BIG(*) > 100;
Periksa data yang disisipkan dengan dua kueri SELECT.
SELECT count(*) FROM [dbo].[web_clickstream_clicks_data_pool] SELECT TOP 10 * FROM [dbo].[web_clickstream_clicks_data_pool]
Mengueri data
Gabungkan hasil yang disimpan dari kueri di kumpulan data dengan data lokal dalam tabel Penjualan .
SELECT TOP (100)
w.wcs_user_sk,
SUM( CASE WHEN i.i_category = 'Books' THEN 1 ELSE 0 END) AS book_category_clicks,
SUM( CASE WHEN w.i_category_id = 1 THEN 1 ELSE 0 END) AS [Home & Kitchen],
SUM( CASE WHEN w.i_category_id = 2 THEN 1 ELSE 0 END) AS [Music],
SUM( CASE WHEN w.i_category_id = 3 THEN 1 ELSE 0 END) AS [Books],
SUM( CASE WHEN w.i_category_id = 4 THEN 1 ELSE 0 END) AS [Clothing & Accessories],
SUM( CASE WHEN w.i_category_id = 5 THEN 1 ELSE 0 END) AS [Electronics],
SUM( CASE WHEN w.i_category_id = 6 THEN 1 ELSE 0 END) AS [Tools & Home Improvement],
SUM( CASE WHEN w.i_category_id = 7 THEN 1 ELSE 0 END) AS [Toys & Games],
SUM( CASE WHEN w.i_category_id = 8 THEN 1 ELSE 0 END) AS [Movies & TV],
SUM( CASE WHEN w.i_category_id = 9 THEN 1 ELSE 0 END) AS [Sports & Outdoors]
FROM [dbo].[web_clickstream_clicks_data_pool] as w
INNER JOIN (SELECT DISTINCT i_category_id, i_category FROM item) as i
ON i.i_category_id = w.i_category_id
GROUP BY w.wcs_user_sk;
Penghapusan
Gunakan perintah berikut untuk menghapus objek database yang dibuat dalam tutorial ini.
DROP EXTERNAL TABLE [dbo].[web_clickstream_clicks_data_pool];
Langkah berikutnya
Pelajari tentang cara menyerap data ke dalam kumpulan data dengan pekerjaan Spark: