Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:✅ Magazyn danych w usłudze Microsoft Fabric
Język Transact-SQL oferuje opcje, które pozwalają ładować dane na dużą skalę z istniejących tabel w Lakehouse i magazynie do nowych tabel w magazynie. Te opcje są wygodne, jeśli musisz utworzyć nowe wersje tabeli z zagregowanymi danymi, wersjami tabel z podzbiorem wierszy lub utworzyć tabelę w wyniku złożonego zapytania. Przyjrzyjmy się kilku przykładom.
Wybierz instrukcję pozyskiwania T-SQL
Język T-SQL oferuje bogaty zestaw instrukcji, które możesz wykorzystać do pobierania i transformacji danych w swoim magazynie. Możesz ładować dane do nowych lub istniejących tabel, dodawać nowe wiersze, przekształcać dane podczas importu danych lub synchronizować zmiany z istniejącymi danymi. Magazyn w Microsoft Fabric obsługuje następujące instrukcje ładowania danych T-SQL:
-
CREATE TABLE AS SELECT(CTAS) polecenie, które umożliwia utworzenie nowej tabeli w magazynie na podstawie danych wyjściowych poleceniaSELECT. -
SELECT INTOklauzula query, która umożliwia wybranie wyników z dowolnego źródła tabeli i przekierowanie wyników do nowej tabeli. Jest to standardowa funkcja w języku T-SQL. -
INSERT ... SELECTdodaje wyniki zapytań do tabeli docelowej. Użyj tej instrukcji, gdy chcesz załadować nową partię lub podzbiór inkrementalny do tabeli, której schemat kontrolujesz. -
MERGEporównuje wiersze źródłowe i docelowe oraz warunkowo wstawia, aktualizuje lub usuwa wiersze docelowe. Użyj tej instrukcji, gdy musisz zsynchronizować nowe i zmienione wiersze lub pogodzić miejsce docelowe z kompletną migawką źródła.
Wybierz instrukcję na podstawie tego, czy tabela docelowa już istnieje i czy chcesz utworzyć, dołączyć lub zsynchronizować dane. Źródłem każdej instrukcji jest zapytanie T-SQL. Możesz używać obsługiwanych wyrażeń, funkcji, filtrów, łączenia i agregacji do kształtowania danych podczas ingestii danych. Możesz użyć następujących źródeł danych, aby odczytać dane w swoich instrukcjach T-SQL:
- Odczytywanie tabeli magazynu, na przykład tabeli przejściowej.
- Odczytywanie folderu Delta Lake Lakehouse przy użyciu autogenerowanej tabeli w endpointzie analityki SQL dla Lakehouse.
- Odczytywanie plików CSV, Parquet lub JSONL bezpośrednio z usługi Azure Data Lake lub Azure Blob Storage przy użyciu funkcji
OPENROWSET.
Użyj CTAS do stworzenia tabeli
CTAS tworzy tabelę docelową i ładuje wyniki zapytań w jednej operacji.
W pierwszym przykładzie pokazano, jak utworzyć nową tabelę, która jest kopią istniejącej dbo.TaxiTrips tabeli, ale filtrowana tak, aby zawierała tylko dane z roku 2023:
CREATE TABLE dbo.TaxiTrips_2023
AS
SELECT *
FROM dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Użyj CTAS, aby utworzyć i zapolnić nową tabelę na podstawie wyników zapytań. Ta metoda jest przydatna, gdy tabela docelowa nie istnieje lub gdy chcesz zmaterializować przekształcone lub połączone dane z jednego lub więcej źródeł.
Użyj SELECT INTO do utworzenia tabeli
SELECT ... INTO tworzy także tabelę docelową z wyników zapytań:
SELECT *
INTO dbo.TaxiTrips_2023
FROM MyLakehouse.dbo.TaxiTrips
WHERE DATEPART(YEAR, tpep_pickup_datetime) = '2023';
Zarówno CTAS, jak i SELECT ... INTO wywnioskują kolumny docelowe na podstawie wyniku zapytania. Jawnie rzutuj wyrażenia, gdy typ docelowy wymaga określonego typu danych, precyzji lub długości.
Użyj INSERT ... SELECT, aby dodać dane
INSERT ... SELECT Ładuje wyniki zapytania do istniejącej tabeli.
Możesz dopisywać dane do tabeli, przekształcając dane z zewnętrznego, publicznie dostępnego pliku Parquet:
INSERT INTO dbo.<table name>
SELECT *
FROM OPENROWSET(BULK 'https://<storage account>.blob.core.windows.net/public/<subfolder>/<file name>.parquet') AS data;
Użyj MERGE do synchronizacji danych
MERGE dopasowuje wiersze źródłowe i docelowe za pomocą stabilnego klucza. Poniższy wzorzec zakłada, że istnieje już dbo.DimCustomer z kolumnami używanymi przez tę instrukcję. Upewnij się, że źródło zwraca nie więcej niż jeden wiersz dla każdego klucza docelowego.
MERGE dbo.DimCustomer AS target
USING staging.Customers AS source
ON target.CustomerID = source.CustomerID
WHEN MATCHED AND source.ModifiedDate > target.ModifiedDate THEN
UPDATE SET CustomerName = source.CustomerName, City = source.City,
ModifiedDate = source.ModifiedDate
WHEN NOT MATCHED BY TARGET THEN
INSERT (CustomerID, CustomerName, City, ModifiedDate)
VALUES (source.CustomerID, source.CustomerName, source.City, source.ModifiedDate);
Używaj WHEN NOT MATCHED BY SOURCE THEN DELETE tylko wtedy, gdy zapytanie źródłowe reprezentuje pełny autorytatywny zbiór danych dla wierszy w zakresie. Nie używaj tej klauzuli z inkrementalnym wsadem źródłowym, ponieważ wiersze docelowe nieobecne w partii mogą zostać usunięte.
Wybierz źródło danych
Instrukcje ingestii działają spójnie we wszystkich obsługiwanych typach źródeł. Zmienia się tylko odniesienie źródłowe.
Pliki w jeziorze danych
Używaj OPENROWSET do odczytu plików Parquet, CSV lub JSONL w OneLake, Azure Data Lake Storage lub Azure Blob Storage. Możesz wskazać jeden plik, wiele plików za pomocą znaków wieloznacznych lub foldery partycjonowane.
Aby poznać ścieżki plików, wnioskowanie schematów, filtrowanie partycji, funkcje metadanych oraz przykłady wszystkich czterech instrukcji ingestion, zobacz Ingest and transform lake data with OPENROWSET and T-SQL.
Tabele Delta w architekturze lakehouse
Endpoint analityki SQL w lakehouse udostępnia tabele Delty w swoim /Tables obszarze. Z magazynu w tym samym obszarze roboczym odwołaj się do tabeli, używając trzyczęściowej nazwy <lakehouse>.<schema>.<table>.
Nie ogranicza się to tylko do tabel Delta przechowywanych fizycznie w lakehouse. Tabele dostępne za pomocą skrótów OneLake w /Tables tym obszarze mogą również odwoływać się do danych przechowywanych gdzie indziej, w tym w obszarze lakehouse /Files, zewnętrznych pamięci masowych takich jak ADLS czy Amazon S3, danych lustrzanych oraz danych OneLake w innych przestrzeniach roboczych.
Dzięki tej architekturze możesz wysyłać zapytania do danych opartych na skrótach za pośrednictwem punktu końcowego analityki SQL usługi Lakehouse bez kopiowania danych do usługi Lakehouse.
W przypadku tworzenia tabel, ładowania przyrostowego i przykładów synchronizacji zobacz Pozyskiwanie tabel Delta Lake za pomocą języka T-SQL.
Tabele w bieżącej hurtowni
Użyj nazwy dwuczęściowej, na przykład <schema>.<table>, do pobierania danych z tabeli w bieżącej hurtowni.
Zobacz Pozyskiwanie danych z tabel magazynu i dublowanych baz danych za pomocą języka T-SQL, aby zapoznać się z przykładami Bronze-to-Silver-to-Gold, które łączą, agregują i inkrementalnie ładują tabele w jednym magazynie.
Lustrzane bazy danych i inne elementy przestrzeni roboczej
Aby pobrać dane z lustrzanej bazy danych, innej hurtowni danych lub innego obsługiwanego elementu w tym samym obszarze roboczym, należy dodać element do Eksploratora i użyć nazwy trzyczęściowej <item>.<schema>.<table>.
Aby dowiedzieć się więcej na temat zapytań między hurtowniami danych, zobacz Jak napisać zapytanie SQL obejmujące wiele baz danych.
Przykłady używania obu wzorców nazewnictwa można znaleźć w artykule Pozyskiwanie danych z tabel magazynu danych i dublowanych baz danych przy użyciu języka T-SQL.
Inspekcja i monitorowanie ingestowania kodu T-SQL
CTAS, SELECT ... INTO, INSERT ... SELECT, oraz operacje MERGE pojawiają się w historii/aktywności zapytań magazynu. Korzystaj z analiz zapytań, aby przejrzeć szczegóły wykonania i rozwiązywać problemy z zapytaniami pozyskiwania danych.
Opcje pozyskiwania danych
Używaj pozyskiwania danych za pomocą języka T-SQL, gdy ładowanie danych obejmuje filtrowanie, konwersję typów, połączenia, obliczenia, agregację lub synchronizację. Wybierz inną opcję, jeśli: Inne sposoby pozyskiwania danych do twojego magazynu obejmują:
- Pozyskiwanie danych używając instrukcji COPY
- Pozyskiwanie danych przy użyciu potoków
- Pozyskiwanie danych przy użyciu przepływu danych
Treści powiązane
- Pozyskiwanie danych do magazynu
- Rozwiązywanie problemów z błędami importowania
- Pisanie zapytania SQL obejmującego wiele baz danych
- Pobieranie i transformacja danych z jeziora danych za pomocą OPENROWSET i T-SQL
- Pozyskiwanie tabel Delta Lake za pomocą języka T-SQL
- Pobieranie z tabel hurtowni danych i baz danych lustrzanych z T-SQL