Bagikan melalui


Mulai Cepat: Menggunakan kumpulan SQL tanpa server

Kumpulan SQL tanpa server Synapse adalah layanan kueri tanpa server yang memungkinkan Anda menjalankan kueri SQL pada file yang ditempatkan di Azure Storage. Dalam mulai cepat ini, Anda mempelajari cara mengkueri berbagai jenis file menggunakan kumpulan SQL tanpa server. Untuk daftar format yang didukung, lihat OPENROWSET.

Mulai cepat ini memperlihatkan cara mengkueri file CSV, Apache Parquet, dan JSON.

Prasyarat

Pilih klien SQL untuk menerbitkan kueri:

Mulai cepat ini menggunakan parameter berikut:

Parameter Deskripsi
Alamat titik akhir layanan pool SQL tanpa server Digunakan sebagai nama server
Wilayah titik akhir layanan kumpulan SQL tanpa server Digunakan untuk menentukan penyimpanan apa yang akan digunakan 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).
  • Buat kredensial yang akan digunakan oleh kumpulan SQL tanpa server untuk mengakses file di penyimpanan.

Membuat database

Buat database Anda sendiri untuk keperluan demo. Anda bisa 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 untuk digunakan nanti di mulai cepat.

Gunakan perintah T-SQL 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 di penyimpanan. Jalankan cuplikan kode berikut untuk membuat sumber data yang digunakan dalam sampel di bagian ini. Ganti <strong-password-here> dengan kata sandi yang kuat pilihan Anda.

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

Kueri file CSV

Gambar berikut menunjukkan pratinjau file yang akan dikueri:

Cuplikan layar memperlihatkan 10 baris pertama file CSV tanpa header, baris baru gaya Windows.

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 selengkapnya, lihat cara Mengkueri 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 selengkapnya, lihat Kueri file Parquet menggunakan kumpulan SQL tanpa server.

Mengajukan kueri untuk file JSON

File sampel JSON

File disimpan dalam kontainer json, menggunakan buku folder, 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"
}

Kueri Sampel

Kueri berikut menunjukkan cara menggunakan JSON_VALUE untuk mengambil nilai skalar (judul, penerbit) dari buku dengan judul Metode Probabilistik dan Statistik dalam Kriptologi, Pengantar:

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'

Penting

Kami membaca seluruh file JSON sebagai satu baris atau kolom. Jadi FIELDTERMINATOR, FIELDQUOTE, dan ROWTERMINATOR diatur ke 0x0b karena kita tidak berharap untuk menemukannya dalam file.