Bagikan melalui


Virtualisasi data (pratinjau)

Berlaku untuk:Database SQL di Microsoft Fabric

Penting

Fitur ini sedang dalam tahap pratinjau.

Virtualisasi data dalam database SQL di Fabric memungkinkan kueri data eksternal yang disimpan di OneLake menggunakan T-SQL.

Dengan sintaks virtualisasi data, Anda dapat menjalankan kueri Transact-SQL (T-SQL) pada file yang menyimpan data dalam format data umum di OneLake. Anda dapat menggabungkan data ini dengan data relasional yang disimpan secara lokal dengan menggunakan gabungan. Dengan virtualisasi data, Anda dapat secara transparan mengakses data eksternal dalam mode baca-saja, sambil menyimpannya dalam format dan lokasi aslinya.

Syntax

Fabric SQL Database mendukung kemampuan virtualisasi data berikut:

Authentication

Autentikasi ke Fabric Lakehouses menggunakan autentikasi passthrough ID Microsoft Entra.

Mengakses file dari Fabric OneLake mengharuskan identitas pengguna memiliki izin untuk Lakehouse serta letak file.

Permissions

Pengguna harus memiliki akses BACA ke file atau folder di OneLake, yang diberlakukan melalui passthrough Microsoft Entra ID.

Jenis file yang didukung

  • Parquet
  • CSV
  • Format file JSON secara tidak langsung didukung dengan menentukan format file CSV di mana kueri mengembalikan setiap dokumen sebagai baris terpisah. Anda dapat mengurai baris lebih lanjut menggunakan JSON_VALUE dan OPENJSON.

Sumber data yang didukung

Hanya Fabric Lakehouse yang saat ini didukung secara asli. Namun, pintasan OneLake dapat digunakan untuk memperluas ke berbagai sumber eksternal seperti Azure Blob Storage, Azure Data Lake Gen2, Dataverse, Amazon S3, Amazon S3 Compatible, Google Cloud Storage, HTTPS publik, dan banyak lagi.

Untuk informasi selengkapnya tentang Pintasan Fabric, lihat Menyatukan sumber data dengan pintasan OneLake.

Cara menemukan lokasi file ABFSS pada lakehouse

Untuk membuat sumber data Fabric Lakehouse, Anda perlu memberikan ID ruang kerja, penyewa, dan ID lakehouse. Untuk menemukan lokasi file ABFSS dari lakehouse:

  1. Buka portal Fabric.
  2. Navigasi ke Lakehouse Anda.
  3. Navigasi ke lokasi folder yang diinginkan.
  4. Pilih ... lalu Properti.
  5. Salin jalur ABFS, yang terlihat seperti ini: abfss://<workspace ID>@<Tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/.

Keterbatasan

  • Tabel eksternal CSV harus dikueri menggunakan nama yang memenuhi syarat skema, misalnya, dbo.Customer_CSV.
  • BULK INSERT saat ini hanya didukung ketika digunakan dalam kombinasi dengan OPENROWSET (BULK).

Examples

Contoh skrip berikut menggunakan Fabric Lakehouse bernama Cold_Lake yang menghosting data toko dan pelanggan Contoso dalam file Parquet dan CSV.

Cuplikan layar sampel Lakehouse bernama Cold _ Lake.

A. Mengkueri file parquet dengan OPENROWSET

Contoh berikut menunjukkan penggunaan OPENROWSET untuk mengambil data sampel dari file Parquet.

SELECT TOP 100 *  
FROM OPENROWSET(  
    BULK 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/Contoso/customer.parquet',  
    FORMAT = 'parquet'  
) AS customer_dataset;  

B. Mengkueri file CSV dengan OPENROWSET

Contoh berikut menunjukkan penggunaan OPENROWSET untuk mengambil data sampel dari file CSV.

SELECT *  
FROM OPENROWSET(  
    BULK 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/Contoso/customer.csv',  
    FORMAT = 'CSV',  
    FIRST_ROW = 2  
) WITH (  
    CustomerKey INT,  
    GeoAreaKey INT,  
    StartDT DATETIME2,  
    EndDT DATETIME2,  
    Continent NVARCHAR(50),  
    Gender NVARCHAR(10),  
    Title NVARCHAR(10),  
    GivenName NVARCHAR(100),  
    MiddleInitial VARCHAR(2),  
    Surname NVARCHAR(100),  
    StreetAddress NVARCHAR(200),  
    City NVARCHAR(100),  
    State NVARCHAR(100),  
    StateFull NVARCHAR(100),  
    ZipCode NVARCHAR(20),  
    Country_Region NCHAR(2),  
    Country_Region_Full NVARCHAR(100),  
    Birthday DATETIME2,  
    Age INT,  
    Occupation NVARCHAR(100),  
    Company NVARCHAR(100),  
    Vehicle NVARCHAR(100),  
    Latitude DECIMAL(10,6),  
    Longitude DECIMAL(10,6)  
) AS customer_dataset; 

C. Membuat sumber data eksternal

Contoh berikut menunjukkan cara membuat sumber data eksternal untuk menyederhanakan tabel dan perintah eksternal seperti OPENROWSET:

CREATE EXTERNAL DATA SOURCE [Cold_Lake] 
WITH ( 
LOCATION = 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/'); 

Dengan sumber data eksternal yang dibuat, Anda dapat menyederhanakan OPENROWSET, misalnya:

-- USING DATA SOURCE WITH OPENROWSET 
SELECT TOP 100 * FROM OPENROWSET 
(BULK '/customer.parquet' 
, FORMAT = 'parquet' 
, DATA_SOURCE = 'Cold_Lake' ) 
 AS Customer_dataset; 
-- USING DATA SOURCE WITH OPENROWSET 
SELECT TOP 100 *  
FROM OPENROWSET(  
    BULK '/customer.csv',  
    FORMAT = 'CSV',  
    DATA_SOURCE = 'Cold_Lake', 
    FIRST_ROW = 2  
) WITH (  
    CustomerKey INT,  
    GeoAreaKey INT,  
    StartDT DATETIME2,  
    EndDT DATETIME2,  
    Continent NVARCHAR(50),  
    Gender NVARCHAR(10),  
    Title NVARCHAR(10),  
    GivenName NVARCHAR(100),  
    MiddleInitial VARCHAR(2),  
    Surname NVARCHAR(100),  
    StreetAddress NVARCHAR(200),  
    City NVARCHAR(100),  
    State NVARCHAR(100),  
    StateFull NVARCHAR(100),  
    ZipCode NVARCHAR(20),  
    Country_Region NCHAR(2),  
    Country_Region_Full NVARCHAR(100),  
    Birthday DATETIME2,  
    Age INT,  
    Occupation NVARCHAR(100),  
    Company NVARCHAR(100),  
    Vehicle NVARCHAR(100),  
    Latitude DECIMAL(10,6),  
    Longitude DECIMAL(10,6)  
) AS customer_dataset; 

D. Membuat tabel eksternal untuk parquet

Sampel berikut menunjukkan cara menyiapkan format file eksternal, lalu membuat tabel eksternal khusus untuk data parket.

CREATE EXTERNAL FILE FORMAT Parquetff WITH (FORMAT_TYPE=PARQUET); 

CREATE EXTERNAL TABLE [ext_product]( 
    [ProductKey] [int] NULL, 
    [ProductCode] [nvarchar](255) NULL, 
    [ProductName] [nvarchar](500) NULL, 
    [Manufacturer] [nvarchar](50) NULL, 
    [Brand] [nvarchar](50) NULL, 
    [Color] [nvarchar](20) NULL, 
    [WeightUnit] [nvarchar](20) NULL, 
    [Weight] DECIMAL(20, 5) NULL, 
    [Cost] DECIMAL(20, 5) NULL, 
    [Price] DECIMAL(20, 5) NULL, 
    [CategoryKey] [int] NULL, 
    [CategoryName] [nvarchar](30) NULL, 
    [SubCategoryKey] [int] NULL, 
    [SubCategoryName] [nvarchar](50) NULL) 
WITH 
(LOCATION = '/product.parquet' 
,DATA_SOURCE = [Cold_Lake] 
,FILE_FORMAT = Parquetff); 
 
SELECT * FROM [dbo].[ext_product] 

E. Membuat tabel eksternal untuk CSV

Sampel berikut menunjukkan cara menyiapkan format file eksternal dan membuat tabel eksternal khusus untuk data CSV.

CREATE EXTERNAL FILE FORMAT [CSVFileFormat]  
WITH (  
    FORMAT_TYPE = DELIMITEDTEXT,  
    FORMAT_OPTIONS (  
        FIELD_TERMINATOR = ',',  
        FIRST_ROW = 2  
    )  
); 
 
CREATE EXTERNAL TABLE ext_customer_csv ( 
    CustomerKey INT NOT NULL,  
    GeoAreaKey INT NOT NULL,  
    StartDT DATETIME2 NOT NULL, 
    EndDT DATETIME2 NOT NULL, 
    Continent VARCHAR(50) NOT NULL, 
    Gender VARCHAR(10) NOT NULL, 
    Title VARCHAR(10) NOT NULL,  
    GivenName VARCHAR(100) NOT NULL,  
    MiddleInitial VARCHAR(2) NOT NULL,  
    Surname VARCHAR(100) NOT NULL, 
    StreetAddress VARCHAR(200) NOT NULL, 
    City VARCHAR(100) NOT NULL, 
    State VARCHAR(100) NOT NULL, 
    StateFull VARCHAR(100) NOT NULL, 
    ZipCode VARCHAR(20) NOT NULL,  
    Country_Region CHAR(2) NOT NULL 
    ) 
WITH (  
LOCATION = '/customer.csv' 
, DATA_SOURCE = Cold_Lake 
, FILE_FORMAT = CSVFileFormat 
); 

SELECT * FROM [dbo].[ext_customer_csv]; 

F. Menyerap data menggunakan OPENROWSET

Contoh berikut menunjukkan cara OPENROWSET menggunakan untuk menyerap data ke dalam tabel baru:

SELECT * 
INTO tb_store 
FROM OPENROWSET 
(BULK 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/Contoso/store.parquet' 
, FORMAT = 'parquet' )
 AS STORE;

Untuk tabel yang ada, INSERT INTO dapat digunakan untuk mengisi tabel dari OPENROWSET:

INSERT INTO tb_store  
SELECT TOP 100 * FROM OPENROWSET 
(BULK ' abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/contoso/store.parquet' 
, FORMAT = 'parquet' ) 
 AS STORE; 

G. Gunakan fungsi metadata - sp_describe_first_result_set

Fungsi sp_describe_first_result_set ini dapat digunakan dalam kombinasi dengan OPENROWSET (BULK) untuk memperkirakan skema file eksternal. Anda dapat mengidentifikasi skema untuk CREATE TABLE pernyataan atau CREATE EXTERNAL TABLE dan untuk eksplorasi data lebih lanjut.

Fungsi ini sp_describe_first_result_set menggunakan sampel data untuk memperkirakan skema. Jika sampel tidak representatif, sampel dapat memberikan hasil yang tidak akurat. Jika skema sudah diketahui, tentukan melalui WITH klausa.

EXEC sp_describe_first_result_set N'  
   SELECT * FROM OPENROWSET(  
      BULK ''abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/Contoso/store.parquet'',  
      FORMAT = ''parquet''  
   ) AS DATA'; 

Untuk informasi selengkapnya, lihat sp_describe_first_result_set().

H. Menggunakan fungsi metadata - filename() dan filepath()

Database Fabric SQL juga menyediakan filename() dan filepath() berfungsi untuk eksplorasi folder dan file, dan pembuatan kueri dinamis, yang juga dapat digunakan untuk kolom virtual dalam kombinasi dengan OPENROWSET ke file data di beberapa subfolder.

Contoh berikut mencantumkan semua file parket dan lokasinya.

SELECT 
  r.filename() as file_name
, r.filepath() as full_path 
FROM OPENROWSET
   (BULK 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/*/*.parquet',  
    FORMAT = 'parquet'  
   ) AS r 
GROUP BY r.filename(), r.filepath() 
ORDER BY file_name;  

Untuk informasi selengkapnya, lihat filename() dan filepath().