Menggunakan tabel eksternal dengan Synapse SQL

Tabel eksternal mengarah ke data yang terletak di Hadoop, blob Azure Storage, atau Azure Data Lake Storage. Tabel eksternal digunakan untuk membaca data dari file atau menulis data ke file di Azure Storage. Dengan Synapse SQL, Anda dapat menggunakan tabel eksternal untuk membaca data eksternal menggunakan kumpulan SQL khusus atau kumpulan SQL tanpa server.

Bergantung pada jenis sumber data eksternalnya, Anda dapat menggunakan dua jenis tabel eksternal:

  • Tabel eksternal Hadoop yang dapat Anda gunakan untuk membaca dan mengekspor data dalam berbagai format seperti CSV, Parquet, dan ORC. Tabel eksternal Hadoop tersedia di kumpulan SQL khusus, tetapi tidak tersedia di kumpulan SQL tanpa server.
  • Tabel eksternal asli yang dapat Anda gunakan untuk membaca dan mengekspor data dalam berbagai format seperti CSV dan Parquet. Tabel eksternal asli tersedia di kumpulan SQL tanpa server. Saat ini, tabel tersebut sedang dalam pratinjau publik di kumpulan SQL khusus.

Perbedaan utama antara Hadoop dan tabel eksternal asli ditunjukkan di tabel berikut:

Jenis tabel eksternal Hadoop Asli
Kumpulan SQL khusus Tersedia Hanya tabel Parquet yang tersedia dalam pratinjau publik.
Kumpulan SQL tanpa server Tidak tersedia Tersedia
Format yang didukung Dibatasi/CSV, Parquet, ORC, Hive RC, dan RC Kumpulan SQL tanpa server: Dibatasi/CSV, Parquet, dan Delta Lake
Kumpulan SQL khusus: Parquet (pratinjau)
Penghapusan partisi folder Tidak Penghapusan partisi hanya tersedia dalam tabel yang dipartisi yang dibuat pada format Parquet atau CSV yang disinkronkan dari kumpulan Apache Spark. Anda mungkin membuat tabel eksternal pada folder yang dipartisi Parquet, tetapi kolom partisi tidak akan dapat diakses dan diabaikan, sementara penghapusan partisi tidak akan diterapkan. Jangan membuat tabel eksternal pada folder Delta Lake karena tidak didukung. Gunakan tampilan yang dipartisi Delta jika Anda perlu mengkueri data Delta Lake yang dipartisi.
Penghapusan file (pushdown predikat) Tidak Ya, di kumpulan SQL tanpa server. Untuk pushdown string, Anda perlu menggunakan kolase Latin1_General_100_BIN2_UTF8 pada kolom VARCHAR untuk mengaktifkan pushdown.
Format kustom untuk lokasi Tidak Ya, gunakan wildcard seperti /year=*/month=*/day=* untuk format Parquet atau CSV. Jalur folder kustom tidak tersedia di Delta Lake. Di kumpulan SQL tanpa server, Anda juga dapat menggunakan wildcard rekursif /logs/** untuk mereferensikan file Parquet atau CSV di subfolder apa pun di bawah folder yang direferensikan.
Pemindaian folder rekursif Ya Ya. Di kumpulan SQL tanpa server harus ditentukan /** di akhir jalur lokasi. Di kumpulan Khusus, folder selalu dipindai secara rekursif.
Autentikasi penyimpanan Kunci Akses Penyimpanan (SAK), Passthrough AAD, Identitas terkelola, Aplikasi kustom, Identitas Microsoft Azure AD Tanda Tangan Akses Bersama(SAS), passthrough AAD, Identitas terkelola, Identitas Azure AD aplikasi kustom.
Pemetaan kolom Ordinal - kolom dalam definisi tabel eksternal dipetakan ke kolom dalam file Parquet yang mendasarinya berdasarkan posisi. Kumpulan tanpa server: berdasarkan nama. Kolom dalam definisi tabel eksternal dipetakan ke kolom dalam file Parquet yang mendasarinya berdasarkan pencocokan nama kolom.
Kumpulan khusus: pencocokan ordinal. Kolom dalam definisi tabel eksternal dipetakan ke kolom dalam file Parquet yang mendasarinya berdasarkan posisi.

Catatan

Tabel eksternal asli adalah solusi yang direkomendasikan di kumpulan yang umumnya tersedia. Jika Anda perlu mengakses data eksternal, selalu gunakan tabel asli di kumpulan tanpa server. Di kumpulan khusus, Anda harus beralih ke tabel asli untuk membaca file Parquet setelah berada di GA. Gunakan tabel Hadoop hanya jika Anda perlu mengakses beberapa jenis yang tidak didukung dalam tabel eksternal asli (misalnya - ORC, RC), atau jika versi asli tidak tersedia.

Tabel eksternal dalam kumpulan SQL khusus dan kumpulan SQL tanpa server

Anda dapat menggunakan tabel eksternal untuk:

  • Mengkueri ke Blob Azure Storage dan Azure Data Lake Gen2 dengan pernyataan T-SQL.
  • Simpan hasil kueri ke file di Azure Blob Storage atau Azure Data Lake Storage dengan menggunakan CETAS.
  • Mengimpor data dari Blob Azure Storage dan Azure Data Lake Storage dan menyimpannya di kumpulan SQL khusus (hanya tabel Hadoop di kumpulan khusus).

Catatan

Saat digunakan bersama pernyataan CREATE TABLE AS SELECT, data akan diimpor ke tabel dalam kumpulan SQL khusus jika Anda memilih dari tabel eksternal.

Jika performa tabel eksternal Hadoop di kumpulan khusus tidak memenuhi sasaran performa Anda, pertimbangkan untuk memuat data eksternal ke dalam tabel Datawarehouse menggunakan pernyataan COPY.

Untuk tutorial pemuatan, lihat Menggunakan PolyBase untuk memuat data dari Blob Azure Storage.

Anda dapat membuat tabel eksternal di kumpulan Synapse SQL melalui langkah-langkah berikut:

  1. CREATE EXTERNAL DATA SOURCE untuk mereferensikan penyimpanan Azure eksternal dan menentukan info masuk yang akan digunakan untuk mengakses penyimpanan.
  2. CREATE EXTERNAL FILE FORMAT untuk mendeskripsikan format file CSV atau Parquet.
  3. CREATE EXTERNAL TABLE di atas file yang ditempatkan di sumber data dengan format file yang sama.

Penghapusan partisi folder

Tabel eksternal asli di kumpulan Synapse dapat mengabaikan file yang ditempatkan di folder yang tidak relevan untuk kueri. Jika file Anda disimpan dalam hierarki folder (misalnya - /year=2020/month=03/day=16) dan nilai untuk tahun, bulan, dan hari diekspos sebagai kolom, kueri yang berisi filter seperti year=2020 akan membaca file hanya dari subfolder yang ditempatkan dalam folder year=2020. File dan folder yang ditempatkan di folder lain (year=2021 atau year=2022) akan diabaikan dalam kueri ini. Eliminasi ini dikenal sebagai eliminasi partisi.

Penghapusan partisi folder tersedia di tabel eksternal asli yang disinkronkan dari kumpulan Synapse Spark. Jika Anda memiliki kumpulan data yang dipartisi dan ingin memanfaatkan penghapusan partisi dengan tabel eksternal yang Anda buat, gunakan tampilan yang dipartisi bukan tabel eksternal.

Penghapusan file

Beberapa format data seperti Parquet dan Delta berisi statistik file untuk setiap kolom (misalnya, nilai min/maks untuk setiap kolom). Kueri yang memfilter data tidak akan membaca file di mana nilai kolom yang diperlukan tidak ada. Kueri pertama-tama akan menjelajahi nilai min/maks untuk kolom yang digunakan dalam predikat kueri untuk menemukan file yang tidak berisi data yang diperlukan. File-file ini akan diabaikan dan dihapus dari rencana kueri. Teknik ini juga dikenal sebagai filter predikat pushdown dan dapat meningkatkan performa kueri Anda. Filter pushdown tersedia di kumpulan SQL tanpa server pada format Parquet dan Delta. Untuk memanfaatkan filter pushdown untuk jenis string, gunakan jenis VARCHAR dengan kolase Latin1_General_100_BIN2_UTF8.

Keamanan

Pengguna harus memiliki izin SELECT pada tabel eksternal untuk membaca data. Tabel eksternal mengakses penyimpanan Azure yang mendasarinya menggunakan info masuk lingkup database yang ditentukan dalam sumber data menggunakan aturan berikut:

  • Sumber data tanpa info masuk memungkinkan tabel eksternal mengakses file yang tersedia untuk umum di penyimpanan Azure.
  • Sumber data dapat memiliki info masuk yang memungkinkan tabel eksternal hanya mengakses file di penyimpanan Azure menggunakan Identitas Terkelola ruang kerja atau token SAS. Misalnya, lihat artikel Mengembangkan file penyimpanan untuk mengontrol akses penyimpanan.

CREATE EXTERNAL DATA SOURCE

Sumber data eksternal digunakan untuk menyambungkan ke akun penyimpanan. Dokumentasi lengkap diuraikan di sini.

Sintaks untuk CREATE EXTERNAL DATA SOURCE

Sumber data eksternal dengan TYPE=HADOOP hanya tersedia di kumpulan SQL khusus.

CREATE EXTERNAL DATA SOURCE <data_source_name>
WITH
(    LOCATION         = '<prefix>://<path>'
     [, CREDENTIAL = <database scoped credential> ]
     , TYPE = HADOOP
)
[;]

Argumen untuk CREATE EXTERNAL DATA SOURCE

data_source_name

Menentukan nama yang ditentukan pengguna untuk sumber data. Nama dalam database harus unik.

Lokasi

LOCATION = '<prefix>://<path>' - Menyediakan protokol konektivitas dan jalur ke sumber data eksternal. Pola berikut dapat digunakan di lokasi:

Sumber Data Eksternal Awalan lokasi Jalur lokasi
Azure Blob Storage wasb[s] <container>@<storage_account>.blob.core.windows.net
Azure Blob Storage http[s] <storage_account>.blob.core.windows.net/<container>/subfolders
Azure Data Lake Store Gen 1 http[s] <storage_account>.azuredatalakestore.net/webhdfs/v1
Azure Data Lake Store Gen 2 http[s] <storage_account>.dfs.core.windows.net/<container>/subfolders

Awalan https: memungkinkan Anda menggunakan subfolder di jalur tersebut.

Kredensial

CREDENTIAL = <database scoped credential> adalah kredensial opsional yang akan digunakan untuk mengautentikasi penyimpanan Azure. Sumber data eksternal tanpa kredensial dapat mengakses akun penyimpanan publik atau menggunakan identitas Microsoft Azure AD pemanggil untuk mengakses file di penyimpanan.

  • Dalam kumpulan SQL khusus, info masuk lingkup database dapat menentukan identitas aplikasi kustom, Identitas Terkelola ruang kerja, atau kunci SAS.
  • Dalam kumpulan SQL tanpa server, info masuk lingkup database dapat menentukan Identitas Terkelola ruang kerja, atau kunci SAS.

JENIS

TYPE = HADOOP adalah opsi yang menentukan bahwa teknologi berbasis Java harus digunakan untuk mengakses file yang mendasarinya. Parameter ini tidak dapat digunakan dalam kumpulan SQL tanpa server yang menggunakan pembaca asli bawaan.

Contoh untuk CREATE EXTERNAL DATA SOURCE

Berikut contoh membuat sumber data eksternal Hadoop di kumpulan SQL khusus untuk Azure Data Lake Gen2 yang mengarah ke himpunan data New York:

CREATE DATABASE SCOPED CREDENTIAL [ADLS_credential]
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 AzureDataLakeStore
WITH
  -- Please note the abfss endpoint when your account has secure transfer enabled
  ( LOCATION = 'abfss://data@newyorktaxidataset.dfs.core.windows.net' ,
    CREDENTIAL = ADLS_credential ,
    TYPE = HADOOP
  ) ;

Berikut contoh membuat sumber data eksternal untuk Azure Data Lake Gen2 yang mengarah ke himpunan data New York yang tersedia untuk umum:

CREATE EXTERNAL DATA SOURCE YellowTaxi
WITH ( LOCATION = 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/',
       TYPE = HADOOP)

CREATE EXTERNAL FILE FORMAT

Buat objek format file eksternal yang menentukan data eksternal yang disimpan di Azure Blob Storage atau Azure Data Lake Storage. Membuat format file eksternal adalah prasyarat untuk membuat tabel eksternal. Dokumentasi lengkapnya ada di sini.

Dengan membuat format file eksternal, Anda menentukan tata letak aktual data yang direferensikan oleh tabel eksternal.

Sintaks untuk CREATE EXTERNAL FILE FORMAT

-- Create an external file format for PARQUET files.  
CREATE EXTERNAL FILE FORMAT file_format_name  
WITH (  
    FORMAT_TYPE = PARQUET  
    [ , DATA_COMPRESSION = {  
        'org.apache.hadoop.io.compress.SnappyCodec'  
      | 'org.apache.hadoop.io.compress.GzipCodec'      }  
    ]);  

--Create an external file format for DELIMITED TEXT files
CREATE EXTERNAL FILE FORMAT file_format_name  
WITH (  
    FORMAT_TYPE = DELIMITEDTEXT  
    [ , DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec' ]
    [ , FORMAT_OPTIONS ( <format_options> [ ,...n  ] ) ]  
    );  

<format_options> ::=  
{  
    FIELD_TERMINATOR = field_terminator  
    | STRING_DELIMITER = string_delimiter
    | FIRST_ROW = integer
    | USE_TYPE_DEFAULT = { TRUE | FALSE }
    | ENCODING = {'UTF8' | 'UTF16'}
    | PARSER_VERSION = {'parser_version'}
}

Argumen untuk CREATE EXTERNAL FILE FORMAT

file_format_name- Menentukan nama untuk format file eksternal.

FORMAT_TYPE = [ PARQUET | DELIMITEDTEXT]- Menentukan format data eksternal.

  • PARQUET - Menentukan format Parquet.
  • DELIMITEDTEXT - Menentukan format teks dengan pemisah kolom, juga disebut pemisah bidang.

FIELD_TERMINATOR = field_terminator - Hanya berlaku untuk file teks yang dibatasi. Pemisah bidang menentukan satu atau beberapa karakter yang menandai akhir setiap bidang (kolom) dalam file yang dibatasi teks. Defaultnya adalah karakter pipa (ꞌ|ꞌ).

Contoh:

  • FIELD_TERMINATOR = '|'
  • FIELD_TERMINATOR = ' '
  • FIELD_TERMINATOR = ꞌ\tꞌ

STRING_DELIMITER = string_delimiter - Menentukan pemisah bidang untuk data string jenis dalam file yang dibatasi teks. Pemisah string memiliki panjang satu atau beberapa karakter dan diapit oleh kuotasi tunggal. Defaultnya adalah string kosong ("").

Contoh:

  • STRING_DELIMITER = '"'
  • STRING_DELIMITER = '*'
  • STRING_DELIMITER = ꞌ,ꞌ

FIRST_ROW = First_row_int - Menentukan nomor baris yang dibaca terlebih dahulu dan berlaku untuk semua file. Jika nilai diatur ke dua, baris pertama di setiap file (baris header) akan dilewati saat data dimuat. Baris dilewati berdasarkan keberadaan pemisah baris (/r/n, /r, /n).

USE_TYPE_DEFAULT = { TRUE | FALSE } - Menentukan cara menangani nilai yang hilang dalam file teks yang dibatasi saat mengambil data dari file teks.

Catatan

Harap dicatat bahwa USE_TYPE_DEFAULT=true tidak didukung untuk FORMAT_TYPE = DELIMITEDTEXT, PARSER_VERSION = '2.0'.

TRUE - Jika Anda mengambil data dari file teks, simpan setiap nilai yang hilang dengan menggunakan jenis data nilai default untuk kolom yang sesuai dalam definisi tabel eksternal. Misalnya, ganti nilai yang hilang dengan:

  • 0 jika kolom didefinisikan sebagai kolom numerik. Kolom desimal tidak didukung dan akan menyebabkan kesalahan.
  • String kosong ("") jika kolom berupa kolom string.
  • 1900-01-01 jika kolom adalah kolom tanggal.

FALSE - Simpan semua nilai yang hilang sebagai NULL. Nilai NULL apa pun yang disimpan dengan menggunakan kata NULL dalam file teks yang dibatasi akan diimpor sebagai string 'NULL'.

Pengodean = {'UTF8' | 'UTF16'} - Kumpulan SQL tanpa server dapat membaca file teks yang dibatasi berenkode UTF8 dan UTF16.

DATA_COMPRESSION = data_compression_method - Argumen ini menentukan metode kompresi data untuk data eksternal.

Jenis format file PARQUET mendukung metode pemadatan berikut:

  • DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec'
  • DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'

Saat membaca dari tabel eksternal PARQUET, argumen ini diabaikan, tetapi digunakan saat menulis ke tabel eksternal menggunakan CETAS.

Jenis format file DELIMITEDTEXT mendukung metode pemadatan berikut:

  • DATA_COMPRESSION = 'org.apache.hadoop.io.compress.GzipCodec'

PARSER_VERSION = 'parser_version' Menentukan versi parser yang akan digunakan saat membaca file CSV. Versi parser yang tersedia adalah 1.0 dan 2.0. Opsi ini hanya tersedia di kumpulan SQL tanpa server.

Contoh untuk CREATE EXTERNAL FILE FORMAT

Berikut contoh membuat format file eksternal untuk file sensus:

CREATE EXTERNAL FILE FORMAT census_file_format
WITH
(  
    FORMAT_TYPE = PARQUET,
    DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
)

CREATE EXTERNAL TABLE

Perintah CREATE EXTERNAL TABLE membuat tabel eksternal untuk Synapse SQL untuk mengakses data yang disimpan di Azure Blob Storage atau Azure Data Lake Storage.

Sintaks untuk CREATE EXTERNAL TABLE

CREATE EXTERNAL TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
    ( <column_definition> [ ,...n ] )  
    WITH (
        LOCATION = 'folder_or_filepath',  
        DATA_SOURCE = external_data_source_name,  
        FILE_FORMAT = external_file_format_name
        [, TABLE_OPTIONS = N'{"READ_OPTIONS":["ALLOW_INCONSISTENT_READS"]}' ]
        [, <reject_options> [ ,...n ] ] 
    )
[;] 

<column_definition> ::=
column_name <data_type>
    [ COLLATE collation_name ]

<reject_options> ::=  
{  
    | REJECT_TYPE = value,  
    | REJECT_VALUE = reject_value,  
    | REJECT_SAMPLE_VALUE = reject_sample_value,
    | REJECTED_ROW_LOCATION = '/REJECT_Directory'
}   

Argumen CREATE EXTERNAL TABLE

{ database_name.schema_name.table_name | schema_name.table_name | table_name }

Nama tabel satu hingga tiga bagian untuk dibuat. Untuk tabel eksternal, kumpulan Synapse SQL hanya menyimpan metadata tabel. Tidak ada data aktual yang dipindahkan atau disimpan dalam database Synapse SQL.

<column_definition>, ...n ]

CREATE EXTERNAL TABLE mendukung kemampuan untuk mengonfigurasi nama kolom, jenis data, dan kolase. Anda tidak bisa menggunakan DEFAULT CONSTRAINT pada tabel eksternal.

Penting

Definisi kolom, termasuk jenis data dan jumlah kolom, harus cocok dengan data dalam file eksternal. Jika ada ketidakcocokan, baris file akan ditolak saat mengkueri data aktual. Lihat opsi penolakan untuk mengontrol perilaku baris yang ditolak.

Saat membaca dari file Parquet, Anda hanya dapat menentukan kolom yang ingin Anda baca dan melewati sisanya.

LOCATION = 'folder_or_filepath'

Menentukan folder atau jalur file dan nama file untuk data aktual di Blob Azure Storage. Lokasi dimulai dari folder akar. Folder akar adalah lokasi data yang ditentukan di sumber data eksternal.

Data rekursif untuk tabel eksternal

Tidak seperti tabel eksternal Hadoop, tabel eksternal asli tidak menampilkan subfolder kecuali Anda menentukan /** di akhir jalur. Dalam contoh ini, jika LOCATION='/webdata/', yang merupakan kueri kumpulan SQL tanpa server, akan menampilkan baris dari mydata.txt. mydata2.txt dan mydata3.txt tidak akan ditampilkan karena keduanya terletak di subfolder. Tabel Hadoop akan menampilkan semua file dalam subfolder apa pun.

Hadoop dan tabel eksternal asli akan melewati file dengan nama yang dimulai dengan garis bawah (_) atau titik (.).

DATA_SOURCE = external_data_source_name

Menentukan nama sumber data eksternal yang berisi lokasi data eksternal. Untuk membuat sumber data eksternal, gunakan CREATE EXTERNAL DATA SOURCE.

FILE_FORMAT = external_file_format_name

Menentukan nama objek format file eksternal yang menyimpan jenis file dan metode kompresi untuk data eksternal. Untuk membuat format file eksternal, gunakan CREATE EXTERNAL FILE FORMAT.

Opsi Penolakan

Catatan

Fitur penolakan baris berada dalam Pratinjau Umum. Harap perhatikan bahwa fitur penolakan baris berfungsi untuk file teks yang dibatasi dan PARSER_VERSION 1.0.

Anda dapat menentukan parameter penolakan yang menentukan bagaimana layanan akan menangani baris kotor yang diambilnya dari sumber data eksternal. Baris data dianggap 'kotor' jika jenis data aktual tidak sesuai dengan definisi kolom tabel eksternal.

Jika Anda tidak menentukan atau mengubah opsi penolakan, layanan akan menggunakan nilai default. Informasi tentang parameter penolakan ini disimpan sebagai metadata tambahan saat Anda membuat tabel eksternal dengan pernyataan CREATE EXTERNAL TABLE. Ketika pernyataan SELECT atau SELECT INTO SELECT mendatang memilih data dari tabel eksternal, layanan akan menggunakan opsi penolakan untuk menentukan jumlah baris yang dapat ditolak sebelum kueri aktual gagal. Kueri akan mengembalikan hasil (parsial) sampai ambang penolakan terlampaui. Kueri kemudian gagal dengan pesan kesalahan yang sesuai.

REJECT_TYPE = nilai

Ini adalah satu-satunya nilai yang didukung saat ini. Menjelaskan bahwa opsi REJECT_VALUE ditentukan sebagai nilai literal.

nilai

REJECT_VALUE adalah nilai literal. Kueri akan gagal ketika jumlah baris yang ditolak melebihi reject_value.

Misalnya, jika REJECT_VALUE = 5 dan REJECT_TYPE = nilai, kueri SELECT akan gagal setelah lima baris ditolak.

REJECT_VALUE = reject_value

Menentukan jumlah baris yang dapat ditolak sebelum kueri gagal.

Untuk REJECT_TYPE = nilai, reject_value harus berupa bilangan bulat antara 0 dan 2.147.483.647.

REJECTED_ROW_LOCATION = Lokasi Direktori

Menentukan direktori dalam Sumber Data Eksternal bahwa baris yang ditolak dan file kesalahan yang sesuai harus ditulis. Jika jalur yang ditentukan tidak ada, layanan akan membuatnya atas nama Anda. Direktori turunan dibuat dengan nama "rejectedrows". Karakter " " memastikan bahwa direktori di-escape untuk pemrosesan data lain kecuali dinamai secara eksplisit dalam parameter lokasi. Di dalam direktori ini, ada folder yang dibuat berdasarkan waktu pengiriman muatan dalam format YearMonthDay_HourMinuteSecond_StatementID (Mis. 20180330-173205-559EE7D2-196D-400A-806D-3BF5D007F891). Anda dapat menggunakan id pernyataan untuk menghubungkan folder dengan kueri yang menghasilkannya. Dalam folder ini, dua file ditulis: file error.json dan file data.

File error.json berisi array json dengan kesalahan yang dialami terkait baris yang ditolak. Setiap elemen yang menunjukkan kesalahan berisi atribut berikut:

Atribut Deskripsi
Kesalahan Alasan mengapa baris ditolak.
Baris Nomor ordinal baris yang ditolak dalam file.
Kolom Nomor ordinal kolom yang ditolak.
Nilai Nilai kolom yang ditolak. Jika nilainya lebih besar dari 100 karakter, hanya 100 karakter pertama yang akan ditampilkan.
File Jalur ke file tempat baris berada.

TABLE_OPTIONS

TABLE_OPTIONS = opsi json - Menentukan kumpulan opsi yang menjelaskan cara membaca file dasar. Saat ini, satu-satunya opsi yang tersedia adalah "READ_OPTIONS":["ALLOW_INCONSISTENT_READS"], yang menginstruksikan tabel eksternal untuk mengabaikan pembaruan yang dibuat pada file dasar, bahkan jika ini dapat menyebabkan beberapa operasi baca yang tidak konsisten. Gunakan opsi ini hanya dalam kasus khusus, yakni saat Anda sering menambahkan file. Opsi ini tersedia di kumpulan SQL tanpa server untuk format CSV.

Izin CREATE EXTERNAL FILE FORMAT

Untuk memilih dari tabel eksternal, Anda memerlukan info masuk yang tepat dengan izin baca dan daftar.

Contoh CREATE EXTERNAL TABLE

Berikut contoh membuat tabel eksternal. Ini menampilkan baris pertama:

CREATE EXTERNAL TABLE census_external_table
(
    decennialTime varchar(20),
    stateName varchar(100),
    countyName varchar(100),
    population int,
    race varchar(50),
    sex    varchar(10),
    minAge int,
    maxAge int
)  
WITH (
    LOCATION = '/parquet/',
    DATA_SOURCE = population_ds,  
    FILE_FORMAT = census_file_format
)
GO

SELECT TOP 1 * FROM census_external_table

Membuat dan mengkueri tabel eksternal dari file di Azure Data Lake

Menggunakan kemampuan eksplorasi Data Lake dari Synapse Studio, Anda kini dapat membuat dan mengkueri tabel eksternal menggunakan kumpulan Synapse SQL cukup dengan mengklik kanan file. Gerakan satu klik untuk membuat tabel eksternal dari akun penyimpanan ADLS Gen2 hanya didukung untuk file Parquet.

Prasyarat

  • Anda harus memiliki akses ke ruang kerja dengan setidaknya peran akses Storage Blob Data Contributor ke Akun ADLS Gen2 atau Daftar Kontrol Akses (ACL) yang memungkinkan Anda mengkueri file.

  • Anda harus memiliki setidaknya izin untuk membuat dan mengkueri tabel eksternal pada kumpulan Synapse SQL (khusus atau tanpa server).

Dari panel Data, pilih file yang ingin Anda buat tabel eksternalnya:

externaltable1

Jendela dialog akan terbuka. Pilih kumpulan SQL khusus atau kumpulan SQL tanpa server, beri nama untuk tabel lalu pilih skrip terbuka:

externaltable2

Skrip SQL secara otomatis dibuat dengan menyimpulkan skema dari file:

externaltable3

Jalankan skrip. Skrip akan secara otomatis menjalankan Select Top 100 *.:

externaltable4

Tabel eksternal kini telah dibuat, untuk eksplorasi konten tabel eksternal ini di masa mendatang, pengguna dapat mengkuerinya langsung dari panel Data:

externaltable5

Langkah berikutnya

Lihat artikel CETAS tentang cara menyimpan hasil kueri ke tabel eksternal di Azure Storage. Atau Anda dapat mulai mengkueri Apache Spark untuk tabel eksternal Azure Synapse.