Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
Gælder for:✅ SQL Analytics-slutpunkt og warehouse i Microsoft Fabric
Fabric Data Warehouse og SQL-analyse-endpointet tillader dig at forespørge data, der er lagret i filer i en datalake ved hjælp af Transact-SQL (T-SQL) kode.
De tilbyder et velkendt T-SQL-forespørgselsareal, der understøtter forespørgsler på strukturerede, semistrukturerede og ustrukturerede data. I Fabric Data Warehouse og SQL-analyse-endpointet kan du forespørge forskellige filformater som Parquet, CSV og JSONL.
OPENROWSET
Funktionen forenklede syntaks er OPENROWSET :
OPENROWSET( BULK '{file path}', [ options...] )
[ WITH ( {result set column schema} ) ]
OPENROWSET understøtter tre måder at angive filplaceringen på:
- Absolut sti, der indeholder hele URL'en til den fil, du vil læse. Dette er den nemmeste tilgang, når du kender den præcise filplacering.
- Relativ sti med en datakilde – den relative sti tilføjes rodplaceringen defineret i datakilden for at danne den fulde sti. Datakilden kan pege på en ekstern lagrings-URL (for eksempel Azure Blob, ADLS Gen2) eller rod-URL'en for en Lakehouse i Fabric.
-
Relativ sti, der starter med
/Files- denne mulighed fungerer kun, når man forespørger en Lakehouse via dets SQL-analyseendepunkt. Mappen/Filesrepræsenterer Lakehouse-filområdet, og du kan bruge relative stier uden at definere en datakilde.
Filerne kan placeres i en af følgende lagringsmuligheder:
- Azure Data Lake Storage (ADLS) - en skalerbar, hierarkisk cloud-lagringstjeneste optimeret til big data-analysearbejdsbelastninger.
- Azure Blob Storage - en generel objektlagringstjeneste til lagring af store mængder ustrukturerede data såsom filer, billeder og logfiler.
-
Fabric OneLake - den oprindelige sø-lagring til Microsoft Fabric, som leverer en samlet, logisk data-lake for alle Fabric-arbejdsbelastninger. OneLake muliggør også indirekte adgang til data, der er lagret eksternt, herunder:
- Amazon S3 - Objektlagringstjeneste leveret af Amazon Web Services.
- Google Cloud Storage (GCS) - Objektlagringstjeneste til Google Cloud Platform.
- SharePoint - Samarbejdsbaseret dokument- og fillagringstjeneste i Microsoft 365.
- OneDrive - Personlig cloud-lagringstjeneste til filer i Microsoft 365.
Disse funktioner muliggør fleksibel, T-SQL-baseret forespørgsler på tværs af data, der er lagret i en bred vifte af cloud- og SaaS-lagringssystemer, hvilket eliminerer behovet for forudgående dataindlæsning eller -transformation før analyse.
Relevante OPENROWSET-muligheder
Brug indstillinger i OPENROWSET til at beskrive det underliggende filformat og styr, hvordan dataene bliver parsed. Disse indstillinger er især vigtige for adskilte tekstfiler, hvor du skal definere, hvordan rækker og kolonner er adskilt.
Almindelige indstillinger omfatter:
-
FIELDTERMINATOR,ROWTERMINATOR, ogFIELDQUOTE- Angiv de tegn, der adskiller felter og rækker. Disse muligheder sikrer nøjagtig parsning af kolonner og poster. De håndterer også anførte værdier i deparerede filer for at bevare tekst, der indeholder afgrænsere. -
HEADER_ROWogFIRSTROW- Angiv, om filen indeholder en header-række, og definer, hvilken række der skal behandles som den første datarække. -
CODEPAGE- Sæt tegnkodningen til korrekt at fortolke specialtegn og ikke-ASCII-tekst.
Disse muligheder giver fleksibilitet til at arbejde med forskellige filformater og sikrer, at data læses korrekt uanset forskelle i struktur eller kodning.
Den valgfrie WITH klausul i OPENROWSET giver dig mulighed for at definere et eksplicit skema for dataene. At give et skema er nyttigt, når du ikke automatisk vil OPENROWSET udlede skemaet ud fra de underliggende filer. Brug klausulen WITH til at tilsidesætte automatisk skema-inferens og definer præcis, hvordan dataene skal projiceres i tabelform.
Brugsscenarier for OPENROWSET
For at give en problemfri in-place forespørgselsoplevelse for data lagret i en datalake bruger Fabric Data Warehouse og SQL-analyse-endpointet OPENROWSET-funktionen til at referere til filer og læse deres indhold.
Funktionen OPENROWSET tilbyder omfattende muligheder for forespørgsler på filer, herunder:
- Søg i PARQUET-filer , der er optimeret til analytiske arbejdsbyrder.
- Forespørg CSV-filer for at få adgang til rækkebaserede deparerede filer med konfigurerbare parsing-muligheder.
- Forespørg JSONL-filer , der almindeligvis bruges til streaming og kun tilføjelsesdata.
- Schema on read gør det muligt at anvende eller udlede skemaer ved forespørgselstidspunktet, når du læser data fra filer.
- Forespørg flere filer eller mapper ved at udnytte mønstre og jokere.
- Brug metadatafunktioner til at hente metadata på filniveau, såsom filnavn og filsti, og brug det til at filtrere filer under forespørgsler.
Forespørg PARQUET-filer med OPENROWSET
Parquet er et kolonneformat optimeret til analysearbejdsbyrder. Den gemmer data i kolonner i stedet for i rækker, hvilket muliggør effektiv komprimering, reduceret I/O og hurtigere forespørgselsydelse, især ved forespørgsler i en delmængde af kolonner.
Funktionen OPENROWSET muliggør nem og intuitiv adgang til Parquet-filer direkte fra T-SQL-kode.
For at forespørge en Parquet-fil skal URL'en til Parquet-filen blive angivet ved at bruge funktionen OPENROWSET :
SELECT * FROM
OPENROWSET( BULK 'https://myaccount.dfs.core.windows.net/mycontainer/mysubfolder/data.parquet');
Funktionen OPENROWSET returnerer hver række fra Parquet-filen som en række i resultatsættet. Kolonnerne i resultatsættet matcher skemaet for Parquet-filen.
For brugseksempler, se Query Parquet-filer.
Forespørg deparerede filer med OPENROWSET
Afgrænset tekstformat er et tekstbaseret, rækkeorienteret filformat, der almindeligvis bruges til dataudveksling og letvægts datalagring.
- Data er organiseret i rækker adskilt af en rækketerminator.
- Flere celler inden for hver række adskilles af en feltseparator.
- Værdierne i cellerne adskilles af afgrænsere som komma eller tabulatorer.
Afgrænsede filer understøttes bredt og er nemme at producere på tværs af mange systemer og værktøjer.
Det mest anvendte afgrænsede format er komma-separerede værdier format (CSV). I en CSV adskilles rækkerne af en ny linje, og værdierne med komma er valgfrit indkapslet af dobbelte citationstegn. Dog findes der mange variationer, såsom tabulator-separerede værdier (TSV) og andre brugerdefinerede afgrænsede formater.
Ved at bruge OPENROWSET, kan du få adgang til deparerede filer direkte fra T-SQL på en ligetil og fleksibel måde. Denne tilgang muliggør forespørgsler på stedet uden først at data skal indlæses i databasetabeller.
For at forespørge en afgrænset fil skal du angive filens URL og definere de relevante parsing-muligheder, når funktionen bruges OPENROWSET :
SELECT * FROM
OPENROWSET( BULK '/Files/mysubfolder/data.csv');
Funktionen OPENROWSET returnerer hver række fra den afgrænsede fil som en række i resultatsættet. Kolonnerne i resultatsættet følger strukturen af den afgrænsede fil.
Du kan tilpasse, hvordan adskilte tekstfiler (såsom CSV, TSV eller andre varianter) parses ved at specificere muligheder som felt-terminatorer, række-terminatorer, escape-tegn og andre format-relaterede indstillinger, så de matcher din filstruktur.
For brugseksempler, se Forespørgsel adskilt tekstfiler.
Foresøg JSONL-filer med OPENROWSET
JSON-linjer (JSONL) er et linjeafgrænset, semistruktureret filformat, hvor hver linje indeholder et gyldigt JSON-objekt. Denne struktur gør JSONL særligt velegnet til streaming, hændelsesdata og kun append-arbejdsbelastninger, da nye poster kan skrives effektivt uden at omskrive hele filen.
Ved at bruge OPENROWSET funktionen kan du forespørge JSONL-filer direkte fra T-SQL. Du kan analysere streaming og kontinuerligt genererede data på stedet, uden at det behøver at blive indført i databasetabeller på forhånd.
For at forespørge en JSONL-fil, angiv filens URL, når funktionen bruges OPENROWSET :
SELECT * FROM
OPENROWSET( BULK '/mysubfolder/data.jsonl', DATA_SOURCE='MyStorage');
Når man forespørger JSON Lines (JSONL)-filer, behandles hvert JSON-objekt i filen som en separat række i resultatsættet.
Hver egenskab inden for JSON-objektet returneres som en individuel kolonne, hvilket muliggør en naturlig relationel visning af linjeafgrænsede JSON-data.
For brugseksempler, se Forespørg JSONL-filer.
Skema-ved-læsning
Fabric Data Warehouse gør det muligt for SQL-udviklere at anvende et skema ved forespørgsler, når de læser data direkte fra filer, der er gemt i en datalake.
Denne skema-ved-læsning-tilgang tillader, at data forbliver i deres oprindelige format, mens strukturen defineres dynamisk under forespørgsler. Du kan vælge mellem to skema-på-læsning-modeller:
- Automatisk skema-inferens, hvor Fabric analyserer filindholdet og automatisk bestemmer kolonnenavne og datatyper.
- Eksplicit skemadefinition, hvor skemaet er fuldt defineret i forespørgslen til at kontrollere kolonnenavne og datatyper.
Automatisk skema-inferens.
Automatisk skema-inferens gør det muligt at forespørge filer uden at give en eksplicit skema-definition.
Fabric Data Warehouse og SQL-analyse-endpointet undersøger automatisk kildefilerne for at identificere kolonnenavne og datatyper. De bruger filniveau-metadata, såsom Parquet-filheaders, eller analyserer repræsentative dataprøver for formater som CSV og JSONL.
Når du udelader klausulen WITH fra sætningen OPENROWSET , analyserer Fabric Data Warehouse automatisk de underliggende filer og udleder kolonnenavne og datatyper ved forespørgslen.
SELECT * FROM
OPENROWSET( BULK 'https://myaccount.dfs.core.windows.net/mycontainer/mysubfolder/data.parquet');
Denne tilgang er særligt nyttig til hurtig udforskning, udviklende skemaer eller scenarier, hvor filstrukturen administreres uden for datawarehouset. Ved at udlede skemaet dynamisk kan du fokusere på at forespørge dataene uden først at definere eller vedligeholde et fast skema.
Eksplicit skemadefinition
Med en eksplicit skema-definition kontrollerer SQL-udviklere, hvordan fildata mappes til relationelle kolonner ved at specificere kolonnenavne, datatyper og, når relevant, kolonnepositioner i kildefilerne.
Denne tilgang giver præcis og forudsigelig kortlægning ved forespørgsler af filer ved brug af OPENROWSET.
For at definere skemaet skal du tilføje en valgfri WITH klausul til din OPENROWSET sætning.
SELECT * FROM
OPENROWSET( BULK '/Files/mysubfolder/data.parquet')
WITH (
Column1 int,
Column2 varchar(20),
Column3 varchar(max)
);
Brug eksplicit skema-definition, når du har brug for streng kontrol over kolonnemapping og datatyper, eller når du arbejder med udviklende eller løst strukturerede kildefiler.
Foresøg flere filer eller mapper med OPENROWSET
For at forespørge data på tværs af flere filer eller mapper, angiv en filsti, der indeholder et eller flere wildcard (*) tegn.
Ved at bruge wildcards kan en enkelt T-SQL-forespørgsel operere over et dynamisk sæt filer, der matcher et navngivnings- eller mappemønster.
Følgende regler gælder, når jokere bruges i filstier:
- Jokeren
*repræsenterer et eller flere tegn, og du kan bruge den i mappestier såvel som i filnavne. - Du kan angive flere
*wildcards inden for samme sti eller filnavn for at matche komplekse mønstre. - Når stien ender med rekursive jokerkort (for eksempel
/**), indeholder forespørgselsresultatsættet alle filer, der ligger under den angivne rodmappe og dens undermapper.
Følgende eksempel demonstrerer, hvordan man bruger jokermønstre i filstien til at forespørge flere Parquet-filer på tværs af mapper i én forespørgsel:
SELECT * FROM
OPENROWSET( BULK '/myroot/*/mysubfolder/*.parquet', DATA_SOURCE='MyStorage');
Filmetadata-funktioner
OPENROWSET Indeholder metadata-funktioner, som du kan bruge til at få adgang til information om de filer, du forespørger:
- Funktionen
filename()returnerer navnet på filen, som hver række stammer fra. Brug denne funktion til at filtrere eller forespørge specifikke filer. For bedre ydeevne kastes resultatet til en passende datatype og længde. - Funktionen
filepath()returnerer filstien, hvorfra hver række stammer.- Uden parametre returnerer den fulde filsti/URI.
- Med en parameter returnerer stisegmentet, der matcher den specificerede wildcard-position.
Det følgende eksempel demonstrerer en forespørgsel, der henter filindhold sammen med den fulde URI og filnavn for hver fil, og returnerer kun filer fra mappen /year=2025/month=10 .
SELECT
rows.filepath(),
rows.filename(),
rows.filepath(2) AS [month],
rows.*
FROM
OPENROWSET(
BULK 'https://myaccount.dfs.core.windows.net/myroot/year=2025/month=*/*.parquet'
) AS rows
WHERE rows.filepath(1) = '2025'
For mere information om filepath() og filename(), se Filmetadata-funktioner.