Szybki start: Używanie puli SQL bez użycia serwera

Bezserwerowa pula SQL usługi Synapse to bezserwerowa usługa zapytań, która umożliwia uruchamianie zapytań SQL dotyczących plików umieszczonych w usłudze Azure Storage. W tym przewodniku Szybki start dowiesz się, jak wykonywać zapytania dotyczące różnych typów plików przy użyciu bezserwerowej puli SQL. Obsługiwane formaty są wyświetlane w pliku OPENROWSET.

Ten przewodnik Szybki start przedstawia wykonywanie zapytań: pliki CSV, Apache Parquet i JSON.

Wymagania wstępne

Wybierz klienta SQL na potrzeby wykonywania zapytań:

  • Azure Synapse Studio to narzędzie internetowe, za pomocą którego można przeglądać pliki w magazynie i tworzyć zapytania SQL.
  • Program Azure Data Studio to narzędzie klienckie, które umożliwia uruchamianie zapytań SQL i notesów w ramach bazy danych usługi na żądanie.
  • Program SQL Server Management Studio to narzędzie klienckie, które umożliwia uruchamianie zapytań SQL w ramach bazy danych usługi na żądanie.

Parametry dla tego przewodnika Szybki start:

Parametr Opis
adres punktu końcowego usługi bezserwerowej puli SQL Używana jako nazwa serwera
bezserwerowy region punktu końcowego usługi puli SQL Służy do określania, jakiego magazynu będziemy używać w przykładach
Nazwa użytkownika i hasło dostępu do punktu końcowego Służy do uzyskiwania dostępu do punktu końcowego
Baza danych używana do tworzenia widoków Baza danych używana jako punkt początkowy w przykładach

Konfiguracja po raz pierwszy

Przed użyciem przykładów:

  • Utwórz bazę danych dla widoków (w przypadku, gdy chcesz użyć widoków)
  • Tworzenie poświadczeń używanych przez bezserwerową pulę SQL w celu uzyskiwania dostępu do plików w magazynie

Tworzenie bazy danych

Utwórz własną bazę danych do celów demonstracyjnych. Ta baza danych służy do tworzenia widoków i przykładowych zapytań w tym artykule.

Uwaga

Bazy danych są używane tylko do wyświetlania metadanych, a nie dla rzeczywistych danych. Zapisz nazwę bazy danych używaną do użycia w dalszej części przewodnika Szybki start.

Użyj następującego zapytania, zmieniając mydbname na wybraną nazwę:

CREATE DATABASE mydbname

Tworzenie źródła danych

Aby uruchamiać zapytania przy użyciu bezserwerowej puli SQL, utwórz źródło danych, którego bezserwerowa pula SQL może używać do uzyskiwania dostępu do plików w magazynie. Wykonaj następujący fragment kodu, aby utworzyć źródło danych używane w przykładach w tej sekcji:

-- 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
);

Wykonywanie zapytań o pliki CSV

Na poniższej ilustracji przedstawiono podgląd pliku do odpytowania:

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

Poniższe zapytanie pokazuje, jak odczytać plik CSV, który nie zawiera wiersza nagłówka, z nowym wierszem w stylu systemu Windows i kolumnami rozdzielanymi przecinkami:

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

Schemat można określić w czasie kompilacji zapytania. Aby uzyskać więcej przykładów, zobacz jak wykonywać zapytania dotyczące pliku CSV.

Wykonywanie zapytań względem plików Parquet

Poniższy przykład przedstawia możliwości automatycznego wnioskowania schematu na potrzeby wykonywania zapytań dotyczących plików Parquet. Zwraca liczbę wierszy we wrześniu 2017 r. bez określania schematu.

Uwaga

Podczas odczytywania plików Parquet nie trzeba określać kolumn w OPENROWSET WITH klauzuli . W takim przypadku bezserwerowa pula SQL korzysta z metadanych w pliku Parquet i wiąże kolumny według nazwy.

SELECT COUNT_BIG(*)
FROM OPENROWSET
  (
      BULK 'parquet/taxi/year=2017/month=9/*.parquet',
      DATA_SOURCE = 'SqlOnDemandDemo',
      FORMAT='PARQUET'
  ) AS nyc

Dowiedz się więcej na temat wykonywania zapytań dotyczących plików parquet.

Wykonywanie zapytań względem plików JSON

Przykładowy plik JSON

Pliki są przechowywane w kontenerze json, książkach folderów i zawierają pojedynczy wpis książki o następującej strukturze:

{  
   "_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"
}

Wykonywanie zapytań względem plików JSON

Poniższe zapytanie pokazuje, jak używać JSON_VALUE do pobierania wartości skalarnych (tytuł, wydawca) z książki z tytułem Probabilistic and Statistical Methods in Cryptology ( Wprowadzenie według wybranych artykułów):

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'

Ważne

Odczytujemy cały plik JSON jako pojedynczy wiersz/kolumnę. W związku z tym właściwość FIELDTERMINATOR, FIELDQUOTE i ROWTERMINATOR jest ustawiona na 0x0b, ponieważ nie spodziewamy się jej znalezienia w pliku.

Następne kroki

Teraz możesz kontynuować pracę z następującymi artykułami: