Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tradiční vyhrazené fondy SQL SMP používají proces extrakce, transformace a načítání (ETL) pro načítání dat. Synapse SQL v rámci Azure Synapse Analytics využívá architekturu distribuovaného zpracování dotazů, která využívá škálovatelnost a flexibilitu výpočetních a úložných prostředků.
Použití procesu extrakce, načítání a transformace (ELT) používá integrované funkce pro zpracování distribuovaných dotazů a eliminuje prostředky potřebné pro transformaci dat před načtením.
I když vyhrazené fondy SQL podporují mnoho metod načítání, včetně oblíbených možností SQL Serveru, jako jsou bcp a rozhraní SqlBulkCopy API, nejrychlejší a nejškálovatelnější způsob načítání dat je prostřednictvím externích tabulek PolyBase a příkazu COPY.
Pomocí PolyBase a příkazu COPY můžete přistupovat k externím datům uloženým ve službě Azure Blob Storage nebo Azure Data Lake Store prostřednictvím jazyka T-SQL. Pro co největší flexibilitu při načítání doporučujeme použít příkaz COPY.
Co je ELT?
Extrakce, načtení a transformace (ELT) je proces, pomocí kterého se data extrahují ze zdrojového systému, načtou se do vyhrazeného fondu SQL a pak se transformují.
Základní kroky pro implementaci ELT jsou:
- Extrakce zdrojových dat do textových souborů
- Uložte data do Azure Blob Storage nebo Azure Data Lake Store.
- Připravte data na načtení.
- Při použití PolyBase nebo příkazu COPY načtěte data do staging tabulek.
- Převeďte data.
- Vložení dat do produkčních tabulek
Kurz načítání najdete v tématu načítání dat z úložiště objektů blob v Azure.
1. Extrahování zdrojových dat do textových souborů
Získávání dat ze zdrojového systému závisí na umístění úložiště. Cílem je přesunout data do podporovaných textových souborů s oddělovači nebo do souborů CSV.
Podporované formáty souborů
Pomocí PolyBase a příkazu COPY můžete načíst data z textových souborů s oddělovači nebo ve formátu CSV s kódováním UTF-8 a UTF-16. Kromě textových souborů s oddělovači nebo souborů CSV se načítá z formátů souborů Hadoop, jako jsou ORC a Parquet. PolyBase a příkaz COPY mohou také načíst data z komprimovaných souborů Gzip a Snappy.
Rozšířené formáty ASCII, formát s pevnou šířkou a vnořené formáty, jako jsou WinZip nebo XML, nejsou podporované. Pokud exportujete z SQL Serveru, můžete data exportovat do textových souborů s oddělovači pomocí nástroje příkazového řádku bcp.
2. Přisadíte data do služby Azure Blob Storage nebo Azure Data Lake Store.
Chcete-li umístit data do služby Azure Storage, můžete je přesunout do Azure Blob Storage nebo Azure Data Lake Store Gen2. V obou umístěních by data měla být uložena v textových souborech. PolyBase a příkaz COPY mohou načítat data z libovolného umístění.
Nástroje a služby, které můžete použít k přesunu dat do Azure Storage:
- Služba Azure ExpressRoute vylepšuje propustnost sítě, výkon a předvídatelnost. ExpressRoute je služba, která směruje vaše data prostřednictvím vyhrazeného privátního připojení do Azure. Připojení ExpressRoute nesměrují data přes veřejný internet. Připojení nabízejí větší spolehlivost, rychlejší rychlost, nižší latenci a vyšší zabezpečení než typická připojení přes veřejný internet.
- Nástroj AzCopy přesune data do služby Azure Storage přes veřejný internet. To funguje, pokud jsou velikosti dat menší než 10 TB. Pokud chcete s nástrojem AzCopy pravidelně provádět zatížení, otestujte rychlost sítě, abyste zjistili, jestli je to přijatelné.
- Azure Data Factory (ADF) má bránu, kterou můžete nainstalovat na místní server. Potom můžete vytvořit kanál pro přesun dat z místního serveru do Služby Azure Storage. Informace o použití služby Data Factory s vyhrazenými fondy SQL najdete v tématu Načítání dat pro vyhrazené fondy SQL.
3. Příprava dat na načtení
Před načtením dat do účtu úložiště je možná budete muset vyčistit a připravit. Přípravu dat je možné provést, když jsou vaše data ve zdroji, při exportu dat do textových souborů nebo po tom, co jsou data ve službě Azure Storage. Nejsnadnější je pracovat s daty co nejdříve v procesu.
Definování tabulek
Nejprve definujte tabulky, které načítáte do vyhrazeného fondu SQL při použití příkazu COPY.
Pokud používáte PolyBase, musíte před načtením definovat externí tabulky ve vyhrazeném fondu SQL. PolyBase používá externí tabulky k definování a přístupu k datům ve službě Azure Storage. Externí tabulka je podobná zobrazení databáze. Externí tabulka obsahuje schéma tabulky a odkazuje na data uložená mimo vyhrazený fond SQL.
Definování externích tabulek zahrnuje zadání zdroje dat, formátu textových souborů a definic tabulek. Články s referenčními informacemi o syntaxi jazyka T-SQL, které budete potřebovat, jsou:
Při načítání souborů Parquet použijte následující mapování datových typů SQL:
| Typ Parquet | Logický typ Parquet (poznámka) | Datový typ SQL |
|---|---|---|
| BOOLEAN | bit | |
| BINÁRNÍ / BYTE_ARRAY | varbinary | |
| DVOJITÝ | float | |
| FLOAT | skutečný | |
| INT32 | int | |
| INT64 | bigint | |
| INT96 | datetime2 | |
| FIXED_LEN_BYTE_ARRAY | binární | |
| BINÁRNÍ | UTF8 |
nvarchar |
| BINÁRNÍ | STRING |
nvarchar |
| BINÁRNÍ | ENUM |
nvarchar |
| BINÁRNÍ | UUID |
uniqueidentifier |
| BINÁRNÍ | DECIMAL |
decimal |
| BINÁRNÍ | JSON |
nvarchar(MAX) |
| BINÁRNÍ | BSON |
varbinary(MAX) |
| FIXED_LEN_BYTE_ARRAY | DECIMAL |
decimal |
| BYTE_ARRAY | INTERVAL |
varchar(MAX) |
| INT32 | INT(8, true) |
smallint |
| INT32 | INT(16, true) |
smallint |
| INT32 | INT(32, true) |
int |
| INT32 | INT(8, false) |
tinyint |
| INT32 | INT(16, false) |
int |
| INT32 | INT(32, false) |
bigint |
| INT32 | DATE |
datum |
| INT32 | DECIMAL |
decimal |
| INT32 | TIME (MILLIS) |
Čas |
| INT64 | INT(64, true) |
bigint |
| INT64 | INT(64, false ) |
decimal(20,0) |
| INT64 | DECIMAL |
decimal |
| INT64 | TIME (MILLIS) |
Čas |
| INT64 | TIMESTAMP (MILLIS) |
datetime2 |
| Komplexní typ | LIST |
varchar(max) |
| Komplexní typ | MAP |
varchar(max) |
Důležité
- Vyhrazené fondy SQL momentálně nepodporují datové typy Parquet s přesností na úrovni MICROS a NANOS.
- Pokud se typy neshodují mezi Parquet a SQL nebo pokud máte nepodporované datové typy Parquet, může dojít k následující chybě:
HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: ClassCastException:... - Načtení hodnoty mimo rozsah 0–127 do sloupce typu tinyint pro formát souboru Parquet a ORC není podporováno.
Příklad vytváření externích objektů najdete v tématu Vytvoření externích tabulek.
Formátování textových souborů
Pokud používáte PolyBase, musí externí objekty definované zarovnat řádky textových souborů s externí tabulkou a definicí formátu souboru. Data v každém řádku textového souboru musí být zarovnaná s definicí tabulky.
Formátování textových souborů:
- Pokud data pocházejí z nerelačního zdroje, musíte je transformovat na řádky a sloupce. Ať už data pocházejí z relačního nebo nerelačního zdroje, musí se data transformovat tak, aby odpovídala definicům sloupců pro tabulku, do které chcete data načíst.
- Naformátujte data v textovém souboru tak, aby odpovídala sloupcům a datovým typům v cílové tabulce. Nesprávné zarovnání mezi datovými typy v externích textových souborech a tabulkou vyhrazeného fondu SQL způsobí odmítnutí řádků během načítání.
- Pole v textovém souboru oddělte ukončovacím znakem. Nezapomeňte použít znak nebo posloupnost znaků, která není ve zdrojových datech nalezena. Použijte ukončovací znak, který jste zadali s CREATE EXTERNAL FILE FORMAT.
4. Načtení dat pomocí PolyBase nebo příkazu COPY
Osvědčeným postupem je načíst data do pracovní tabulky. Pracovní tabulky umožňují zpracovávat chyby bez zásahu do produkčních tabulek. Přípravná tabulka také umožňuje použít vyhrazenou architekturu paralelního zpracování fondu SQL pro transformace dat před vložením dat do produkčních tabulek.
Možnosti načítání
K načtení dat můžete použít některou z těchto možností načítání:
- Příkaz COPY je doporučený nástroj pro načítání, protože umožňuje bezproblémově a pružně načítat data. Příkaz má mnoho dalších možností načítání, které PolyBase neposkytuje. Podívejte se na výukový program TAXISLUŽBY NY COPY, který vás provede ukázkovým tutoriálem.
- PolyBase s T-SQL vyžaduje, abyste definovali externí datové objekty.
- Příkaz PolyBase a COPY ve spojení se službou Azure Data Factory (ADF) je dalším nástrojem pro orchestraci. Definuje potrubí a plánuje úlohy.
- PolyBase s SSIS funguje dobře, když jsou zdrojová data na SQL Serveru. Služba SSIS definuje mapování zdrojových a cílových tabulek a také orchestruje načítání. Pokud už máte balíčky SSIS, můžete balíčky upravit tak, aby fungovaly s novým cílem datového skladu.
- PolyBase s Azure Databricks přenáší data z tabulky do datového rámce Databricks nebo zapisuje data z datového rámce Databricks do tabulky pomocí PolyBase.
Projděte si dostupné kurzy:
- Kurz: Načtení externích dat pomocí Microsoft Entra ID
- Kurz: Načtení externích dat pomocí spravované identity
- Návod: Načtení datové sady New York Taxicab
- Kurz: Načtení dat do fondu SQL služby Azure Synapse Analytics
- Načtení maloobchodních dat společnosti Contoso do vyhrazených fondů SQL ve službě Azure Synapse Analytics
Další možnosti načítání
Kromě PolyBase a příkazu COPY můžete použít bcp nebo rozhraní SQLBulkCopy API. Nástroj bcp se načte přímo do databáze bez průchodu službou Azure Blob Storage a je určen pouze pro malé načtení.
Poznámka:
Výkon načítání těchto možností je pomalejší než PolyBase a příkaz COPY.
5. Transformace dat
Zatímco jsou data v přechodové tabulce, proveďte transformace, které vaše pracovní zatížení vyžaduje. Pak přesuňte data do produkční tabulky.
6. Vložte data do produkčních tabulek.
INSERT INTO ... Příkaz SELECT přesune data z pracovní tabulky do trvalé tabulky.
Při návrhu procesu ETL zkuste proces spustit na malé testovací ukázce. Zkuste extrahovat 1 000 řádků z tabulky do souboru, přesunout ho do Azure a pak ho zkuste načíst do pracovní tabulky.
Načítací řešení pro partnery
Mnoho našich partnerů má řešení pro načítání. Další informace najdete v seznamu našich partnerů pro řešení.