教學課程:使用 Transact-SQL 將資料內嵌到 SQL Server 資料集區
適用於:SQL Server 2019 (15.x)
重要
Microsoft SQL Server 2019 巨量資料叢集附加元件將會淘汰。 SQL Server 2019 巨量資料叢集的支援將於 2025 年 2 月 28 日結束。 平台上將完全支援含軟體保證 SQL Server 2019 的所有現有使用者,而且軟體將會持續透過 SQL Server 累積更新來維護,直到該時間為止。 如需詳細資訊,請參閱公告部落格文章與 Microsoft SQL Server 平台上的巨量資料選項。
本教學課程示範如何使用 Transact-SQL,將資料載入 SQL Server 2019 巨量資料叢集的資料集區。 透過 SQL Server 巨量資料叢集,即可將各種來源的資料內嵌和分散到不同的資料集區執行個體。
在本教學課程中,您會了解如何:
- 在資料集區中建立外部資料表。
- 將範例 Web 點選流資料插入資料集區資料表。
- 將資料集區資料表中的資料與本機資料表聯結。
提示
如果您想要的話,也可以下載並執行用於本教學課程中命令的指令碼。 如需指示,請參閱 GitHub 上的資料集區範例。
必要條件
- 巨量資料工具
- 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 );
資料集區外部資料表的建立是封鎖作業。 當指定的資料表已經在所有後端資料集區節點上建立之後,就會恢復控制權。 如果建立作業期間發生失敗,錯誤訊息會傳回給呼叫者。
載入資料
下列步驟使用在先前步驟中建立的外部資料表,將範例 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;
清除
使用下列命令,移除本教學課程所建立的資料庫物件。
DROP EXTERNAL TABLE [dbo].[web_clickstream_clicks_data_pool];
後續步驟
了解如何使用 Spark 作業,將資料內嵌至資料集區: