Rövid útmutató: Kiszolgáló nélküli SQL-készlet használata

A Synapse kiszolgáló nélküli SQL-készlet egy kiszolgáló nélküli lekérdezési szolgáltatás, amely lehetővé teszi SQL-lekérdezések futtatását az Azure Storage-ban elhelyezett fájlokon. Ebben a rövid útmutatóban megtudhatja, hogyan kérdezhet le különböző típusú fájlokat kiszolgáló nélküli SQL-készlet használatával. A támogatott formátumok az OPENROW Standard kiadás T listában találhatók.

Ez a rövid útmutató a következő lekérdezéseket mutatja be: CSV-, Apache Parquet- és JSON-fájlok.

Előfeltételek

Válasszon ki egy SQL-ügyfelet a lekérdezések kibocsátásához:

  • Az Azure Synapse Studio egy webes eszköz, amellyel fájlokat tallózhat a tárban, és SQL-lekérdezéseket hozhat létre.
  • Az Azure Data Studio egy ügyféleszköz, amely lehetővé teszi, hogy SQL-lekérdezéseket és jegyzetfüzeteket futtasson az igény szerinti adatbázison.
  • Az SQL Server Management Studio egy ügyféleszköz, amely lehetővé teszi, hogy SQL-lekérdezéseket futtasson az igény szerinti adatbázison.

A rövid útmutató paraméterei:

Parameter Leírás
kiszolgáló nélküli SQL-készletszolgáltatás végpontcíme Kiszolgálónévként használva
kiszolgáló nélküli SQL-készletszolgáltatás végpontrégiója Annak meghatározására szolgál, hogy milyen tárolót használunk a mintákban
Felhasználónév és jelszó a végponthoz való hozzáféréshez Végpont elérésére szolgál
A nézetek létrehozásához használt adatbázis A minták kiindulópontjaként használt adatbázis

Első beállítás

A minták használata előtt:

  • Adatbázis létrehozása a nézetekhez (abban az esetben, ha nézeteket szeretne használni)
  • A kiszolgáló nélküli SQL-készlet által a tárban tárolt fájlok eléréséhez használandó hitelesítő adatok létrehozása

Adatbázis létrehozása

Saját adatbázis létrehozása bemutató célokra. Ezzel az adatbázissal hozhatja létre a nézeteit és a cikkben szereplő mintalekérdezéseket.

Megjegyzés:

Az adatbázisok csak a metaadatok megtekintésére szolgálnak, a tényleges adatokhoz nem. Írja le a rövid útmutató későbbi részében használt adatbázisnevet.

Használja a következő lekérdezést, és váltson mydbname egy tetszőleges névre:

CREATE DATABASE mydbname

Adatforrás létrehozása

Ha kiszolgáló nélküli SQL-készlet használatával szeretne lekérdezéseket futtatni, hozzon létre olyan adatforrást, amelyet a kiszolgáló nélküli SQL-készlet használhat a tárolóban lévő fájlok eléréséhez. Hajtsa végre a következő kódrészletet az ebben a szakaszban található mintákban használt adatforrás létrehozásához:

-- 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-fájlok lekérdezése

A következő kép a lekérdezendő fájl előnézete:

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

Az alábbi lekérdezés bemutatja, hogyan olvasható be egy olyan CSV-fájl, amely nem tartalmaz fejlécsort, Windows-stílusú új sorokkal és vesszővel tagolt oszlopokkal:

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

A sémát a lekérdezés fordítási ideje alatt adhatja meg. További példákért tekintse meg a CSV-fájl lekérdezését.

Parquet-fájlok lekérdezése

Az alábbi minta a Parquet-fájlok lekérdezéséhez használható automatikus sémakövető képességeket mutatja be. A 2017. szeptemberi sorok számát adja vissza séma megadása nélkül.

Megjegyzés:

Parquet-fájlok olvasásakor nem kell oszlopokat megadnia a záradékban OPENROWSET WITH . Ebben az esetben a kiszolgáló nélküli SQL-készlet metaadatokat használ a Parquet-fájlban, és név szerint köti össze az oszlopokat.

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

További információ a parquet-fájlok lekérdezéséről.

JSON-fájlok lekérdezése

JSON-mintafájl

A fájlok json-tárolóban, mappakönyvekben vannak tárolva, és egyetlen könyvbejegyzést tartalmaznak a következő struktúrával:

{  
   "_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-fájlok lekérdezése

Az alábbi lekérdezés bemutatja, hogyan használható JSON_VALUE skaláris értékek (cím, kiadó) lekérésére egy olyan könyvből, amelynek címe Probabilistic and Statistical Methods in Cryptology, An Introduction by Selected articles:

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'

Fontos

A teljes JSON-fájlt egyetlen sor/oszlopként olvasjuk. A FIELDTERMINATOR, a FIELDQUOTE és a ROWTERMINATOR értéke tehát 0x0b, mert nem számítunk rá, hogy megtalálja a fájlban.

Következő lépések

Most már készen áll a következő cikkek folytatására: