Mulai Cepat: Menggunakan kumpulan SQL tanpa server

Kumpullan synapse serverless SQL adalah layanan kueri nirserver yang memungkinkan Anda menjalankan kueri SQL pada file yang ditempatkan di Azure Storage. Dalam panduan mulai cepat ini, Anda akan mempelajari cara membuat kueri untuk berbagai jenis file dengan menggunakan kumpulan SQL nirserver. Format yang didukung tercantum dalam OPENROWSET.

Panduan mulai cepat ini menampilkan kueri: file CSV, Apache Parket, dan JSON.

Prasyarat

Pilih klien SQL untuk menerbitkan kueri:

  • Azure Synapse Studio adalah alat web yang dapat Anda gunakan untuk menelusuri file di penyimpanan dan membuat kueri SQL.
  • Azure Data Studio adalah alat klien yang memungkinkan Anda menjalankan kueri dan buku catatan SQL di database Sesuai permintaan Anda.
  • SQL Server Management Studio adalah alat klien yang memungkinkan Anda menjalankan kueri SQL di database Sesuai Permintaan Anda.

Parameter untuk panduan mulai cepat ini:

Parameter Deskripsi
alamat titik akhir layanan kumpulan SQL nirserver Digunakan sebagai nama server
wilayah titik akhir layanan kumpulan SQL nirserver Digunakan untuk menentukan penyimpanan apa yang akan kita gunakan dalam sampel
Nama pengguna dan kata sandi untuk akses titik akhir Digunakan untuk mengakses titik akhir
Database yang digunakan untuk membuat tampilan Database yang digunakan sebagai titik awal dalam sampel

Pengaturan pertama kali

Sebelum menggunakan sampel:

  • Buat database untuk tampilan Anda (jika Anda ingin menggunakan tampilan)
  • Membuat info masuk yang akan digunakan oleh kumpulan SQL nirserver untuk mengakses file dalam penyimpanan

Membuat database

Buat database Anda sendiri untuk keperluan demo. Anda akan menggunakan database ini untuk membuat tampilan Anda dan untuk kueri sampel dalam artikel ini.

Catatan

Database hanya digunakan untuk melihat metadata, bukan data aktual. Tuliskan nama database yang akan digunakan nanti di Panduan Mulai Cepat.

Gunakan kueri berikut, mengubah mydbname menjadi nama pilihan Anda:

CREATE DATABASE mydbname

Buatlah sumber data

Untuk menjalankan kueri menggunakan kumpulan SQL tanpa server, buat sumber data yang dapat digunakan kumpulan SQL tanpa server untuk mengakses file dalam penyimpanan. Jalankan cuplikan kode berikut untuk membuat sumber data yang digunakan dalam sampel di bagian ini:

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

Kueri file CSV

Gambar berikut adalah pratinjau dari file yang akan diproses dengan kueri:

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

Kueri berikut menunjukkan cara membaca file CSV yang tidak berisi baris header, dengan baris baru bergaya Windows, dan kolom yang dipisahkan koma:

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

Anda dapat menyebuatkan skema pada waktu kompilasi kueri. Untuk contoh lainnya, lihat cara mengajukan kueri untuk file CSV.

Kueri file Parquet

Contoh berikut menunjukkan kemampuan inferensi skema otomatis dalam mengajukan kueri untuk file Parket. Ini mengembalikan jumlah baris pada bulan September 2017 tanpa menentukan skema.

Catatan

Anda tidak perlu menentukan kolom dalam OPENROWSET WITH klausa saat membaca file Parquet. Dalam hal ini, kumpulan SQL nirserver menggunakan metadata dalam file Parket dan mengikat kolom berdasarkan nama.

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

Temukan informasi lebih lanjut tentang mengajukan kueri untuk file parket.

Mengajukan kueri untuk file JSON

File sampel JSON

File disimpan dalam kontainer json, folder buku, dan berisi entri buku tunggal dengan struktur berikut:

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

Mengajukan kueri untuk file JSON

Kueri berikut menunjukkan cara menggunakan JSON_VALUE untuk mengambil nilai skalar (judul, penerbit) dari buku dengan judul 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'

Penting

Kita membaca seluruh file JSON sebagai baris/kolom tunggal. Jadi, FIELDTERMINATOR, FIELDQUOTE, dan ROWTERMINATOR disetel ke 0x0b karena kita tidak berharap bisa menemukannya di dalam file.

Langkah berikutnya

Anda sekarang siap untuk melanjutkan dengan artikel berikut: