Share via


Läsa in data från Azure Data Lake Storage i dedikerade SQL-pooler i Azure Synapse Analytics

Den här guiden beskriver hur du använder COPY-instruktionen för att läsa in data från Azure Data Lake Storage. Snabbexempel på hur du använder COPY-instruktionen för alla autentiseringsmetoder finns i följande dokumentation: Läs in data på ett säkert sätt med hjälp av dedikerade SQL-pooler.

Kommentar

Om du vill ge feedback eller rapportera problem med COPY-instruktionen skickar du ett e-postmeddelande till följande distributionslista: sqldwcopypreview@service.microsoft.com.

  • Skapa måltabellen för att läsa in data från Azure Data Lake Storage.
  • Skapa COPY-instruktionen för att läsa in data i informationslagret.

Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt Azure-konto innan du börjar.

Innan du börjar

Innan du börjar med de här självstudierna ska du ladda ned och installera den senaste versionen av SQL Server Management Studio (SSMS).

Om du vill köra den här självstudien behöver du:

  • En dedikerad SQL-pool. Se Skapa en dedikerad SQL-pool och fråga efter data.
  • Ett Data Lake Storage-konto. Se Kom igång med Azure Data Lake Storage. För det här lagringskontot måste du konfigurera eller ange någon av följande autentiseringsuppgifter som ska läsas in: En lagringskontonyckel, signatur för delad åtkomst (SAS), en Azure Directory-programanvändare eller en Microsoft Entra-användare som har rätt Azure-roll för lagringskontot.
  • För närvarande resulterar inmatning av data med kommandot COPY till ett Azure Storage-konto som använder den nya AZURE Storage DNS-partitionsfunktionen i ett fel. Etablera ett lagringskonto i en prenumeration som inte använder DNS-partitionering för den här självstudien.

Skapa måltabellen

Anslut till din dedikerade SQL-pool och skapa den måltabell som du ska läsa in till. I det här exemplet skapar vi en produktdimensionstabell.

-- 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
);

Skapa COPY-instruktionen

Anslut till din dedikerade SQL-pool och kör COPY-instruktionen. En fullständig lista med exempel finns i följande dokumentation: Läs in data på ett säkert sätt med hjälp av dedikerade SQL-pooler.

-- 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');

Optimera kolumnlagringskomprimering

Som standard definieras tabeller som ett grupperat kolumnlagringsindex. När en inläsning har slutförts kanske vissa datarader inte komprimeras till kolumnarkivet. Det finns en mängd olika orsaker till varför detta kan hända. Mer information finns i Hantera columnstore-index.

Om du vill optimera frågeprestanda och kolumnlagringskomprimering efter en belastning återskapar du tabellen för att tvinga kolumnlagringsindexet att komprimera alla rader.


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

Optimera statistik

Det är bäst att skapa statistik med en kolumn direkt efter en inläsning. Det finns vissa alternativ för statistik. Om du till exempel skapar enkolumnsstatistik för varje kolumn kan det ta lång tid att återskapa all statistik. Om du vet att vissa kolumner inte kommer att finnas i frågepredikat kan du hoppa över att skapa statistik för dessa kolumner.

Om du väljer att skapa enkolumnsstatistik för varje kolumn i varje tabell kan du använda kodexemplet prc_sqldw_create_stats för lagrad procedur i statistikartikeln.

Följande exempel är en bra utgångspunkt för att skapa statistik. Den skapar enkolumnsstatistik för varje kolumn i dimensionstabellen och på varje sammanfogningskolumn i faktatabellerna. Du kan alltid lägga till statistik med en eller flera kolumner till andra faktatabellkolumner senare.

Achievement olåst!

Du har läst in data i ditt informationslager. Bra jobbat!

Nästa steg

Att läsa in data är det första steget för att utveckla en informationslagerlösning med hjälp av Azure Synapse Analytics. Kolla in våra utvecklingsresurser.

Mer information om inläsningsexempel och referenser finns i följande dokumentation: