Bagikan melalui


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

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.

  1. 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.

  2. Klik dua kali pada koneksi di jendela Server untuk menampilkan dasbor server untuk instans master SQL Server. Pilih Kueri Baru.

    Kueri instans master SQL Server

  3. Jalankan perintah Transact-SQL berikut untuk mengubah konteks ke database Penjualan dalam instans master.

    USE Sales
    GO
    
  4. 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');
    
  5. 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.

  1. 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;
    
  2. 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: