Gegevens uit Azure Data Lake Storage laden in toegewezen SQL-pools in Azure Synapse Analytics

In deze handleiding wordt beschreven hoe u de COPY-instructie gebruikt om gegevens uit Azure Data Lake Storage te laden. Raadpleeg de volgende documentatie voor snelle voorbeelden van het gebruik van de COPY-instructie voor alle verificatiemethoden: Gegevens veilig laden met behulp van toegewezen SQL-pools.

Notitie

Als u feedback wilt geven of problemen met de COPY-instructie wilt melden, stuurt u een e-mailbericht naar de volgende distributielijst: sqldwcopypreview@service.microsoft.com

  • Maak de doeltabel om gegevens uit Azure Data Lake Storage te laden.
  • Maak de COPY-instructie om gegevens in het datawarehouse te laden.

Als u nog geen abonnement op Azure hebt, maakt u een gratis Azure-account voordat u begint.

Voordat u begint

Download en installeer voordat u met deze zelfstudie begint de nieuwste versie van SSMS (SQL Server Management Studio).

U hebt het volgende nodig om deze zelfstudie te volgen:

  • Een toegewezen SQL-pool. Zie Een toegewezen SQL-pool maken en gegevens opvragen.
  • Een Data Lake Storage-account. Zie Aan de slag met Azure Data Lake Storage. Voor dit opslagaccount moet u een van de volgende referenties configureren of opgeven om te laden: een sleutel voor een opslagaccount, sas-sleutel (Shared Access Signature), een Azure Directory-toepassingsgebruiker of een Microsoft Entra-gebruiker met de juiste Azure-rol voor het opslagaccount.
  • Het opnemen van gegevens met behulp van de opdracht COPY in een Azure Storage-account dat gebruikmaakt van de nieuwe Functie DNS-partitie van Azure Storage resulteert in een fout. Richt een opslagaccount in een abonnement in dat geen GEBRUIK maakt van DNS-partitionering voor deze zelfstudie.

De doeltabel maken

Verbinding maken naar uw toegewezen SQL-pool en maak de doeltabel waarnaar u gaat laden. In dit voorbeeld maken we een productdimensietabel.

-- A: Create the target table
-- DimProduct
CREATE TABLE [dbo].[DimProduct]
(
    [ProductKey] [int] NOT NULL,
    [ProductLabel] [nvarchar](255) NULL,
    [ProductName] [nvarchar](500) NULL
)
WITH
(
    DISTRIBUTION = HASH([ProductKey]),
    CLUSTERED COLUMNSTORE INDEX
    --HEAP
);

De COPY-instructie maken

Verbinding maken naar uw toegewezen SQL-pool en voer de COPY-instructie uit. Ga naar de volgende documentatie voor een volledige lijst met voorbeelden: Gegevens veilig laden met behulp van toegewezen SQL-pools.

-- B: Create and execute the COPY statement

COPY INTO [dbo].[DimProduct]  
--The column list allows you map, omit, or reorder input file columns to target table columns.  
--You can also specify the default value when there is a NULL value in the file.
--When the column list is not specified, columns will be mapped based on source and target ordinality
(
    ProductKey default -1 1,
    ProductLabel default 'myStringDefaultWhenNull' 2,
    ProductName default 'myStringDefaultWhenNull' 3
)
--The storage account location where you data is staged
FROM 'https://storageaccount.blob.core.windows.net/container/directory/'
WITH  
(
   --CREDENTIAL: Specifies the authentication method and credential access your storage account
   CREDENTIAL = (IDENTITY = '', SECRET = ''),
   --FILE_TYPE: Specifies the file type in your storage account location
   FILE_TYPE = 'CSV',
   --FIELD_TERMINATOR: Marks the end of each field (column) in a delimited text (CSV) file
   FIELDTERMINATOR = '|',
   --ROWTERMINATOR: Marks the end of a record in the file
   ROWTERMINATOR = '0x0A',
   --FIELDQUOTE: Specifies the delimiter for data of type string in a delimited text (CSV) file
   FIELDQUOTE = '',
   ENCODING = 'UTF8',
   DATEFORMAT = 'ymd',
   --MAXERRORS: Maximum number of reject rows allowed in the load before the COPY operation is canceled
   MAXERRORS = 10,
   --ERRORFILE: Specifies the directory where the rejected rows and the corresponding error reason should be written
   ERRORFILE = '/errorsfolder',
) OPTION (LABEL = 'COPY: ADLS tutorial');

Columnstore-compressie optimaliseren

Tabellen worden standaard gedefinieerd als een geclusterde columnstore-index. Nadat het laden is voltooid, worden sommige gegevensrijen mogelijk niet gecomprimeerd in de columnstore. Er zijn verschillende redenen waarom dit kan gebeuren. Zie Columnstore-indexen beheren voor meer informatie.

Als u de queryprestaties en columnstore-compressie na een belasting wilt optimaliseren, bouwt u de tabel opnieuw op om de columnstore-index te dwingen alle rijen te comprimeren.


ALTER INDEX ALL ON [dbo].[DimProduct] REBUILD;

Statistieken optimaliseren

Het is raadzaam om statistieken met één kolom direct na een belasting te maken. Er zijn enkele keuzes voor statistieken. Als u bijvoorbeeld statistieken met één kolom maakt voor elke kolom, kan het lang duren om alle statistieken opnieuw op te bouwen. Als u weet dat bepaalde kolommen niet in querypredicaten worden opgenomen, kunt u het maken van statistieken over deze kolommen overslaan.

Als u besluit statistieken met één kolom te maken voor elke kolom van elke tabel, kunt u het voorbeeld van de opgeslagen procedurecode prc_sqldw_create_stats gebruiken in het artikel statistieken .

Het volgende voorbeeld is een goed uitgangspunt voor het maken van statistieken. Hiermee worden statistieken van één kolom gemaakt voor elke kolom in de dimensietabel en voor elke samenvoegingskolom in de feitentabellen. U kunt later altijd statistieken van één of meerdere kolommen toevoegen aan andere feitentabelkolommen.

Prestatie ontgrendeld!

U hebt gegevens in uw datawarehouse geladen. Helemaal goed!

Volgende stappen

Het laden van gegevens is de eerste stap bij het ontwikkelen van een datawarehouse-oplossing met behulp van Azure Synapse Analytics. Bekijk onze ontwikkelbronnen.

Bekijk de volgende documentatie voor meer laadvoorbeelden en -verwijzingen: