Zbiorcze kopiowanie z bazy danych za pomocą tabeli sterującej
DOTYCZY: Azure Data Factory Azure Synapse Analytics
Napiwek
Wypróbuj usługę Data Factory w usłudze Microsoft Fabric — rozwiązanie analityczne typu all-in-one dla przedsiębiorstw. Usługa Microsoft Fabric obejmuje wszystko, od przenoszenia danych do nauki o danych, analizy w czasie rzeczywistym, analizy biznesowej i raportowania. Dowiedz się, jak bezpłatnie rozpocząć nową wersję próbną !
Aby skopiować dane z magazynu danych w programie Oracle Server, Netezza, Teradata lub SQL Server do usługi Azure Synapse Analytics, musisz załadować ogromne ilości danych z wielu tabel. Zazwyczaj dane muszą być partycjonowane w każdej tabeli, aby można było ładować wiersze z wieloma wątkami równolegle z jedną tabelą. W tym artykule opisano szablon do użycia w tych scenariuszach.
Uwaga
Jeśli chcesz skopiować dane z niewielkiej liczby tabel z stosunkowo małym woluminem danych do usługi Azure Synapse Analytics, bardziej wydajne jest użycie narzędzia do kopiowania danych usługi Azure Data Factory. Szablon opisany w tym artykule jest bardziej niż potrzebny w tym scenariuszu.
Informacje o tym szablonie rozwiązania
Ten szablon pobiera listę źródłowych partycji bazy danych do skopiowania z tabeli kontroli zewnętrznej. Następnie iteruje każdą partycję w źródłowej bazie danych i kopiuje dane do miejsca docelowego.
Szablon zawiera trzy działania:
- Odnośnik pobiera listę pewnością partycji bazy danych z zewnętrznej tabeli kontroli.
- Program ForEach pobiera listę partycji z działania Lookup i iteruje każdą partycję do działanie Kopiuj.
- Skopiuj każdą partycję z magazynu źródłowej bazy danych do magazynu docelowego.
Szablon definiuje następujące parametry:
- Control_Table_Name to zewnętrzna tabela kontroli, która przechowuje listę partycji źródłowej bazy danych.
- Control_Table_Schema_PartitionID to nazwa kolumny w tabeli kontroli zewnętrznej, która przechowuje każdy identyfikator partycji. Upewnij się, że identyfikator partycji jest unikatowy dla każdej partycji w źródłowej bazie danych.
- Control_Table_Schema_SourceTableName to zewnętrzna tabela kontroli, która przechowuje każdą nazwę tabeli ze źródłowej bazy danych.
- Control_Table_Schema_FilterQuery to nazwa kolumny w tabeli kontroli zewnętrznej, która przechowuje zapytanie filtru w celu pobrania danych z każdej partycji w źródłowej bazie danych. Na przykład jeśli dane zostały podzielone na partycje według roku, zapytanie przechowywane w każdym wierszu może być podobne do "select * from datasource where LastModifytime = ''2015-01-01 00:00:00'" i LastModifytime ><= ''2015-12-31 23:59:59.999''.
- Data_Destination_Folder_Path to ścieżka, w której dane są kopiowane do magazynu docelowego (ma zastosowanie, gdy wybrana lokalizacja docelowa to "System plików" lub "Azure Data Lake Storage Gen1").
- Data_Destination_Container to ścieżka folderu głównego, do której dane są kopiowane w magazynie docelowym.
- Data_Destination_Directory to ścieżka katalogu w katalogu głównym, w którym dane są kopiowane do magazynu docelowego.
Ostatnie trzy parametry, które definiują ścieżkę w magazynie docelowym, są widoczne tylko wtedy, gdy wybrana lokalizacja docelowa to magazyn oparty na plikach. Jeśli wybierzesz pozycję "Azure Synapse Analytics" jako magazyn docelowy, te parametry nie są wymagane. Jednak nazwy tabel i schemat w usłudze Azure Synapse Analytics muszą być takie same jak w źródłowej bazie danych.
Jak używać tego szablonu rozwiązania
Utwórz tabelę kontrolną w programie SQL Server lub usłudze Azure SQL Database w celu przechowywania źródłowej listy partycji bazy danych na potrzeby kopiowania zbiorczego. W poniższym przykładzie w źródłowej bazie danych znajduje się pięć partycji. Trzy partycje są przeznaczone dla datasource_table, a dwa dla project_table. Kolumna LastModifytime służy do partycjonowania danych w tabeli datasource_table ze źródłowej bazy danych. Zapytanie używane do odczytywania pierwszej partycji to "select * from datasource_table where LastModifytime = ''2015-01-01 00:00:00'' i LastModifytime ><= ''2015-12-31 23:59:59.999''. Możesz użyć podobnego zapytania, aby odczytywać dane z innych partycji.
Create table ControlTableForTemplate ( PartitionID int, SourceTableName varchar(255), FilterQuery varchar(255) ); INSERT INTO ControlTableForTemplate (PartitionID, SourceTableName, FilterQuery) VALUES (1, 'datasource_table','select * from datasource_table where LastModifytime >= ''2015-01-01 00:00:00'' and LastModifytime <= ''2015-12-31 23:59:59.999'''), (2, 'datasource_table','select * from datasource_table where LastModifytime >= ''2016-01-01 00:00:00'' and LastModifytime <= ''2016-12-31 23:59:59.999'''), (3, 'datasource_table','select * from datasource_table where LastModifytime >= ''2017-01-01 00:00:00'' and LastModifytime <= ''2017-12-31 23:59:59.999'''), (4, 'project_table','select * from project_table where ID >= 0 and ID < 1000'), (5, 'project_table','select * from project_table where ID >= 1000 and ID < 2000');
Przejdź do szablonu Kopiowanie zbiorcze z bazy danych . Utwórz nowe połączenie z tabelą kontroli zewnętrznej, która została utworzona w kroku 1.
Utwórz nowe połączenie ze źródłową bazą danych, z której kopiujesz dane.
Utwórz nowe połączenie z docelowym magazynem danych, do którego kopiujesz dane.
Wybierz Użyj tego szablonu.
Zostanie wyświetlony potok, jak pokazano w poniższym przykładzie:
Wybierz pozycję Debuguj, wprowadź parametry, a następnie wybierz pozycję Zakończ.
Zostaną wyświetlone wyniki podobne do następującego przykładu:
(Opcjonalnie) Jeśli jako miejsce docelowe danych wybrano pozycję "Azure Synapse Analytics", musisz wprowadzić połączenie z usługą Azure Blob Storage na potrzeby przemieszczania, zgodnie z wymaganiami programu Polybase usługi Azure Synapse Analytics. Szablon automatycznie wygeneruje ścieżkę kontenera dla usługi Blob Storage. Sprawdź, czy kontener został utworzony po uruchomieniu potoku.