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 yearSpalten , 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 Januarybeobachtet 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;

Screenshot der Abfrageergebnisse mit der Anzahl der Infektionen nach Monat im USA, nach Monat sortiert, in absteigender Reihenfolge. Die Monatszahl 1 wird oben angezeigt.

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 NULLgeladen. 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_nameerreicht 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.

Nächste Schritte