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 Bing 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];
Näemme tämän uuden taulukon perusteella, että Yhdysvallat havaitsi varmistettumpia tapauksia kaikkina vuosina kuukauden January
aikana, 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;
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.