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. Z tego przewodnika Szybki start dowiesz się, jak wykonywać zapytania dotyczące różnych typów plików przy użyciu bezserwerowej puli SQL. Aby uzyskać listę obsługiwanych formatów, zobacz OPENROWSET.
W tym przewodniku Szybki start pokazano, jak wykonywać zapytania dotyczące plików 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 Visual Studio Code z rozszerzeniem mssql to międzyplatformowe lekkie narzędzie deweloperskie i narzędzie do obsługi danych, które umożliwia uruchamianie zapytań SQL i notesów w bazie danych na żądanie.
- SQL Server Management Studio to narzędzie klienckie, które umożliwia uruchamianie zapytań SQL w bazie danych na żądanie.
W tym przewodniku Szybki start są używane następujące parametry:
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 magazynu do użycia 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).
- Utwórz poświadczenia do użycia przez bezserwerową pulę SQL w celu uzyskania dostępu do plików w magazynie.
Tworzenie bazy danych
Utwórz własną bazę danych do celów demonstracyjnych. Ta baza danych umożliwia tworzenie 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 do użycia w dalszej części przewodnika Szybki start.
Użyj następującego polecenia języka T-SQL, 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, za pomocą którego bezserwerowa pula SQL może uzyskiwać dostęp do plików w magazynie. Wykonaj poniższy fragment kodu, aby utworzyć źródło danych używane w przykładach w tej sekcji. Zastąp <strong-password-here>
ciąg wybranym silnym hasłem.
-- 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
);
Wykonywanie zapytań o pliki CSV
Na poniższej ilustracji przedstawiono podgląd pliku do odpytowania:
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 plików 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
Aby uzyskać więcej informacji, zobacz Query Parquet files using serverless SQL pool (Wykonywanie zapytań dotyczących plików Parquet przy użyciu bezserwerowej puli SQL).
Wykonywanie zapytań względem plików JSON
Przykładowy plik JSON
Pliki są przechowywane w kontenerze json, przy użyciu książek folderów i zawierają pojedynczy wpis książki z następującą strukturą:
{
"_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"
}
Przykładowe zapytanie
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):
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'
Ważne
Odczytujemy cały plik JSON jako pojedynczy wiersz lub kolumnę. Dlatego FIELDTERMINATOR
parametr , i ROWTERMINATOR
jest ustawiony na 0x0b
wartość , FIELDQUOTE
ponieważ nie spodziewamy się znalezienia go w pliku.
Powiązana zawartość
- Wykonywanie zapytań dotyczących plików CSV
- Wykonywanie zapytań względem folderów i wielu plików
- Wykonywanie zapytań o określone pliki
- Wykonywanie zapytań względem plików Parquet przy użyciu bezserwerowej puli SQL
- Zapytania zagnieżdżone typy w plikach Parquet i JSON
- Wykonywanie zapytań dotyczących plików JSON przy użyciu bezserwerowej puli SQL
- Tworzenie i używanie widoków przy użyciu bezserwerowej puli SQL
- Tworzenie i używanie natywnych tabel zewnętrznych
- Przechowywanie wyników zapytań w magazynie