Tietojen käyttö varastossa Transact-SQL:n avulla

Koskee:✅ Microsoft Fabric -varasto

Transact-SQL-kieli tarjoaa vaihtoehtoja, joiden avulla voit ladata tietoja skaalatusti lakehousen nykyisistä taulukoista ja varastosta uusiin taulukoihin varastossasi. Nämä asetukset ovat käteviä, jos sinun on luotava uusia versioita koostetietoja sisältävästä taulukosta, versioita taulukoista, joissa on rivien alijoukko, tai luoda taulukko monimutkaisen kyselyn tuloksena. Tutustutaan joihinkin esimerkkeihin.

Luo uusi taulukko kyselyn tuloksella

Microsoft Fabric warehousen avulla voit helposti luoda uuden taulukon T-SQL-kyselyn tuloksen perusteella seuraavien T-SQL-lausekkeiden avulla:

  • CREATE TABLE AS SELECT (CTAS) -lauseke, jonka avulla voit luoda uuden taulukon varastoosi lausekkeen SELECT tuloksen perusteella.
  • SELECT INTO kyselylause, jonka avulla voit valita tuloksia mistä tahansa taulukkolähteestä ja ohjata tulokset uuteen taulukkoon. Tämä on T-SQL-kielen vakioominaisuus.

Nämä kaksi lauseketta ovat samankaltaisia, joten seuraavissa esimerkeissä keskitytään CTAS-lausekkeeseen.

CTAS-lauseke suorittaa käsittelytoiminnon uuteen taulukkoon rinnakkain, mikä tekee siitä erittäin tehokkaan tietojen muuntamiseen ja uusien taulukoiden luomiseen työtilaan.

Voit käyttää seuraavia asetuksia CTAS-lausekkeen SELECT osassa:

  • Luetaan varastotaulukkoa, kuten valmistelutaulukkoa.
  • Lakehouse Delta Lake -kansion lukeminen käyttäen automaattisesti luotua taulukkoa SQL-analytiikan päätepisteessä Lakehouselle.
  • CSV-, Parquet- tai JSONL-tiedostojen lukeminen suoraan Azure Data Lakesta tai Azure Blob -säilöstä funktion avulla OPENROWSET .

Lataaaksesi näyteaineiston, seuraa Ingest-datan vaiheita varastoosi käyttämällä COPY-lausetta luodaksesi näytedatan varastoosi.

Luo taulukko Warehouse-taulukosta

Ensimmäinen esimerkki näyttää, miten luodaan uusi taulukko, joka on kopio olemassa dbo.TaxiTrips olevasta taulukosta, mutta suodatettu sisältämään vain vuoden 2023 tiedot:

CREATE TABLE dbo.TaxiTrips_2023
AS
SELECT * 
FROM dbo.TaxiTrips 
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';

Luo taulukko Delta Lake -kansiosta

OneLakessa pysyvät Delta Lake -kansiot esitetään automaattisesti taulukoina, jos ne on tallennettu Lakehousen /Tables-kansioon . Seuraava koodi luo uuden taulukon TaxiTrips_2023 Delta Lake -kansiosta /Tables/TaxiTripsMyLakehouse-järvenrakennuksessa :

CREATE TABLE dbo.TaxiTrips_2023
AS
SELECT * 
FROM MyLakehouse.dbo.TaxiTrips 
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';

Voit viitata Delta Lake -kansioon käyttämällä kolmiosaista merkintätapaa, joka viittaa lakehouse-sijaintiin, johon tiedostot on tallennettu. Kaikki edellisessä osiossa näytetyt esimerkit koskevat Delta Lake -kansioita.

Luo taulukko CSV/Parquet/JSONL-tiedostosta

Voit myös luoda uuden taulukon suoraan ulkoisesta tiedostosta käyttämällä funktiota OPENROWSET . Esimerkiksi seuraava esimerkki T-SQL:stä käyttää paikkamerkkejä osoittaakseen, miten julkisen Parquet-tiedoston voi tuoda.

CREATE TABLE dbo.<table_name>
AS
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.parquet') AS data;

Voit luoda uuden taulukon muuntamalla tietoja ulkoisesta, julkisesti saatavilla olevasta CSV-tiedostosta:

CREATE TABLE dbo.<table name>
AS
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.csv') AS data;

Tai voit luoda uuden taulukon muuntamalla tietoja ulkoisesta, julkisesti saatavilla olevasta JSONL-tiedostosta:

CREATE TABLE dbo.<table name>
AS
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.jsonl') AS data;

Tietojen käyttö olemassa olevissa taulukoissa T-SQL-kyselyiden avulla

Edellisissä esimerkeissä luodaan uusia taulukoita kyselyn tuloksen perusteella. Mallia voidaan käyttää esimerkkien replikoimiseen olemassa oleviin taulukoihin INSERT ... SELECT .

Tietojen käyttö Varasto-taulukosta

Seuraava koodi poimii uudet tiedot varastotaulukosta aiemmin luotuun taulukkoon:

INSERT INTO dbo.TaxiTrips_2023
SELECT *
FROM dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';

