Поделиться через


Краткое руководство: использование бессерверного пула SQL

Бессерверный пул SQL Synapse — это бессерверная служба запросов, которая позволяет выполнять SQL-запросы на файлы, размещенные в служба хранилища Azure. Из этого краткого руководства вы узнаете, как запрашивать различные типы файлов с помощью бессерверного пула SQL. Список поддерживаемых форматов см. в разделе OPENROWSET.

В этом кратком руководстве показано, как запрашивать CSV-файлы, Apache Parquet и JSON.

Необходимые компоненты

Выберите клиент SQL для создания запросов:

  • Azure Synapse Studio — это веб-средство, которое можно использовать для просмотра файлов в хранилище и создания SQL-запросов.
  • Visual Studio Code с расширением mssql — это кроссплатформенное упрощенное средство разработчика и данных, которое позволяет выполнять SQL-запросы и записные книжки в базе данных по запросу.
  • SQL Server Management Studio — это клиентское средство, которое позволяет запускать SQL-запросы в базе данных по запросу.

В этом кратком руководстве используются следующие параметры:

Параметр Описание
Адрес конечной точки службы бессерверного пула SQL Используется в качестве имени сервера.
Регион конечной точки службы бессерверного пула SQL Используется для определения хранилища, используемого в примерах
Имя пользователя и пароль для доступа к конечной точке Используется для доступа к конечной точке.
База данных, используемая для создания представлений База данных, используемая в качестве начальной точки в примерах.

Первоначальная настройка

Прежде чем использовать примеры, сделайте следующее:

  • Создайте базу данных для представлений (если вы хотите использовать представления).
  • Создайте учетные данные для использования бессерверным пулом SQL для доступа к файлам в хранилище.

Создание базы данных

Создайте собственную базу данных для демонстрационных целей. Эту базу данных можно использовать для создания представлений и примеров запросов в этой статье.

Примечание.

Базы данных используются только для просмотра метаданных, а не для реальных данных. Запишите имя базы данных для последующего использования в кратком руководстве.

Используйте следующую команду T-SQL, изменив <mydbname> имя выбранного варианта:

CREATE DATABASE <mydbname>

Создание источника данных

Чтобы выполнять запросы с помощью бессерверного пула SQL, создайте источник данных, который бессерверный пул SQL может использовать для доступа к файлам в хранилище. Выполните следующий фрагмент кода, чтобы создать источник данных, используемый в примерах в этом разделе. Замените <strong-password-here> надежный пароль по вашему выбору.

-- create master key that will protect the credentials:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<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-файлов

На следующем рисунке показан предварительный просмотр файла для запроса:

Снимок экрана: первые 10 строк CSV-файла без заголовка, новая строка стиля Windows.

Следующий запрос показывает, как считать 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 г. без указания схемы.

Примечание.

При чтении файлов 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" с помощью бессерверного пула SQL.

Запрашивание 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_VALUE для получения скалярных значений (название, издатель) из книги с заголовком вероятностные и статистические методы в криптологии, введение:

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'

Внимание

Мы считываем весь JSON-файл как одну строку или столбец. Таким образом FIELDTERMINATOR, FIELDQUOTEи ROWTERMINATOR задано 0x0b значение, так как мы не ожидаем найти его в файле.