適用於:SQL Server 2019 (15.x)
Important
MICROSOFT SQL Server 2019 巨量數據叢集已淘汰。 SQL Server 2019 巨量數據叢集的支援已於 2025 年 2 月 28 日結束。 如需詳細資訊,請參閱 Microsoft SQL Server 平臺上的公告部落格文章和巨量數據選項。
本教學課程示範如何使用 Transact-SQL 將數據載入 SQL Server 2019 巨量數據叢集的數據集 區 。 使用 SQL Server 巨量數據叢集,可以將來自各種來源的數據匯入並分佈到資料池實例。
在本教學課程中,您將瞭解如何:
- 在數據集區中建立外部數據表。
- 將範例 Web 點擊流數據插入數據集區數據表中。
- 將數據集區數據表中的數據與本機數據表聯結。
Tip
如果您想要的話,您可以下載並執行本教學課程中命令的腳本。 如需指示,請參閱 GitHub 上的 數據集區範例 。
Prerequisites
-
巨量資料工具
- kubectl
- Azure Data Studio
- SQL Server 2019 擴充功能
- 將範例數據載入巨量數據叢集
在數據集區中建立外部數據表
下列步驟會在名為 web_clickstream_clicks_data_pool 的數據集區中建立外部數據表。 然後,此數據表可用來作為將數據內嵌至巨量數據叢集的位置。
在 Azure Data Studio 中,連線到巨量數據叢集的 SQL Server 主要實例。 如需詳細資訊,請參閱 連線到 SQL Server 主要實例。
按兩下 [ 伺服器 ] 視窗中的連線,以顯示 SQL Server 主要實例的伺服器儀錶板。 選取 [新增查詢]。
執行下列 Transact-SQL 命令,將內容變更為主要實例中的 Sales 資料庫。
USE Sales GO如果尚未存在,請建立數據集區的外部數據源。
IF NOT EXISTS(SELECT * FROM sys.external_data_sources WHERE name = 'SqlDataPool') CREATE EXTERNAL DATA SOURCE SqlDataPool WITH (LOCATION = 'sqldatapool://controller-svc/default');在數據集區中建立名為 web_clickstream_clicks_data_pool 的外部數據表。
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 );
建立資料池外部數據表是一個阻塞操作。 控制件會在所有後端數據集區節點上建立指定的數據表時傳回。 如果在建立作業期間發生失敗,則會將錯誤訊息傳回給呼叫端。
Load data
下列步驟會使用先前步驟中建立的外部數據表,將範例 Web 點擊串流數據內嵌至數據集區。
INSERT INTO使用語句將查詢的結果插入數據集區(web_clickstream_clicks_data_pool外部數據表)。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;使用兩個SELECT查詢檢查插入的數據。
SELECT count(*) FROM [dbo].[web_clickstream_clicks_data_pool] SELECT TOP 10 * FROM [dbo].[web_clickstream_clicks_data_pool]
查詢資料
將數據集區中查詢的預存結果與 Sales 數據表中的本機數據聯結。
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;
Clean up
使用下列命令移除在本教學課程中建立的資料庫物件。
DROP EXTERNAL TABLE [dbo].[web_clickstream_clicks_data_pool];
Next steps
瞭解如何使用 Spark 作業將資料內嵌至資料集區: