Ingestování dat do vašeho skladu pomocí jazyka Transact-SQL
Platí pro:✅ Warehouse v Microsoft Fabric
Jazyk Transact-SQL nabízí možnosti, které můžete použít k načtení dat ve velkém měřítku z existujících tabulek ve vašem lakehouse a skladu do nových tabulek ve skladu. Tyto možnosti jsou vhodné, pokud potřebujete vytvořit nové verze tabulky s agregovanými daty, verzemi tabulek s podmnožinou řádků nebo vytvořit tabulku v důsledku složitého dotazu. Pojďme se podívat na některé příklady.
Vytvoření nové tabulky s výsledkem dotazu pomocí příkazu CREATE TABLE AS SELECT (CTAS)
Příkaz CREATE TABLE AS SELECT (CTAS) umožňuje vytvořit novou tabulku ve skladu z výstupu SELECT
příkazu. Spouští operaci příjmu dat do nové tabulky paralelně, takže je vysoce efektivní pro transformaci dat a vytváření nových tabulek ve vašem pracovním prostoru.
Poznámka:
Příklady v tomto článku používají ukázkovou datovou sadu Covid-19 Bingu. Pokud chcete načíst ukázkovou datovou sadu, postupujte podle kroků v Ingestování dat do vašeho skladu pomocí příkazu COPY a vytvořte ukázková data do vašeho skladu.
První příklad ukazuje, jak vytvořit novou tabulku, která je kopií existující dbo.[bing_covid-19_data_2023]
tabulky, ale filtrovaná na data pouze z roku 2023:
CREATE TABLE [dbo].[bing_covid-19_data_2023]
AS
SELECT *
FROM [dbo].[bing_covid-19_data]
WHERE DATEPART(YEAR,[updated]) = '2023';
Můžete také vytvořit novou tabulku s novými year
month
dayofmonth
, sloupci a hodnotami získanými ze updated
sloupce ve zdrojové tabulce. To může být užitečné, pokud se pokoušíte vizualizovat data o infekcích podle roku nebo zobrazit měsíce, kdy se pozorují případy COVID-19:
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];
V dalším příkladu můžete vytvořit novou tabulku, která shrnuje počet případů pozorovaných v jednotlivých měsících bez ohledu na rok, abyste zjistili, jak sezónnost ovlivňuje rozpětí v dané zemi/oblasti. Používá tabulku vytvořenou v předchozím příkladu s novým month
sloupcem jako zdrojem:
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];
Na základě této nové tabulky vidíme, že USA zaznamenal více potvrzených případů za všechny roky v měsíci January
, po kterém následuje December
a October
. April
je měsíc s nejnižším celkovým počtem případů:
SELECT * FROM [dbo].[infections_by_month]
WHERE [country_region] = 'United States'
ORDER BY [confirmed_sum] DESC;
Další příklady a odkazy na syntaxi najdete v tématu CREATE TABLE AS SELECT (Transact-SQL).
Ingestování dat do existujících tabulek pomocí dotazů T-SQL
Předchozí příklady vytvářejí nové tabulky na základě výsledku dotazu. Pokud chcete replikovat příklady, ale v existujících tabulkách, insert... Lze použít vzor SELECT . Například následující kód ingestuje nová data do existující tabulky:
INSERT INTO [dbo].[bing_covid-19_data_2023]
SELECT * FROM [dbo].[bing_covid-19_data]
WHERE [updated] > '2023-02-28';
Kritéria dotazu pro příkaz SELECT
mohou být libovolný platný dotaz, pokud výsledné typy sloupců dotazu odpovídají sloupcům v cílové tabulce. Pokud jsou zadány názvy sloupců a obsahují pouze podmnožinu sloupců z cílové tabulky, všechny ostatní sloupce se načtou jako NULL
. Další informace naleznete v tématu Použití funkce INSERT INTO... Select to Bulk Import data with minimal logging and parallelism.
Příjem dat z tabulek v různých skladech a v jezeře
Pro CREATE TABLE AS SELECT i INSERT... PŘÍKAZ SELECT může také odkazovat na tabulky ve skladech, které se liší od skladu, kde je cílová tabulka uložená, pomocí dotazů mezi sklady.SELECT
Toho lze dosáhnout pomocí třídílné konvence [warehouse_or_lakehouse_name.][schema_name.]table_name
pojmenování . Předpokládejme například, že máte následující prostředky pracovního prostoru:
- Jezero s názvem
cases_lakehouse
s nejnovějšími daty případu. - Sklad s názvy
reference_warehouse
s tabulkami používanými pro referenční data. - Sklad s názvem
research_warehouse
, ve kterém se vytvoří cílová tabulka.
Můžete vytvořit novou tabulku, která používá třídílné pojmenování ke kombinování dat z tabulek v těchto prostředcích pracovního prostoru:
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];
Další informace o dotazech napříč sklady najdete v tématu Zápis dotazu SQL napříč databázemi.