Jaa


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 käyttämällä CREATE TABLE AS SELECT (CTAS) -toimintoa

LUO TAULUKKO SELECT (CTAS) -lausekkeen avulla voit luoda uuden taulukon varastoosi lausekkeen SELECT tuloksen perusteella. Se suorittaa käsittelytoiminnon uuteen taulukkoon rinnakkain, mikä tekee siitä erittäin tehokkaan tietojen muuntamiseen ja uusien taulukoiden luomiseen työtilassasi.

Muistiinpano

Tämän artikkelin esimerkeissä käytetään Bingin COVID-19-mallitietojoukkoa. Jos haluat ladata mallitietojoukon, luo mallitiedot varastoosi COPY-lausekkeen avulla noudattamalla ohjeita kohdassa Tietojen käyttö varastossa.

Ensimmäisessä esimerkissä kuvataan, miten luodaan uusi taulukko, joka on kopio olemassa olevasta dbo.[bing_covid-19_data_2023] taulukosta, mutta suodatettu vain vuoden 2023 tietoihin:

CREATE TABLE [dbo].[bing_covid-19_data_2023]
AS
SELECT * 
FROM [dbo].[bing_covid-19_data] 
WHERE DATEPART(YEAR,[updated]) = '2023';

Voit myös luoda uuden taulukon uusilla year, month, dayofmonth -sarakkeilla, joiden arvot on saatu lähdetaulukon sarakkeesta updated . Tästä voi olla hyötyä, jos yrität visualisoida infektiotietoja vuoden mukaan tai nähdä kuukaudet, jolloin merkittävimmät COVID-19-tapaukset on havaittu:

CREATE TABLE [dbo].[bing_covid-19_data_with_year_month_day]
AS
SELECT DATEPART(YEAR,[updated]) [year], DATEPART(MONTH,[updated]) [month], DATEPART(DAY,[updated]) [dayofmonth], * 
FROM [dbo].[bing_covid-19_data];

Toinen esimerkki on, että voit luoda uuden taulukon, joka tekee yhteenvedon kussakin kuussa havaittujen tapausten määrästä vuodesta riippumatta. Näin voit arvioida kausivaihtelun vaikutusta leviämiseen tietyssä maassa tai tietyllä alueella. Se käyttää edellisessä esimerkissä luotua taulukkoa uuden month sarakkeen kanssa lähteenä:

CREATE TABLE [dbo].[infections_by_month]
AS
SELECT [country_region],[month], SUM(CAST(confirmed as bigint)) [confirmed_sum]
FROM [dbo].[bing_covid-19_data_with_year_month_day]
GROUP BY [country_region],[month];

Tämän uuden taulukon perusteella voimme huomata, että Yhdysvallat havainnut varmistettuja tapauksia kaikkina vuosina kuukauden Januaryaikana, jota December seuraavat ja October. April on kuukausi, jossa palvelupyyntöjen kokonaismäärä on pienin:

SELECT * FROM [dbo].[infections_by_month]
WHERE [country_region] = 'United States'
ORDER BY [confirmed_sum] DESC;

Näyttökuva kyselyn tuloksista, joka näyttää infektioiden määrän kuukauden mukaan Yhdysvallat kuukauden mukaan laskevassa järjestyksessä. Kuukauden numero 1 näkyy ylimpänä.

Katso lisää esimerkkejä ja syntaksiviittaus kohdasta LUO TAULUKKO SELECT -funktiona (Transact-SQL).

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

Edellisissä esimerkeissä luodaan uusia taulukoita kyselyn tuloksen perusteella. Replikoi esimerkit mutta olemassa olevissa taulukoissa lisäämällä... SELECT-mallia voi käyttää. Esimerkiksi seuraava koodi hakee uudet tiedot aiemmin luotuun taulukkoon:

INSERT INTO [dbo].[bing_covid-19_data_2023]
SELECT * FROM [dbo].[bing_covid-19_data] 
WHERE [updated] > '2023-02-28';

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ä.

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

Sekä LUO TAULUKKO NIMELLÄ VALITSE - ETTÄ LISÄÄ... SELECT, SELECT lauseke voi 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:

  • Nimetty Lakehouse cases_lakehouse , joka sisältää uusimmat tiedot.
  • 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].[cases_by_continent]
AS
SELECT 
FROM [cases_lakehouse].[dbo].[bing_covid-19_data] cases
INNER JOIN [reference_warehouse].[dbo].[bing_covid-19_data] reference
ON cases.[iso3] = reference.[countrycode];

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