Aracılığıyla paylaş


Veri sanallaştırma (önizleme)

Şunlar için geçerlidir:Microsoft Fabric'te SQL veritabanı

Önemli

Bu özellik önizleme aşamasındadır.

Doku'daki SQL veritabanında veri sanallaştırma, T-SQL kullanarak OneLake'te depolanan dış verilerin sorgulanmasına olanak tanır.

Veri sanallaştırma söz dizimi ile OneLake'de verileri ortak veri biçimlerinde depolayan dosyalarda Transact-SQL (T-SQL) sorguları yürütebilirsiniz. Birleştirmeleri kullanarak bu verileri yerel olarak depolanan ilişkisel verilerle birleştirebilirsiniz. Veri sanallaştırma ile, dış verilere salt okunur modda saydam bir şekilde erişebilir ve bunu özgün biçiminde ve konumunda tutabilirsiniz.

Sözdizimi

Doku SQL Veritabanı aşağıdaki veri sanallaştırma özelliklerini destekler:

Authentication

Fabric Lakehouses kimlik doğrulaması, Microsoft Entra Id geçiş kimlik doğrulamasını kullanır.

Fabric OneLake'ten dosyalara erişmek için kullanıcının kimliğinin hem Lakehouse hem de dosya konumu için izni olması gerekir.

Permissions

Kullanıcıların OneLake'teki dosya veya klasöre Okuma erişimi olmalıdır ve Bu erişim Microsoft Entra Id geçişi aracılığıyla zorunlu kılınmalıdır.

Desteklenen dosya türleri

  • Parquet
  • CSV
  • JSON dosya biçimi, sorguların her belgeyi ayrı bir satır olarak döndürdüğü CSV dosya biçimi belirtilerek dolaylı olarak desteklenir. JSON_VALUE ve OPENJSON kullanarak satırları daha fazla ayrıştırabilirsiniz.

Desteklenen veri kaynakları

Şu anda yalnızca Fabric Lakehouse yerel olarak desteklenmektedir. Bununla birlikte, OneLake kısayolları Azure Blob Depolama, Azure Data Lake 2. Nesil, Dataverse, Amazon S3, Amazon S3 Uyumlu, Google Cloud Storage, genel HTTPS ve daha fazlası gibi çeşitli dış kaynaklara genişletmek için kullanılabilir.

Doku Kısayolları hakkında daha fazla bilgi için bkz. OneLake kısayollarıyla veri kaynaklarını birleştirme.

Bir lakehouse'un ABFSS dosya konumunu bulma

Bir Fabric Lakehouse veri kaynağı oluşturmak için workspace ID, kiracı ve lakehouse ID sağlamanız gerekir. Bir lakehouse'un ABFSS dosya konumunu bulmak için:

  1. Fabric portalına gidin.
  2. Lakehouse'unuza gidin.
  3. İstediğiniz klasör konumuna gidin.
  4. Ve ardından ... seçin.
  5. ABFS yolunu kopyalayın, bu şöyle görünüyor: abfss://<workspace ID>@<Tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/.

Sınırlamalar

  • CSV dış tabloları şema nitelikli adlar kullanılarak sorgulanmalıdır, örneğin, dbo.Customer_CSV.
  • BULK INSERT şu anda yalnızca ile OPENROWSET (BULK)birlikte kullanıldığında desteklenmektedir.

Örnekler

Aşağıdaki örnek betikler, Contoso deposu ve müşteri verilerini parquet ve csv dosyalarında barındıran ve Cold_Lake adı verilen bir Fabric Lakehouse kullanır.

Cold _ Lake adlı örnek Lakehouse'un ekran görüntüsü.

A. OPENROWSET ile parquet dosyası sorgulama

Aşağıdaki örnek, bir Parquet dosyasından örnek veri almak için OPENROWSET kullanımını gösterir.

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. OPENROWSET ile CSV dosyasını sorgulama

Aşağıdaki örnek, bir CSV dosyasından örnek verileri almak için OPENROWSET kullanımını gösterir.

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. Dış veri kaynağı oluşturma

Aşağıdaki örnekte, gibi OPENROWSETdış tabloları ve komutları basitleştirmek için dış veri kaynağının nasıl oluşturulacağı gösterilmektedir:

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

Dış veri kaynağı oluşturulduğunda basitleştirebilirsiniz OPENROWSET, örneğin:

-- 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. Parquet için dış tablo oluşturma

Aşağıdaki örnek, dış dosya biçimini ayarlamayı ve ardından parquet verileri için özel olarak bir dış tablo oluşturmayı gösterir.

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. CSV için dış tablo oluşturma

Aşağıdaki örnekte, dış dosya biçimini ayarlama ve CSV verileri için özel olarak dış tablo oluşturma işlemleri gösterilmektedir.

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. OPENROWSET kullanarak veri alma

Aşağıdaki örnek, verileri yeni bir tabloya almak için nasıl OPENROWSET kullanılabileceğini gösterir:

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;

Mevcut bir tablo için, tabloyu INSERT INTO'den doldurmak için OPENROWSET kullanılabilir.

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. Meta veri işlevlerini kullanma - sp_describe_first_result_set

sp_describe_first_result_set işlevi, OPENROWSET (BULK) ile birlikte kullanılarak dış dosya şemasını tahmin etmek için kullanılabilir. CREATE TABLE veya CREATE EXTERNAL TABLE deyimlerinin şemasını ve daha fazla veri keşfi için tanımlayabilirsiniz.

işlevi, sp_describe_first_result_set şemayı tahmin etmek için verilerin bir örneğini kullanır. Örnek temsili değilse, yanlış sonuçlar sağlayabilir. Şema zaten biliniyorsa, WITH koşulu ile belirtin.

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

Daha fazla bilgi için bkz. sp_describe_first_result_set().

H. Meta veri işlevlerini kullanma - filename() ve filepath()

Fabric SQL veritabanı, klasör ve dosya keşfinin yanı sıra dinamik sorgu oluşturma için filename() ve filepath() işlevlerini de sağlar. Bu işlevler, OPENROWSET ile birleştirilerek, birden fazla alt klasördeki veri dosyalarına sanal sütunlar oluştururken kullanılabilir.

Aşağıdaki örnek, tüm parquet dosyalarını ve konumlarını listelemektedir.

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;  

Daha fazla bilgi için bkz. filename() ve filepath().