แชร์ผ่าน


การจําลองเสมือนข้อมูล (พรีวิว)

นําไปใช้กับ:ฐานข้อมูล SQL ใน Microsoft Fabric

สําคัญ

คุณลักษณะนี้อยู่ในแสดงตัวอย่าง

การจําลองเสมือนข้อมูลในฐานข้อมูล SQL ใน Fabric ช่วยให้สามารถสืบค้นข้อมูลภายนอกที่จัดเก็บไว้ใน OneLake โดยใช้ T-SQL

ด้วยไวยากรณ์การจําลองเสมือนของข้อมูล คุณสามารถดําเนินการคิวรี Transact-SQL (T-SQL) บนไฟล์ที่จัดเก็บข้อมูลในรูปแบบข้อมูลทั่วไปใน OneLake ได้ คุณสามารถรวมข้อมูลนี้กับข้อมูลเชิงสัมพันธ์ที่จัดเก็บไว้ในเครื่องได้โดยใช้การรวม ด้วยการจําลองเสมือนข้อมูล คุณสามารถเข้าถึงข้อมูลภายนอกได้อย่างโปร่งใสในโหมดอ่านอย่างเดียว โดยยังคงรักษาข้อมูลไว้ในรูปแบบและตําแหน่งเดิม

วากยสัมพันธ์

ฐานข้อมูล Fabric SQL รองรับความสามารถในการจําลองเสมือนข้อมูลต่อไปนี้:

การรับรองความถูกต้อง

การรับรองความถูกต้องไปยัง Fabric Lakehouses ใช้การรับรองความถูกต้องแบบพาสทรู Microsoft Entra ID

การเข้าถึงไฟล์จาก Fabric OneLake ต้องการข้อมูลประจําตัวของผู้ใช้เพื่อมีสิทธิ์สําหรับทั้ง Lakehouse และตําแหน่งไฟล์

สิทธิ์

ผู้ใช้ต้องมีสิทธิ์เข้าถึงไฟล์หรือโฟลเดอร์ใน OneLake ซึ่งบังคับใช้ผ่านการส่งผ่าน Microsoft Entra ID

ชนิดไฟล์ที่รองรับ

  • Parquet
  • CSV
  • รูปแบบไฟล์ JSON ได้รับการสนับสนุนทางอ้อมโดยการระบุรูปแบบไฟล์ CSV ที่การสืบค้นส่งคืนเอกสารทุกฉบับเป็นแถวแยกต่างหาก คุณสามารถแยกวิเคราะห์แถวเพิ่มเติมได้โดยใช้ JSON_VALUE และ OPENJSON

แหล่งข้อมูลที่ได้รับการสนับสนุน

ขณะนี้รองรับเฉพาะ Fabric Lakehouse เท่านั้น อย่างไรก็ตาม ทางลัด OneLake สามารถใช้เพื่อขยายไปยังแหล่งภายนอกต่างๆ เช่น Azure Blob Storage, Azure Data Lake Gen2, Dataverse, Amazon S3, Amazon S3 Compatible, Google Cloud Storage, HTTPS สาธารณะ และอื่นๆ

สําหรับข้อมูลเพิ่มเติมเกี่ยวกับทางลัด Fabric โปรดดู รวมแหล่งข้อมูลด้วยทางลัด OneLake

วิธีค้นหาตําแหน่งไฟล์ ABFSS ของเลคเฮาส์

ในการสร้างแหล่งข้อมูล Fabric Lakehouse คุณต้องระบุรหัสพื้นที่ทํางาน ผู้เช่า และรหัสเลคเฮาส์ เมื่อต้องการค้นหาตําแหน่งแฟ้ม ABFSS ของเลคเฮาส์:

  1. ไปที่พอร์ทัล Fabric
  2. นําทางไปยังเลคเฮาส์ของคุณ
  3. นําทางไปยังตําแหน่งโฟลเดอร์ที่ต้องการ
  4. เลือก ... แล้วเลือก คุณสมบัติ
  5. คัดลอกเส้นทาง ABFS ซึ่งมีลักษณะดังนี้: abfss://<workspace ID>@<Tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/

Limitations

  • ต้องคิวรีตารางภายนอก CSV โดยใช้ชื่อที่ผ่านการรับรอง Schema ตัวอย่างเช่น dbo.Customer_CSV
  • BULK INSERTขณะนี้ได้รับการสนับสนุนเฉพาะเมื่อใช้ร่วมกับOPENROWSET (BULK)

ตัวอย่าง

สคริปต์ตัวอย่างต่อไปนี้ใช้ Fabric Lakehouse ที่มีชื่อ Cold_Lake ที่โฮสต์ที่เก็บข้อมูล Contoso และข้อมูลลูกค้าในไฟล์ parquet และ csv

ภาพหน้าจอของเลคเฮาส์ตัวอย่างชื่อ Cold _ Lake

ตอบ สืบค้นไฟล์ปาร์เก้ด้วย OPENROWSET

ตัวอย่างต่อไปนี้สาธิตการใช้ เพื่อ OPENROWSET ดึงข้อมูลตัวอย่างจากไฟล์ 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. สืบค้นไฟล์ CSV ด้วย OPENROWSET

ตัวอย่างต่อไปนี้สาธิตการใช้ เพื่อ OPENROWSET ดึงข้อมูลตัวอย่างจากไฟล์ 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. สร้างแหล่งข้อมูลภายนอก

ตัวอย่างต่อไปนี้แสดงวิธีการสร้างแหล่งข้อมูลภายนอกเพื่อลดความซับซ้อนของตารางและคําสั่งภายนอก เช่น OPENROWSET:

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

เมื่อสร้างแหล่งข้อมูลภายนอก คุณสามารถลด OPENROWSETความซับซ้อนได้ ตัวอย่างเช่น:

-- 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. สร้างโต๊ะภายนอกสําหรับไม้ปาร์เก้

ตัวอย่างต่อไปนี้สาธิตวิธีการตั้งค่ารูปแบบไฟล์ภายนอก จากนั้นสร้างตารางภายนอกสําหรับข้อมูลปาร์เก้โดยเฉพาะ

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

ตัวอย่างต่อไปนี้สาธิตวิธีการตั้งค่ารูปแบบไฟล์ภายนอกและสร้างตารางภายนอกสําหรับข้อมูล 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. นําเข้าข้อมูลโดยใช้ OPENROWSET

ตัวอย่างต่อไปนี้แสดงวิธีการ OPENROWSET ใช้เพื่อนําเข้าข้อมูลลงในตารางใหม่:

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;

สําหรับตาราง INSERT INTO ที่มีอยู่ สามารถใช้เพื่อเติมข้อมูลตารางได้จาก 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. ใช้ฟังก์ชันข้อมูลเมตา - sp_describe_first_result_set

ฟังก์ชัน sp_describe_first_result_set นี้สามารถใช้ร่วมกับ OPENROWSET (BULK) การประเมินสคีมาไฟล์ภายนอกได้ คุณสามารถระบุ Schema สําหรับ CREATE TABLE คําสั่ง or CREATE EXTERNAL TABLE และสําหรับการสํารวจข้อมูลเพิ่มเติมได้

ฟังก์ชันนี้ sp_describe_first_result_set ใช้ตัวอย่างข้อมูลเพื่อประเมิน Schema หากตัวอย่างไม่เป็นตัวแทน อาจให้ผลลัพธ์ที่ไม่ถูกต้อง หากทราบ Schema แล้ว ให้ระบุผ่าน WITH ส่วนคําสั่ง

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

สําหรับข้อมูลเพิ่มเติม โปรดดู sp_describe_first_result_set()

H. ใช้ฟังก์ชันข้อมูลเมตา - filename() และ filepath()

ฐานข้อมูล Fabric SQL ยังทําให้พร้อมใช้งาน filename() และ filepath() ฟังก์ชันสําหรับการสํารวจโฟลเดอร์และไฟล์ และการสร้างแบบสอบถามแบบไดนามิก ซึ่งยังสามารถใช้สําหรับคอลัมน์เสมือนร่วมกับ OPENROWSET ไปยังไฟล์ข้อมูลในโฟลเดอร์ย่อยหลายโฟลเดอร์

ตัวอย่างต่อไปนี้แสดงรายการไฟล์ปาร์เก้ทั้งหมดและตําแหน่งของมัน

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;  

สําหรับข้อมูลเพิ่มเติม โปรดดู filename() และ filepath()