Lausekkeen SELECT kyselyehdot voivat olla mikä tahansa kelvollinen kysely, kunhan tuloksena saatavat kyselysaraketyypit tasataan kohdetaulukon sarakkeisiin. Jos sarakkeiden nimet on määritetty ja ne sisältävät vain kohdetaulukon sarakkeiden alijoukon, kaikki muut sarakkeet ladataan muodossa NULL. Lisätietoja on kohdassa LISÄÄ...-toiminnon käyttäminen VALITSE Tietojen joukkotuonti niin, että kirjaaminen ja rinnakkaisuus on mahdollisimman vähäistä.

Tietojen käyttö Delta Lake -kansiosta

OneLakessa säilytetyt Delta Lake -kansiot esitetään automaattisesti taulukoina, jos ne on tallennettu lakehousen kansioon /Tables .

Seuraava koodi vastaanottaa uutta dataa Delta Lake -kansiosta /Tables/TaxiTrips järvenrakennuksessa MyLakehouse* .

INSERT INTO dbo.TaxiTrips_2023
SELECT *
FROM MyLakehouse.dbo.TaxiTrips 
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';

Tietojen käsittely CSV-/Parquet-/JSONL-tiedostosta

Voit käyttää OPENROWSET funktiota lähteenä Parquet-, CSV- tai JSON-tiedostojen käsittelyyn tallennustilasta:

INSERT INTO dbo.<table name>
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>') AS data
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';

Voit lukea useita tiedostoja käyttämällä yleismerkkejä, kuten *.parquet, tai kohdistamalla osioituihin hakemistoihin, kuten /year=*/month=*. Voit optimoida suorituskyvyn käyttämällä suodattimia WHERE-lauseessa, jotta tarpeettomat rivit ja osiot voidaan poistaa kyselyn suorittamisen aikana.

Tämä esimerkki on samankaltainen kuin käsittely KOPIOI KOHTEESEEN -lausekkeen kanssa käytettyjen tietojen kanssa. KOPIOI KOHTEESEEN -komentoa on helpompi käyttää, erityisesti silloin, kun lähteestä kohteeseen -tietoja ladataan helposti. Jos sinun on kuitenkin muunnettava lähdetietoja (kuten muunnettava arvoja tai liitettävä muihin taulukoihin), voit INSERT ... SELECT joustavasti suorittaa muunnoksia käsittelyn aikana.

Tietojen käsittely OneLakesta

Voit käyttää OPENROWSET funktiota lähteenä tietojen käsittelyyn Fabric OneLake -tallennustilasta. Korvaa {workspaceId} ja {lakehouseId} vastaavilla työtilan ja lakehousen GUID-tunnuksilla seuraavassa esimerkissä:

INSERT INTO dbo.TaxiTrips_2023
SELECT *
FROM OPENROWSET(BULK 'https://onelake.dfs.fabric.microsoft.com/{workspaceId}/{lakehouseId}/Files/year=*/month=*/*.parquet') AS data
WHERE data.filepath(1) = '2023'

Tämä esimerkki perustuu edelliseen, joka lukee tietoja Azure Data Lake Storagesta. Käytä tätä lähestymistapaa, kun lähdedataa täytyy muuntaa, esimerkiksi muuntamalla arvoja, yhdistämällä muihin tauluihin tai lukemalla tiettyjä osioita. Tällaisissa tapauksissa käyttö INSERT ... SELECT tarjoaa joustavuutta muunnosten käyttämiseen tietojen käsittelyn aikana.

Käytä eri varastojen ja lakehouse-talojen taulukoiden tietoja

Sekä - että CREATE TABLE AS SELECTINSERT ... SELECT-lausekkeella SELECT voidaan viitata myös taulukoihin varastoissa, jotka eroavat varastosta, johon kohdetaulukkosi on tallennettu, käyttämällä varastojenvälisia kyselyitä. Tämä voidaan toteuttaa käyttämällä kolmiosaista nimeämiskäytäntöä [warehouse_or_lakehouse_name.][schema_name.]table_name. Oletetaan, että sinulla on esimerkiksi seuraavat työtilaresurssit:

  • Järvitalo, joka on nimetty taxi_lakehouse viimeisimmällä datalla.
  • Varasto nimeltä reference_warehouse , jonka kanssa käytetään viitetiedoissa käytettäviä taulukoita.
  • Varasto, jonka nimi research_warehouse on kohdetaulukon luontipaikka.

Voit luoda uuden taulukon, joka käyttää kolmiosaista nimeämistä tietojen yhdistämiseksi näiden työtilaresurssien taulukoista:

CREATE TABLE research_warehouse.dbo.taxi_trips
AS
SELECT *
FROM taxi_lakehouse.dbo.TaxiTrips AS latest
INNER JOIN reference_warehouse.dbo.TaxiTrips AS reference
ON latest.vendorId_lpep = reference.vendorId_lpep;

Lisätietoja varastojen välisille kyselyille on artikkelissa Tietokantojen välisen SQL-kyselyn kirjoittaminen.

Auditoi ja valvo T-SQL:n vastaanottoa

Sekä CTAS että INSERT ... SELECT T-SQL:llä suoritetut toiminnot näkyvät varastokyselyhistoriassa/toiminnassa, ja niitä voidaan seurata yhdessä muiden varastotoimintojen kanssa.

Tietojen käsittelyasetukset

Muita tapoja siirtää dataa varastoon ovat: