快速入門:使用無伺服器 SQL 集區

Synapse 無伺服器 SQL 集區是無伺服器查詢服務,可讓您對放置在 Azure 儲存體 中的檔案執行 SQL 查詢。 在本快速入門中,您將瞭解如何使用無伺服器 SQL 集區查詢各種類型的檔案。 支援的格式會列在OPENROWSET

本快速入門示範查詢:CSV、Apache Parquet 和 JSON 檔案。

必要條件

選擇 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=2018-03-28&ss=bf&srt=sco&sp=rl&st=2019-10-14T12%3A10%3A25Z&se=2061-12-31T12%3A10%3A00Z&sig=KlSU2ullCscyTS0An0nozEpo4tO5JAgGBvw%2FJX2lguw%3D'
GO
CREATE EXTERNAL DATA SOURCE SqlOnDemandDemo WITH (
    LOCATION = 'https://sqlondemandstorage.blob.core.windows.net',
    CREDENTIAL = sqlondemand
);

查詢 CSV 檔案

下圖是要查詢的檔案預覽:

First 10 rows of the CSV file without header, Windows style new line.

下列查詢顯示如何讀取不包含標頭數據列的 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,因為我們不會預期會在檔案中找到它。

下一步

您現在已準備好繼續進行下列文章: