Erfassen von Daten in Ihrem Warehouse mithilfe von Transact-SQL
Gilt für: Warehouse in Microsoft Fabric
Die Transact-SQL-Sprache bietet Optionen, mit denen Sie Daten im großen Stil aus vorhandenen Tabellen in Ihrem Lakehouse und Warehouse in neue Tabellen in Ihrem Warehouse laden können. Diese Optionen sind praktisch, wenn Sie neue Versionen einer Tabelle mit aggregierten Daten, Versionen von Tabellen mit einer Teilmenge der Zeilen oder eine Tabelle als Ergebnis einer komplexen Abfrage erstellen müssen. Sehen wir uns einige Beispiele an.
Wichtig
Microsoft Fabric befindet sich derzeit in der VORSCHAU. Diese Informationen beziehen sich auf eine Vorabversion des Produkts, an der vor der Veröffentlichung noch wesentliche Änderungen vorgenommen werden können. Microsoft übernimmt keine Garantie, weder ausdrücklich noch stillschweigend, für die hier bereitgestellten Informationen.
Erstellen einer neuen Tabelle mit dem Ergebnis einer Abfrage mithilfe von CREATE TABLE AS SELECT (CTAS)
Mit der CREATE TABLE AS SELECT (CTAS) -Anweisung können Sie aus der Ausgabe einer SELECT
Anweisung eine neue Tabelle in Ihrem Warehouse erstellen. Sie führt den Erfassungsvorgang parallel in die neue Tabelle aus, sodass sie für die Datentransformation und die Erstellung neuer Tabellen in Ihrem Arbeitsbereich äußerst effizient ist.
Hinweis
In den Beispielen in diesem Artikel wird das Bing COVID-19-Beispieldataset verwendet. Führen Sie zum Laden des Beispieldatasets die Schritte unter Erfassen von Daten in Ihrem Warehouse mithilfe der COPY-Anweisung aus, um die Beispieldaten in Ihrem Warehouse zu erstellen.
Im ersten Beispiel wird veranschaulicht, wie eine neue Tabelle erstellt wird, die eine Kopie der vorhandenen dbo.[bing_covid-19_data_2023]
Tabelle ist, aber nur nach Daten aus dem Jahr 2023 gefiltert wird:
CREATE TABLE [dbo].[bing_covid-19_data_2023]
AS
SELECT *
FROM [dbo].[bing_covid-19_data]
WHERE DATEPART(YEAR,[updated]) = '2023';
Sie können auch eine neue Tabelle mit neuen year
Spalten , month
, dayofmonth
mit Werten erstellen, die aus updated
der Spalte in der Quelltabelle abgerufen werden. Dies kann hilfreich sein, wenn Sie versuchen, Infektionsdaten nach Jahr zu visualisieren oder Monate zu sehen, in denen die meisten COVID-19-Fälle beobachtet werden:
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];
Als weiteres Beispiel können Sie eine neue Tabelle erstellen, in der die Anzahl der in jedem Monat beobachteten Fälle unabhängig vom Jahr zusammengefasst wird, um zu bewerten, wie sich die Saisonalität auf die Verteilung in einem bestimmten Land/einer bestimmten Region auswirken kann. Es verwendet die im vorherigen Beispiel erstellte Tabelle mit der neuen month
Spalte als Quelle:
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];
Anhand dieser neuen Tabelle können wir sehen, dass die USA mehr bestätigte Fälle über alle Jahre hinweg im Monat von January
beobachtet haben, gefolgt von December
und October
. April
ist der Monat mit der niedrigsten Anzahl von Fällen insgesamt:
SELECT * FROM [dbo].[infections_by_month]
WHERE [country_region] = 'United States'
ORDER BY [confirmed_sum] DESC;
Weitere Beispiele und Syntaxreferenzen finden Sie unter CREATE TABLE AS SELECT (Transact-SQL).
Erfassen von Daten in vorhandenen Tabellen mit T-SQL-Abfragen
In den vorherigen Beispielen werden neue Tabellen basierend auf dem Ergebnis einer Abfrage erstellt. Um die Beispiele, aber in vorhandenen Tabellen zu replizieren, wird insert... Select-Muster kann verwendet werden. Der folgende Code erfasst beispielsweise neue Daten in einer vorhandenen Tabelle:
INSERT INTO [dbo].[bing_covid-19_data_2023]
SELECT * FROM [dbo].[bing_covid-19_data]
WHERE [updated] > '2023-02-28';
Die Abfragekriterien für die SELECT
-Anweisung können eine beliebige gültige Abfrage sein, sofern die resultierenden Abfragespaltentypen an den Spalten in der Zieltabelle ausgerichtet sind. Wenn Spaltennamen angegeben sind und nur eine Teilmenge der Spalten aus der Zieltabelle enthalten, werden alle anderen Spalten als NULL
geladen. Weitere Informationen finden Sie unter Verwenden von INSERT INTO... SELECT zum Massenimport von Daten mit minimaler Protokollierung und Parallelität.
Erfassen von Daten aus Tabellen in verschiedenen Warehouses und Lakehouses
Sowohl für CREATE TABLE AS SELECT als auch FÜR INSERT... SELECT, die SELECT
Anweisung kann auch auf Tabellen in Warehouses verweisen, die sich von dem Warehouse unterscheiden, in dem Ihre Zieltabelle gespeichert ist, indem sie lagerübergreifende Abfragen verwendet. Dies kann mithilfe der dreiteiligen Namenskonvention [warehouse_or_lakehouse_name.][schema_name.]table_name
erreicht werden. Angenommen, Sie verfügen über die folgenden Arbeitsbereichsressourcen:
- Ein Lakehouse mit dem Namen
cases_lakehouse
mit den neuesten Falldaten. - Ein Warehouse mit dem Namen
reference_warehouse
mit Tabellen, die für Verweisdaten verwendet werden. - Ein Warehouse mit dem Namen
research_warehouse
, in dem die Zieltabelle erstellt wird.
Eine neue Tabelle kann erstellt werden, die dreiteilige Benennung verwendet, um Daten aus Tabellen auf diesen Arbeitsbereichsressourcen zu kombinieren:
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];
Weitere Informationen zu warehouseübergreifenden Abfragen finden Sie unter Schreiben einer datenbankübergreifenden SQL-Abfrage.