Szybki start: zbiorcze ładowanie danych przy użyciu instrukcji COPY

Tip

Microsoft Fabric Data Warehouse to magazyn relacyjny w skali przedsiębiorstwa na podstawie bazy danych data lake z architekturą gotową do użycia w przyszłości, wbudowaną sztuczną inteligencją i nowymi funkcjami. Jeśli dopiero zaczynasz korzystać z magazynowania danych, zacznij od Fabric Data Warehouse. Istniejące obciążenia dedykowanej puli SQL mogą zostać zaktualizowane do Fabric, aby uzyskać dostęp do nowych możliwości w zakresie nauki o danych, analizy w czasie rzeczywistym i raportowania.

W tym przewodniku szybkiego startu, masz możliwość zbiorczego załadowania danych do dedykowanej puli SQL przy użyciu prostej i elastycznej instrukcji COPY do szybkiego pozyskiwania danych. Instrukcja COPY jest zalecanym narzędziem do ładowania, ponieważ umożliwia bezproblemowe i elastyczne ładowanie danych, zapewniając następujące funkcje:

  • Zezwalaj użytkownikom z niższymi uprawnieniami uprzywilejowanymi na ładowanie bez konieczności ścisłego kontrolowania uprawnień do magazynu danych
  • Korzystanie tylko z pojedynczej instrukcji języka T-SQL bez konieczności tworzenia dodatkowych obiektów bazy danych
  • Korzystanie z bardziej precyzyjnego modelu uprawnień bez ujawniania kluczy konta magazynowego za pomocą współdzielonych sygnatur dostępu (SAS)
  • Określ inne konto magazynu dla lokalizacji ERRORFILE (REJECTED_ROW_LOCATION)
  • Dostosowywanie wartości domyślnych dla każdej kolumny docelowej i określanie pól danych źródłowych do załadowania do określonych kolumn docelowych
  • Określanie niestandardowego terminatora wierszy dla plików CSV
  • Ograniczniki ciągu ucieczki, pola i wiersza dla plików CSV
  • Korzystanie z formatów daty programu SQL Server dla plików CSV
  • Określ znaki wieloznaczne i wiele plików w ścieżce lokalizacji przechowywania

Wymagania wstępne

W tym przewodniku Szybki start założono, że masz już dedykowaną pulę SQL. Jeśli dedykowana pula SQL nie została utworzona, użyj instrukcji szybkiego startu Tworzenie i łączenie — portal.

Konfigurowanie wymaganych uprawnień

-- List the permissions for your user
select  princ.name
,       princ.type_desc
,       perm.permission_name
,       perm.state_desc
,       perm.class_desc
,       object_name(perm.major_id)
from    sys.database_principals princ
left join
        sys.database_permissions perm
on      perm.grantee_principal_id = princ.principal_id
where name = '<yourusername>';

--Make sure your user has the permissions to CREATE tables in the [dbo] schema
GRANT CREATE TABLE TO <yourusername>;
GRANT ALTER ON SCHEMA::dbo TO <yourusername>;

--Make sure your user has ADMINISTER DATABASE BULK OPERATIONS permissions
GRANT ADMINISTER DATABASE BULK OPERATIONS TO <yourusername>

--Make sure your user has INSERT permissions on the target table
GRANT INSERT ON <yourtable> TO <yourusername>

Tworzenie tabeli docelowej

W tym przykładzie będziemy ładować dane z zestawu danych nowojorskich taksówek. Załadujemy tabelę o nazwie Trip, która reprezentuje przejazdy taksówkami w ciągu jednego roku. Uruchom następujące polecenie, aby utworzyć tabelę:

CREATE TABLE [dbo].[Trip]
(
    [DateID] int NOT NULL,
    [MedallionID] int NOT NULL,
    [HackneyLicenseID] int NOT NULL,
    [PickupTimeID] int NOT NULL,
    [DropoffTimeID] int NOT NULL,
    [PickupGeographyID] int NULL,
    [DropoffGeographyID] int NULL,
    [PickupLatitude] float NULL,
    [PickupLongitude] float NULL,
    [PickupLatLong] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [DropoffLatitude] float NULL,
    [DropoffLongitude] float NULL,
    [DropoffLatLong] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [PassengerCount] int NULL,
    [TripDurationSeconds] int NULL,
    [TripDistanceMiles] float NULL,
    [PaymentType] varchar(50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
    [FareAmount] money NULL,
    [SurchargeAmount] money NULL,
    [TaxAmount] money NULL,
    [TipAmount] money NULL,
    [TollsAmount] money NULL,
    [TotalAmount] money NULL
)
WITH
(
    DISTRIBUTION = ROUND_ROBIN,
    CLUSTERED COLUMNSTORE INDEX
);

Uruchom instrukcję copy

Uruchom następującą instrukcję COPY, która załaduje dane z konta usługi Azure Blob Storage do tabeli Trip.

COPY INTO [dbo].[Trip] FROM 'https://nytaxiblob.blob.core.windows.net/2013/Trip2013/'
WITH (
   FIELDTERMINATOR='|',
   ROWTERMINATOR='0x0A'
) OPTION (LABEL = 'COPY: dbo.trip');

Monitorowanie obciążenia

Sprawdź, czy obciążenie postępuje, okresowo uruchamiając następujące zapytanie:

SELECT  r.[request_id]                           
,       r.[status]                               
,       r.resource_class                         
,       r.command
,       sum(bytes_processed) AS bytes_processed
,       sum(rows_processed) AS rows_processed
FROM    sys.dm_pdw_exec_requests r
              JOIN sys.dm_pdw_dms_workers w
                     ON r.[request_id] = w.request_id
WHERE [label] = 'COPY: dbo.trip' and session_id <> session_id() and type = 'WRITER'
GROUP BY r.[request_id]                           
,       r.[status]                               
,       r.resource_class                         
,       r.command;

Następne kroki