快速入門:使用無伺服器 SQL 集區
Synapse 無伺服器 SQL 集區是無伺服器查詢服務,可讓您對放置在 Azure 儲存體 中的檔案執行 SQL 查詢。 在本快速入門中,您將瞭解如何使用無伺服器 SQL 集區查詢各種類型的檔案。 支援的格式會列在OPENROWSET中。
本快速入門示範查詢:CSV、Apache Parquet 和 JSON 檔案。
必要條件
選擇 SQL 用戶端來發出查詢:
- Azure Synapse Studio 是一種 Web 工具,可用來瀏覽記憶體中的檔案並建立 SQL 查詢。
- Azure Data Studio 是一種用戶端工具,可讓您在隨選資料庫上執行 SQL 查詢和筆記本。
- SQL Server Management Studio 是一種用戶端工具,可讓您在隨選資料庫上執行 SQL 查詢。
本快速入門的參數:
參數 | 描述 |
---|---|
無伺服器 SQL 集區服務端點位址 | 做為伺服器名稱 |
無伺服器 SQL 集區服務端點區域 | 用來判斷我們在範例中使用的記憶體 |
端點存取的使用者名稱和密碼 | 用來存取端點 |
用來建立檢視的資料庫 | 做為範例起點的資料庫 |
第一次設定
使用範例之前:
- 建立檢視的資料庫(如果您想要使用檢視表)
- 建立無伺服器 SQL 集區用來存取記憶體中檔案的認證
建立資料庫
建立您自己的資料庫以供示範之用。 您將使用此資料庫來建立檢視,以及本文中的範例查詢。
注意
資料庫僅用於檢視元數據,不適用於實際數據。 記下您稍後在快速入門中使用的資料庫名稱。
使用下列查詢,變更 mydbname
為您選擇的名稱:
CREATE DATABASE mydbname
建立數據源
若要使用無伺服器 SQL 集區執行查詢,請建立無伺服器 SQL 集區可用來存取記憶體中檔案的數據源。 執行下列代碼段,以建立本節範例中使用的數據源:
-- create master key that will protect the credentials:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = <enter very strong password here>
-- create credentials for containers in our demo storage account
CREATE DATABASE SCOPED CREDENTIAL sqlondemand
WITH IDENTITY='SHARED ACCESS SIGNATURE',
SECRET = 'sv=2022-11-02&ss=b&srt=co&sp=rl&se=2042-11-26T17:40:55Z&st=2024-11-24T09:40:55Z&spr=https&sig=DKZDuSeZhuCWP9IytWLQwu9shcI5pTJ%2Fw5Crw6fD%2BC8%3D'
GO
CREATE EXTERNAL DATA SOURCE SqlOnDemandDemo WITH (
LOCATION = 'https://sqlondemandstorage.blob.core.windows.net',
CREDENTIAL = sqlondemand
);
查詢 CSV 檔案
下圖是要查詢的檔案預覽:
下列查詢顯示如何讀取不包含標頭數據列的 CSV 檔案,其中包含 Windows 樣式的新行和逗號分隔數據行:
SELECT TOP 10 *
FROM OPENROWSET
(
BULK 'csv/population/*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV', PARSER_VERSION = '2.0'
)
WITH
(
country_code VARCHAR (5)
, country_name VARCHAR (100)
, year smallint
, population bigint
) AS r
WHERE
country_name = 'Luxembourg' AND year = 2017
您可以在查詢編譯期間指定架構。 如需更多範例,請參閱如何 查詢 CSV 檔案。
查詢 Parquet 檔案
下列範例顯示查詢 Parquet 檔案的自動架構推斷功能。 它會傳回 2017 年 9 月的數據列數目,而不指定架構。
注意
讀取 Parquet 檔案時,您不需要在 子句中 OPENROWSET WITH
指定數據行。 在此情況下,無伺服器 SQL 集區會利用 Parquet 檔案中的元數據,並依名稱系結數據行。
SELECT COUNT_BIG(*)
FROM OPENROWSET
(
BULK 'parquet/taxi/year=2017/month=9/*.parquet',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT='PARQUET'
) AS nyc
尋找查詢 parquet 檔案的詳細資訊。
查詢 JSON 檔案
JSON 範例檔案
檔案會儲存在 json 容器、資料夾 書籍中,並包含具有下列結構的單一書籍專案:
{
"_id":"ahokw88",
"type":"Book",
"title":"The AWK Programming Language",
"year":"1988",
"publisher":"Addison-Wesley",
"authors":[
"Alfred V. Aho",
"Brian W. Kernighan",
"Peter J. Weinberger"
],
"source":"DBLP"
}
查詢 JSON 檔案
下列查詢示範如何使用 JSON_VALUE ,從具有 Cryptology 中 Probabilistic 和 Statistical Methods 標題的書籍 擷取純量值(title,publisher):選取的文章簡介:
SELECT
JSON_VALUE(jsonContent, '$.title') AS title
, JSON_VALUE(jsonContent, '$.publisher') as publisher
, jsonContent
FROM OPENROWSET
(
BULK 'json/books/*.json',
DATA_SOURCE = 'SqlOnDemandDemo'
, FORMAT='CSV'
, FIELDTERMINATOR ='0x0b'
, FIELDQUOTE = '0x0b'
, ROWTERMINATOR = '0x0b'
)
WITH
( jsonContent varchar(8000) ) AS [r]
WHERE
JSON_VALUE(jsonContent, '$.title') = 'Probabilistic and Statistical Methods in Cryptology, An Introduction by Selected Topics'
重要
我們會將整個 JSON 檔案讀取為單一數據列/數據行。 因此,FIELDTERMINATOR、FIELDQUOTE 和 ROWTERMINATOR 會設定為 0x0b,因為我們不會預期會在檔案中找到它。
下一步
您現在已準備好繼續進行下列文章: