Κοινοποίηση μέσω


Αναπαράσταση δεδομένων (έκδοση προεπισκόπησης)

Ισχύει για:Βάση δεδομένων SQL στο Microsoft Fabric

Σημαντικό

Αυτή η δυνατότητα είναι σε προεπισκόπηση.

Η αναπαράσταση δεδομένων στη βάση δεδομένων SQL στο Fabric επιτρέπει την υποβολή ερωτημάτων σε εξωτερικά δεδομένα που είναι αποθηκευμένα στο OneLake χρησιμοποιώντας T-SQL.

Με τη σύνταξη αναπαράστασης δεδομένων, μπορείτε να εκτελέσετε ερωτήματα Transact-SQL (T-SQL) σε αρχεία που αποθηκεύουν δεδομένα σε κοινές μορφές δεδομένων στο OneLake. Μπορείτε να συνδυάσετε αυτά τα δεδομένα με τοπικά αποθηκευμένα σχεσιακά δεδομένα χρησιμοποιώντας συνδέσμους. Με την εικονικοποίηση δεδομένων, μπορείτε να έχετε διαφανή πρόσβαση σε εξωτερικά δεδομένα σε λειτουργία μόνο για ανάγνωση, διατηρώντας τα στην αρχική τους μορφή και θέση.

Σύνταξη

Η βάση δεδομένων SQL Fabric υποστηρίζει τις ακόλουθες δυνατότητες αναπαράστασης δεδομένων:

Έλεγχος ταυτότητας

Ο έλεγχος ταυτότητας σε Fabric Lakehouses χρησιμοποιεί έλεγχο ταυτότητας διαβίβασης Microsoft Entra ID.

Η πρόσβαση σε αρχεία από το Fabric OneLake απαιτεί η ταυτότητα του χρήστη να έχει δικαιώματα τόσο για το Lakehouse όσο και για τη θέση του αρχείου.

Δικαιώματα

Οι χρήστες πρέπει να έχουν πρόσβαση READ στο αρχείο ή το φάκελο στο 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 ενός lakehouse

Για να δημιουργήσετε μια προέλευση δεδομένων Fabric Lakehouse, πρέπει να καταχωρήσετε το αναγνωριστικό χώρου εργασίας, τον μισθωτή και το αναγνωριστικό lakehouse. Για να βρείτε τη θέση του αρχείου ABFSS ενός lakehouse:

  1. Μεταβείτε στην πύλη Fabric.
  2. Πλοηγηθείτε στο Lakehouse σας.
  3. Μεταβείτε στην επιθυμητή θέση φακέλου.
  4. Επιλέξτε ... και, στη συνέχεια, Ιδιότητες.
  5. Αντιγράψτε τη διαδρομή ABFS, η οποία μοιάζει κάπως έτσι: abfss://<workspace ID>@<Tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/.

Limitations

  • Οι εξωτερικοί πίνακες CSV πρέπει να ερωτηθούν χρησιμοποιώντας ονόματα που χαρακτηρίζονται από σχήμα, για παράδειγμα, dbo.Customer_CSV.
  • BULK INSERT υποστηρίζεται προς το παρόν μόνο όταν χρησιμοποιείται σε συνδυασμό με OPENROWSET (BULK).

Παραδείγματα

Τα παρακάτω δείγματα δεσμών ενεργειών χρησιμοποιούν ένα Fabric Lakehouse με όνομα Cold_Lake που φιλοξενεί δεδομένα αποθήκευσης Contoso και πελατών σε αρχεία parquet και csv.

Στιγμιότυπο οθόνης του δείγματος Lakehouse με το όνομα Cold _ Lake.

Ένας. Υποβολή ερωτήματος σε αρχείο parquet με το 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; 

Γ. Δημιουργία εξωτερικής προέλευσης δεδομένων

Το παρακάτω παράδειγμα δείχνει πώς μπορείτε να δημιουργήσετε μια εξωτερική πηγή δεδομένων για να απλοποιήσετε εξωτερικούς πίνακες και εντολές όπως 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; 

Δ. Δημιουργία εξωτερικού τραπεζιού για παρκέ

Το παρακάτω δείγμα δείχνει πώς μπορείτε να ρυθμίσετε μια μορφή εξωτερικού αρχείου και, στη συνέχεια, να δημιουργήσετε έναν εξωτερικό πίνακα ειδικά για δεδομένα παρκέ.

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) την εκτίμηση του σχήματος εξωτερικού αρχείου. Μπορείτε να προσδιορίσετε το σχήμα για τις CREATE TABLE δηλώσεις ή CREATE EXTERNAL TABLE και για περαιτέρω εξερεύνηση δεδομένων.

Η sp_describe_first_result_set συνάρτηση χρησιμοποιεί ένα δείγμα των δεδομένων για την εκτίμηση του σχήματος. Εάν το δείγμα δεν είναι αντιπροσωπευτικό, μπορεί να παρέχει ανακριβή αποτελέσματα. Εάν το σχήμα είναι ήδη γνωστό, προσδιορίστε το μέσω 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 σε αρχεία δεδομένων σε πολλούς υποφακέλους.

Το παρακάτω παράδειγμα παραθέτει όλα τα αρχεία parquet και τη θέση τους.

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().