Läsa in mellanlagringstabeller
Ett av de vanligaste mönstren för att läsa in ett informationslager är att överföra data från källsystem till filer i en datasjö, mata in fildata i mellanlagringstabeller och sedan använda SQL-instruktioner för att läsa in data från mellanlagringstabellerna till dimensions- och faktatabellerna. Vanligtvis utförs datainläsning som en periodisk batchprocess där infogningar och uppdateringar av informationslagret samordnas för att ske med jämna mellanrum (till exempel dagligen, varje vecka eller varje månad).
Skapa mellanlagringstabeller
Många organiserade lager har standardstrukturer för mellanlagring av databasen och kan till och med använda ett specifikt schema för att mellanlagra data. I följande kodexempel skapas en mellanlagringstabell för produktdata som slutligen läses in i en dimensionstabell:
Kommentar
I det här exemplet skapas en mellanlagringstabell i standardschemat för dbo . Du kan också skapa separata scheman för mellanlagringstabeller med ett beskrivande namn, till exempel fas så att arkitekter och användare förstår syftet med schemat.
CREATE TABLE dbo.StageProduct
(
ProductID NVARCHAR(10) NOT NULL,
ProductName NVARCHAR(200) NOT NULL,
ProductCategory NVARCHAR(200) NOT NULL,
Color NVARCHAR(10),
Size NVARCHAR(10),
ListPrice DECIMAL NOT NULL,
Discontinued BIT NOT NULL
)
WITH
(
DISTRIBUTION = ROUND_ROBIN,
CLUSTERED COLUMNSTORE INDEX
);
Använda kommandot COPY
Du kan använda COPY-instruktionen för att läsa in data från datasjön, som du ser i följande exempel:
Kommentar
Detta är vanligtvis den rekommenderade metoden för att läsa in mellanlagringstabeller på grund av dess dataflöde med höga prestanda.
COPY INTO dbo.StageProduct
(ProductID, ProductName, ...)
FROM 'https://mydatalake.../data/products*.parquet'
WITH
(
FILE_TYPE = 'PARQUET',
MAXERRORS = 0,
IDENTITY_INSERT = 'OFF'
);
Dricks
Mer information om COPY-instruktionen finns i COPY (Transact-SQL) i Transact-SQL-dokumentationen.
Använda externa tabeller
I vissa fall, om data som ska läsas in lagras i filer med en lämplig struktur, kan det vara effektivare att skapa externa tabeller som refererar till filplatsen. På så sätt kan data läsas direkt från källfilerna i stället för att läsas in i relationsarkivet. I följande exempel visas hur du skapar en extern tabell som refererar till filer i den datasjö som är associerad med Azure Synapse Analytics-arbetsytan:
CREATE EXTERNAL TABLE dbo.ExternalStageProduct
(
ProductID NVARCHAR(10) NOT NULL,
ProductName NVARCHAR(10) NOT NULL,
...
)
WITH
(
DATE_SOURCE = StagedFiles,
LOCATION = 'folder_name/*.parquet',
FILE_FORMAT = ParquetFormat
);
GO
Dricks
Mer information om hur du använder externa tabeller finns i Använda externa tabeller med Synapse SQL i dokumentationen för Azure Synapse Analytics.