Adatok másolása és átalakítása Azure Synapse Analyticsben Azure Data Factory vagy Synapse-folyamatok használatával
A KÖVETKEZŐKRE VONATKOZIK:
Azure Data Factory Azure Synapse Analytics
Ez a cikk azt ismerteti, hogyan használhatja a másolási tevékenységet Azure Data Factory vagy Synapse-folyamatokban adatok másolására az Azure Synapse Analyticsből és az Azure Synapse Analyticsbe, és hogyan alakíthat át adatokat Azure Data Lake Storage Gen2 Adatfolyam használatával. A Azure Data Factory megismeréséhez olvassa el a bevezető cikket.
Támogatott képességek
Ez a Azure Synapse Analytics-összekötő a következő képességeket támogatja:
| Támogatott képességek | IR | Felügyelt privát végpont |
|---|---|---|
| Copy tevékenység (forrás/fogadó) | ① ② | ✓ |
| Adatfolyam leképezése (forrás/fogadó) | ① | ✓ |
| Keresési tevékenység | ① ② | ✓ |
| GetMetadata tevékenység | ① ② | ✓ |
| Parancsprogram-tevékenység | ① ② | ✓ |
| Tárolt eljárástevékenység | ① ② | ✓ |
(1) Azure-integrációs modul (2) Saját üzemeltetésű integrációs modul
A Copy tevékenység esetében ez a Azure Synapse Analytics-összekötő az alábbi függvényeket támogatja:
- Adatok másolása SQL-hitelesítéssel és Azure Active Directory-(Azure AD) alkalmazásjogkivonat-hitelesítéssel szolgáltatásnévvel vagy felügyelt identitásokkal az Azure-erőforrásokhoz.
- Forrásként sql-lekérdezéssel vagy tárolt eljárással kér le adatokat. Az Azure Synapse Analytics-forrásból párhuzamos másolást is választhat, a részletekért tekintse meg a Azure Synapse Analytics párhuzamos másolatát.
- Fogadóként másolja be az adatokat COPY utasítás vagy PolyBase vagy tömeges beszúrás használatával. A jobb másolási teljesítmény érdekében a COPY utasítást vagy a PolyBase-t javasoljuk. Az összekötő támogatja a céltábla automatikus létrehozását a DISTRIBUTION = ROUND_ROBIN használatával, ha nem létezik a forrásséma alapján.
Fontos
Ha egy Azure-Integration Runtime használatával másol adatokat, konfiguráljon egy kiszolgálószintű tűzfalszabályt, hogy az Azure-szolgáltatások hozzáférhessenek a logikai SQL-kiszolgálóhoz. Ha saját üzemeltetésű integrációs modullal másol adatokat, konfigurálja úgy a tűzfalat, hogy engedélyezze a megfelelő IP-címtartományt. Ez a tartomány magában foglalja a gép IP-címét, amelyet a Azure Synapse Analyticshez való csatlakozáshoz használnak.
Bevezetés
Tipp
A legjobb teljesítmény eléréséhez a PolyBase vagy a COPY utasítás használatával töltse be az adatokat Azure Synapse Analyticsbe. A PolyBase használata adatok betöltésére a Azure Synapse Analyticsbe és a COPY utasítás használata az adatok Azure Synapse Analytics-szakaszokba való betöltéséhez. A használati esetekkel kapcsolatos bemutatót lásd: 1 TB betöltése Azure Synapse Analyticsbe 15 perc alatt Azure Data Factory.
A Copy tevékenység folyamattal való végrehajtásához az alábbi eszközök vagy SDK-k egyikét használhatja:
- Az Adatok másolása eszköz
- Az Azure Portal
- A .NET SDK
- A Python SDK
- Azure PowerShell
- A REST API
- Az Azure Resource Manager sablon
Azure Synapse Analytics társított szolgáltatás létrehozása felhasználói felülettel
Az alábbi lépésekkel hozhat létre Azure Synapse Analytics társított szolgáltatást a Azure Portal felhasználói felületén.
Tallózással keresse meg a Kezelés lapot a Azure Data Factory vagy a Synapse-munkaterületen, és válassza a Társított szolgáltatások lehetőséget, majd kattintson az Új gombra:
Keresse meg a Synapse-t, és válassza ki a Azure Synapse Analytics-összekötőt.
Konfigurálja a szolgáltatás részleteit, tesztelje a kapcsolatot, és hozza létre az új társított szolgáltatást.
Összekötő konfigurációjának részletei
A következő szakaszok részletesen ismertetik a Data Factory és a Synapse-folyamat entitásait definiáló tulajdonságokat, amelyek egy Azure Synapse Analytics-összekötőre vonatkoznak.
Társított szolgáltatás tulajdonságai
Az Azure Synapse Analytics társított szolgáltatásához a következő tulajdonságok támogatottak:
| Tulajdonság | Leírás | Kötelező |
|---|---|---|
| típus | A típustulajdonságot AzureSqlDW értékre kell állítani. | Yes |
| connectionString | Adja meg a connectionString tulajdonság Azure Synapse Analytics-példányához való csatlakozáshoz szükséges információkat. Jelölje meg ezt a mezőt SecureString-ként, hogy biztonságosan tárolja. Az Azure Key Vault-ban jelszó-/szolgáltatásnévkulcsot is elhelyezhet, és ha SQL-hitelesítésről van szó, a konfigurációt ki is vonhatja password a kapcsolati sztring. További részletekért tekintse meg a táblázat alatti JSON-példát és az Azure-Key Vault hitelesítő adatainak tárolását ismertető cikket. |
Yes |
| servicePrincipalId | Adja meg az alkalmazás ügyfél-azonosítóját. | Igen, ha Azure AD hitelesítést használ egy szolgáltatásnévvel. |
| servicePrincipalKey | Adja meg az alkalmazás kulcsát. Jelölje meg ezt a mezőt SecureString-ként, hogy biztonságosan tárolja, vagy hivatkozzon egy Azure-Key Vault tárolt titkos kódra. | Igen, ha Azure AD hitelesítést használ egy szolgáltatásnévvel. |
| bérlő | Adja meg a bérlői adatokat (tartománynevet vagy bérlőazonosítót), amelyek alatt az alkalmazás található. A lekéréshez vigye az egérmutatót a Azure Portal jobb felső sarkában. | Igen, ha Azure AD hitelesítést használ egy szolgáltatásnévvel. |
| azureCloudType | A szolgáltatásnév hitelesítéséhez adja meg, hogy milyen típusú Azure-felhőkörnyezetben regisztrálja az Azure AD-alkalmazást. Az engedélyezett értékek a következők AzurePublic: , AzureChinaAzureUsGovernmentés AzureGermany. Alapértelmezés szerint az adat-előállító vagy a Synapse-folyamat felhőkörnyezete van használatban. |
No |
| hitelesítő adatok | Adja meg a felhasználó által hozzárendelt felügyelt identitást hitelesítőadat-objektumként. | Igen, ha felhasználó által hozzárendelt felügyelt identitás hitelesítését használja. |
| connectVia | Az adattárhoz való csatlakozáshoz használt integrációs modul . Használhatja az Azure Integration Runtime vagy egy saját üzemeltetésű integrációs modult (ha az adattár privát hálózaton található). Ha nincs megadva, az alapértelmezett Azure-Integration Runtime használja. | No |
A különböző hitelesítési típusok esetén tekintse meg az előfeltételekre és a JSON-mintákra vonatkozó alábbi szakaszokat:
- SQL-hitelesítés
- Egyszerű szolgáltatás hitelesítése
- Rendszer által hozzárendelt felügyelt identitás hitelesítése
- Felhasználó által hozzárendelt felügyelt identitás hitelesítése
Tipp
Amikor társított szolgáltatást hoz létre Azure Synapse kiszolgáló nélküli SQL-készlethez a felhasználói felületről, az előfizetésből való böngészés helyett válassza az "Enter manually" (Manuális beírás) lehetőséget.
Tipp
Ha "UserErrorFailedToConnectToSqlServer" hibakódú hibaüzenetet kapott, és a következőhöz hasonló üzenetet kapott: "Az adatbázis munkamenet-korlátja XXX, és elérte." hibaüzenetet, adja hozzá Pooling=false a kapcsolati sztring, és próbálkozzon újra.
SQL-hitelesítés
SQL-hitelesítést használó társított szolgáltatás példája
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Password=<password>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Jelszó az Azure Key Vault:
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;User ID=<username>@<servername>;Trusted_Connection=False;Encrypt=True;Connection Timeout=30",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Egyszerű szolgáltatásnév hitelesítése
Szolgáltatásnév-alapú Azure AD alkalmazásjogkivonat-hitelesítés használatához kövesse az alábbi lépéseket:
Azure Active Directory-alkalmazás létrehozása a Azure Portal. Jegyezze fel az alkalmazás nevét és a társított szolgáltatást meghatározó alábbi értékeket:
- Alkalmazásazonosító
- Alkalmazáskulcs
- Bérlőazonosító
Ha még nem tette meg, építsen ki egy Azure Active Directory-rendszergazdát a kiszolgálóhoz a Azure Portal. A Azure AD rendszergazda lehet Azure AD felhasználó vagy Azure AD csoport. Ha rendszergazdai szerepkört ad a felügyelt identitással rendelkező csoportnak, hagyja ki a 3. és a 4. lépést. A rendszergazda teljes hozzáféréssel rendelkezik az adatbázishoz.
Tartalmazottadatbázis-felhasználók létrehozása a szolgáltatásnévhez. Csatlakozzon ahhoz az adattárházhoz, amelyből vagy amelybe adatokat szeretne másolni az SSMS-hez hasonló eszközökkel, olyan Azure AD identitással, amely legalább BÁRMELY FELHASZNÁLÓ MÓDOSÍTÁSA engedéllyel rendelkezik. Futtassa a következő T-SQL-t:
CREATE USER [your_application_name] FROM EXTERNAL PROVIDER;Adja meg a szükséges engedélyeket a szolgáltatásnévnek , ahogyan az SQL-felhasználók vagy más felhasználók esetében szokott. Futtassa az alábbi kódot, vagy tekintse meg itt a további lehetőségeket. Ha a PolyBase használatával szeretné betölteni az adatokat, ismerje meg a szükséges adatbázis-engedélyeket.
EXEC sp_addrolemember db_owner, [your application name];Azure Synapse Analytics társított szolgáltatás konfigurálása Azure Data Factory vagy Synapse-munkaterületen.
Szolgáltatásnév-hitelesítést használó társított szolgáltatás
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30",
"servicePrincipalId": "<service principal id>",
"servicePrincipalKey": {
"type": "SecureString",
"value": "<service principal key>"
},
"tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Rendszer által hozzárendelt felügyelt identitások az Azure-erőforrások hitelesítéséhez
Egy adat-előállító vagy Synapse-munkaterület társítható az erőforrást képviselő Azure-erőforrások rendszer által hozzárendelt felügyelt identitásával . Ezt a felügyelt identitást használhatja Azure Synapse Analytics-hitelesítéshez. A kijelölt erőforrás ezzel az identitással férhet hozzá és másolhat adatokat az adattárházból vagy az adattárházba.
A rendszer által hozzárendelt felügyelt identitás hitelesítésének használatához kövesse az alábbi lépéseket:
Ha még nem tette meg, építsen ki egy Azure Active Directory-rendszergazdát a kiszolgálóhoz a Azure Portal. A Azure AD rendszergazda lehet Azure AD felhasználó vagy Azure AD csoport. Ha rendszergazdai szerepkört ad a rendszer által hozzárendelt felügyelt identitással rendelkező csoportnak, hagyja ki a 3. és a 4. lépést. A rendszergazda teljes hozzáféréssel rendelkezik az adatbázishoz.
Tartalmazottadatbázis-felhasználók létrehozása a rendszer által hozzárendelt felügyelt identitáshoz. Csatlakozzon ahhoz az adattárházhoz, amelyből vagy amelybe adatokat szeretne másolni az SSMS-hez hasonló eszközökkel, olyan Azure AD identitással, amely legalább BÁRMELY FELHASZNÁLÓ MÓDOSÍTÁSA engedéllyel rendelkezik. Futtassa a következő T-SQL-t.
CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;Adja meg a rendszer által hozzárendelt felügyelt identitásnak a szükséges engedélyeket , ahogyan azt az SQL-felhasználók és mások esetében általában teszi. Futtassa az alábbi kódot, vagy tekintse meg itt a további lehetőségeket. Ha a PolyBase használatával szeretné betölteni az adatokat, ismerje meg a szükséges adatbázis-engedélyeket.
EXEC sp_addrolemember db_owner, [your_resource_name];Konfiguráljon egy Azure Synapse Analytics társított szolgáltatást.
Példa
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Felhasználó által hozzárendelt felügyelt identitás hitelesítése
Egy adat-előállító vagy Synapse-munkaterület társítható az erőforrást képviselő , felhasználó által hozzárendelt felügyelt identitásokkal . Ezt a felügyelt identitást használhatja Azure Synapse Analytics-hitelesítéshez. A kijelölt erőforrás ezzel az identitással férhet hozzá és másolhat adatokat az adattárházból vagy az adattárházba.
A felhasználó által hozzárendelt felügyelt identitás hitelesítésének használatához kövesse az alábbi lépéseket:
Ha még nem tette meg, építsen ki egy Azure Active Directory-rendszergazdát a kiszolgálóhoz a Azure Portal. A Azure AD rendszergazda lehet Azure AD felhasználó vagy Azure AD csoport. Ha rendszergazdai szerepkört ad a felhasználó által hozzárendelt felügyelt identitással rendelkező csoportnak, hagyja ki a 3. lépést. A rendszergazda teljes hozzáféréssel rendelkezik az adatbázishoz.
Tartalmazottadatbázis-felhasználók létrehozása a felhasználó által hozzárendelt felügyelt identitáshoz. Csatlakozzon ahhoz az adattárházhoz, amelyből vagy amelybe adatokat szeretne másolni az SSMS-hez hasonló eszközökkel, olyan Azure AD identitással, amely legalább BÁRMELY FELHASZNÁLÓ MÓDOSÍTÁSA engedéllyel rendelkezik. Futtassa a következő T-SQL-t.
CREATE USER [your_resource_name] FROM EXTERNAL PROVIDER;Hozzon létre egy vagy több felhasználó által hozzárendelt felügyelt identitást , és adja meg a felhasználó által hozzárendelt felügyelt identitásnak a szükséges engedélyeket , ahogyan azt az SQL-felhasználók és mások esetében általában teszi. Futtassa az alábbi kódot, vagy tekintse meg itt a további lehetőségeket. Ha a PolyBase használatával szeretné betölteni az adatokat, ismerje meg a szükséges adatbázis-engedélyeket.
EXEC sp_addrolemember db_owner, [your_resource_name];Rendeljen hozzá egy vagy több felhasználó által hozzárendelt felügyelt identitást az adat-előállítóhoz, és hozzon létre hitelesítő adatokat minden felhasználó által hozzárendelt felügyelt identitáshoz.
Konfiguráljon egy Azure Synapse Analytics társított szolgáltatást.
Példa
{
"name": "AzureSqlDWLinkedService",
"properties": {
"type": "AzureSqlDW",
"typeProperties": {
"connectionString": "Server=tcp:<servername>.database.windows.net,1433;Database=<databasename>;Connection Timeout=30",
"credential": {
"referenceName": "credential1",
"type": "CredentialReference"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Adatkészlet tulajdonságai
Az adathalmazok meghatározásához elérhető szakaszok és tulajdonságok teljes listáját az Adathalmazok című cikkben találja.
Az Azure Synapse Analytics-adathalmaz esetében a következő tulajdonságok támogatottak:
| Tulajdonság | Leírás | Kötelező |
|---|---|---|
| típus | Az adathalmaz típustulajdonságának AzureSqlDWTable értékre kell állítania. | Yes |
| schema | A séma neve. | Nem a forráshoz, igen a fogadóhoz |
| tábla | A tábla/nézet neve. | Nem a forráshoz, igen a fogadóhoz |
| tableName | A sémával rendelkező tábla/nézet neve. Ez a tulajdonság a visszamenőleges kompatibilitás érdekében támogatott. Új számítási feladatokhoz használja schema és table. |
Nem a forráshoz, igen a fogadóhoz |
Példa adathalmaz-tulajdonságokra
{
"name": "AzureSQLDWDataset",
"properties":
{
"type": "AzureSqlDWTable",
"linkedServiceName": {
"referenceName": "<Azure Synapse Analytics linked service name>",
"type": "LinkedServiceReference"
},
"schema": [ < physical schema, optional, retrievable during authoring > ],
"typeProperties": {
"schema": "<schema_name>",
"table": "<table_name>"
}
}
}
Másolási tevékenység tulajdonságai
A tevékenységek meghatározásához elérhető szakaszok és tulajdonságok teljes listáját a Folyamatok című cikkben találja. Ez a szakasz az Azure Synapse Analytics-forrás és -fogadó által támogatott tulajdonságok listáját tartalmazza.
Azure Synapse Analytics mint forrás
Tipp
Ha az Azure Synapse Analyticsből hatékonyan szeretne adatokat betölteni az adatparticionálás használatával, többet is megtudhat a Azure Synapse Analytics párhuzamos másolásáról.
Az adatok Azure Synapse Analyticsből való másolásához állítsa a másolási tevékenység forrásának típustulajdonságát az SqlDWSource értékre. A Másolási tevékenység forrás szakasza a következő tulajdonságokat támogatja:
| Tulajdonság | Leírás | Kötelező |
|---|---|---|
| típus | A másolási tevékenység forrásának típustulajdonságát SqlDWSource értékre kell állítani. | Yes |
| sqlReaderQuery | Az adatok olvasásához használja az egyéni SQL-lekérdezést. Példa: select * from MyTable. |
No |
| sqlReaderStoredProcedureName | Annak a tárolt eljárásnak a neve, amely adatokat olvas be a forrástáblából. Az utolsó SQL-utasításnak SELECT utasításnak kell lennie a tárolt eljárásban. | No |
| storedProcedureParameters | A tárolt eljárás paraméterei. Az engedélyezett értékek név- vagy értékpárok. A paraméterek nevének és burkolatának meg kell egyeznie a tárolt eljárás paramétereinek nevével és burkolatával. |
No |
| isolationLevel | Megadja az SQL-forrás tranzakciózárolási viselkedését. Az engedélyezett értékek a következők: ReadCommitted, ReadUncommitted, RepeatableRead, Serializable, Snapshot. Ha nincs megadva, a rendszer az adatbázis alapértelmezett elkülönítési szintjét használja. További információ: system.data.isolationlevel. | No |
| partitionOptions | Megadja az adatok Azure Synapse Analyticsből való betöltéséhez használt adatparticionálási beállításokat. Az engedélyezett értékek a következők: Nincs (alapértelmezett), PhysicalPartitionsOfTable és DynamicRange. Ha egy partíciós beállítás engedélyezve van (vagyis nem None), a párhuzamosság mértékét, hogy egyidejűleg betöltse az adatokat egy Azure Synapse Analyticsből, a parallelCopies másolási tevékenység beállítása szabályozza. |
No |
| partitionSettings | Adja meg az adatparticionálás beállításainak csoportját. Akkor alkalmazza, ha a partícióbeállítás nem None. |
No |
Alatta partitionSettings: |
||
| partitionColumnName | Adja meg annak a forrásoszlopnak a nevét egész számban vagy dátum/dátum/idő típusban (int, , smallint, bigint, datesmalldatetime, datetime, , datetime2vagy datetimeoffset), amelyet a párhuzamos másoláshoz használ a tartományparticionálás. Ha nincs megadva, a rendszer automatikusan észleli a tábla indexét vagy elsődleges kulcsát, és partícióoszlopként használja.Akkor alkalmazza, ha a partícióbeállítás . DynamicRange Ha lekérdezéssel kéri le a forrásadatokat, használja a WHERE záradékot ?AdfDynamicRangePartitionCondition . Példaként tekintse meg az SQL Database párhuzamos másolatát . |
No |
| partitionUpperBound | A partíciótartományok felosztásához használt partícióoszlop maximális értéke. Ez az érték a partíciós léptetés meghatározására szolgál, nem a tábla sorainak szűrésére. A tábla vagy a lekérdezés eredményének összes sora particionálásra és másolásra kerül. Ha nincs megadva, a másolási tevékenység automatikusan észleli az értéket. Akkor alkalmazza, ha a partícióbeállítás . DynamicRange Példaként tekintse meg az SQL Database párhuzamos másolatát . |
No |
| partitionLowerBound | A partíciótartomány felosztásához használt partícióoszlop minimális értéke. Ez az érték a partíciós léptetés meghatározására szolgál, nem a tábla sorainak szűrésére. A tábla vagy a lekérdezés eredményének összes sora particionálásra és másolásra kerül. Ha nincs megadva, a másolási tevékenység automatikusan észleli az értéket. Akkor alkalmazza, ha a partícióbeállítás . DynamicRange Példaként tekintse meg az SQL Database párhuzamos másolatát . |
No |
Vegye figyelembe a következő pontot:
- Ha tárolt eljárást használ a forrásban az adatok lekéréséhez, vegye figyelembe, hogy ha a tárolt eljárás eltérő séma visszaadására lett tervezve, amikor különböző paraméterértéket adnak át, előfordulhat, hogy a séma felhasználói felületről történő importálásakor vagy az adatok sql-adatbázisba való automatikus létrehozásakor váratlan eredmény jelenik meg.
Példa: SQL-lekérdezés használata
"activities":[
{
"name": "CopyFromAzureSQLDW",
"type": "Copy",
"inputs": [
{
"referenceName": "<Azure Synapse Analytics input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlDWSource",
"sqlReaderQuery": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Példa: tárolt eljárás használata
"activities":[
{
"name": "CopyFromAzureSQLDW",
"type": "Copy",
"inputs": [
{
"referenceName": "<Azure Synapse Analytics input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlDWSource",
"sqlReaderStoredProcedureName": "CopyTestSrcStoredProcedureWithParameters",
"storedProcedureParameters": {
"stringData": { "value": "str3" },
"identifier": { "value": "$$Text.Format('{0:yyyy}', <datetime parameter>)", "type": "Int"}
}
},
"sink": {
"type": "<sink type>"
}
}
}
]
Minta tárolt eljárás:
CREATE PROCEDURE CopyTestSrcStoredProcedureWithParameters
(
@stringData varchar(20),
@identifier int
)
AS
SET NOCOUNT ON;
BEGIN
select *
from dbo.UnitTestSrcTable
where dbo.UnitTestSrcTable.stringData != stringData
and dbo.UnitTestSrcTable.identifier != identifier
END
GO
Azure Synapse Analytics fogadóként
A Azure Data Factory és a Synapse-folyamatok három módszert támogatnak az adatok Azure Synapse Analyticsbe való betöltésére.
- COPY utasítás használata
- A PolyBase használata
- Tömeges beszúrás használata
Az adatok betöltésének leggyorsabb és legskálázhatóbb módja a COPY utasítás vagy a PolyBase.
Ha adatokat szeretne másolni Azure Synapse Analyticsbe, állítsa be a fogadó típusát a Másolási tevékenységben az SqlDWSink értékre. A Másolási tevékenység fogadó szakasza a következő tulajdonságokat támogatja:
| Tulajdonság | Leírás | Kötelező |
|---|---|---|
| típus | A másolási tevékenység fogadójának típustulajdonságát SqlDWSink értékre kell állítani. | Yes |
| allowPolyBase | Azt jelzi, hogy a PolyBase használatával tölt-e be adatokat az Azure Synapse Analyticsbe. allowCopyCommand és allowPolyBase nem lehet mindkettő igaz. A korlátozásokról és részletekről a PolyBase használata az adatok Azure Synapse Analytics szakaszba való betöltéséről olvashat. Az engedélyezett értékek a True (Igaz ) és a False (alapértelmezett) értékek. |
Nem. A PolyBase használata esetén alkalmazható. |
| polyBaseSettings | Tulajdonságcsoport, amely akkor adható meg, ha a allowPolybase tulajdonság értéke igaz. |
Nem. A PolyBase használata esetén alkalmazható. |
| allowCopyCommand | Azt jelzi, hogy a COPY utasítás használatával tölt-e be adatokat Azure Synapse Analyticsbe. allowCopyCommand és allowPolyBase nem lehet mindkettő igaz. A korlátozásokért és részletekért tekintse meg a COPY utasítás használata az adatok Azure Synapse Analytics szakaszba való betöltéséhez. Az engedélyezett értékek a True (Igaz ) és a False (alapértelmezett) értékek. |
Nem. A COPY használata esetén alkalmazható. |
| copyCommandSettings | Tulajdonságcsoport, amely akkor adható meg, ha allowCopyCommand a tulajdonság értéke IGAZ. |
Nem. A COPY használata esetén alkalmazható. |
| writeBatchSize | Az SQL-táblába kötegenként beszúrandó sorok száma. Az engedélyezett érték egész szám (sorok száma). Alapértelmezés szerint a szolgáltatás dinamikusan határozza meg a megfelelő kötegméretet a sorméret alapján. |
Nem. Tömeges beszúrás használatakor alkalmazható. |
| writeBatchTimeout | Várakozási idő, amíg a köteg beszúrása művelet befejeződik, mielőtt túllépi az időkorlátot. Az engedélyezett érték időhossz. Példa: "00:30:00" (30 perc). |
Nem. Tömeges beszúrás használatakor alkalmazható. |
| preCopyScript | Adjon meg egy SQL-lekérdezést a másolási tevékenység futtatásához, mielőtt minden futtatáskor adatokat írna Azure Synapse Analyticsbe. Ezzel a tulajdonságkal törölheti az előre betöltött adatokat. | No |
| tableOption | Megadja, hogy a fogadó tábla automatikusan létre legyen-e hozva, ha nem létezik a forrásséma alapján. Az engedélyezett értékek a következők: none (alapértelmezett), autoCreate. |
No |
| disableMetricsCollection | A szolgáltatás metrikákat gyűjt, például Azure Synapse Analytics DWU-kat a másolási teljesítmény optimalizálásához és javaslatokat, amelyek további főadatbázis-hozzáférést vezetnek be. Ha ezzel a viselkedéssel foglalkozik, adja meg true , hogy kikapcsolja azt. |
Nem (alapértelmezett)false |
| maxConcurrentConnections | Az adattárban a tevékenységfuttatás során létesített egyidejű kapcsolatok felső korlátja. Csak akkor adjon meg értéket, ha korlátozni szeretné az egyidejű kapcsolatokat. | No |
| WriteBehavior | Adja meg a másolási tevékenység írási viselkedését az adatok Azure SQL Database-be való betöltéséhez. Az engedélyezett érték az Insert és a Upsert. Alapértelmezés szerint a szolgáltatás beszúrással tölti be az adatokat. |
No |
| upsertSettings | Adja meg az írási viselkedés beállításainak csoportját. Akkor alkalmazza, ha a WriteBehavior beállítás . Upert |
No |
Alatta upsertSettings: |
||
| keys | Adja meg az egyedi sorazonosítás oszlopnevét. Egy vagy több kulcs használható. Ha nincs megadva, a rendszer az elsődleges kulcsot használja. | No |
| interimSchemaName | Adja meg a köztes tábla létrehozásához szükséges köztes sémát. Megjegyzés: a felhasználónak rendelkeznie kell a tábla létrehozásához és törléséhez szükséges engedéllyel. Alapértelmezés szerint a köztes tábla ugyanazt a sémát használja, mint a fogadó tábla. | No |
1. példa: Azure Synapse Analytics-fogadó
"sink": {
"type": "SqlDWSink",
"allowPolyBase": true,
"polyBaseSettings":
{
"rejectType": "percentage",
"rejectValue": 10.0,
"rejectSampleValue": 100,
"useTypeDefault": true
}
}
2. példa: Upsert-adatok
"sink": {
"type": "SqlDWSink",
"writeBehavior": "Upsert",
"upsertSettings": {
"keys": [
"<column name>"
],
"interimSchemaName": "<interim schema name>"
},
}
Párhuzamos másolás Azure Synapse Analyticsből
A másolási tevékenység Azure Synapse Analytics-összekötője beépített adatparticionálást biztosít az adatok párhuzamos másolásához. Az adatparticionálási lehetőségek a másolási tevékenység Forrás lapján találhatók.
Ha engedélyezi a particionált másolást, a másolási tevékenység párhuzamos lekérdezéseket futtat a Azure Synapse Analytics-forráson az adatok partíciók szerinti betöltéséhez. A párhuzamos fokot a parallelCopies másolási tevékenység beállítása szabályozza. Ha például négyre van állítvaparallelCopies, a szolgáltatás egyszerre négy lekérdezést hoz létre és futtat a megadott partícióbeállítás és beállítások alapján, és mindegyik lekérdezés lekéri az adatok egy részét a Azure Synapse Analyticsből.
Javasoljuk, hogy engedélyezze a párhuzamos másolást adatparticionálással, különösen akkor, ha nagy mennyiségű adatot tölt be a Azure Synapse Analyticsből. A következő javasolt konfigurációk különböző forgatókönyvekhez. Ha fájlalapú adattárba másol adatokat, javasoljuk, hogy több fájlként írjon egy mappába (csak a mappa nevét adja meg), ebben az esetben a teljesítmény jobb, mint egyetlen fájlba írni.
| Eset | Javasolt beállítások |
|---|---|
| Teljes terhelés nagy táblából, fizikai partíciókkal. | Partíciós beállítás: Tábla fizikai partíciói. A végrehajtás során a szolgáltatás automatikusan észleli a fizikai partíciókat, és partíciók alapján másolja az adatokat. Ha ellenőrizni szeretné, hogy a tábla rendelkezik-e fizikai partícióval, tekintse meg ezt a lekérdezést. |
| Teljes terhelés nagy táblából fizikai partíciók nélkül, egész számmal vagy datetime oszloppal az adatparticionáláshoz. | Partícióbeállítások: Dinamikus tartománypartíció. Partícióoszlop (nem kötelező): Adja meg az adatok particionálásához használt oszlopot. Ha nincs megadva, a rendszer az indexet vagy az elsődlegeskulcs-oszlopot használja. Partíció felső határa és partíció alsó határa (nem kötelező): Adja meg, hogy meg szeretné-e határozni a partíciós léptetéseket. Ez nem a tábla sorainak szűrésére használható, hanem a tábla összes sora particionálása és másolása. Ha nincs megadva, a másolási tevékenység automatikusan észleli az értékeket. Ha például az "ID" partícióoszlop értéke 1 és 100 között van, és az alsó kötést 20-ra, a felső kötést pedig 80-ra állítja be, a párhuzamos másolás 4-zel, a szolgáltatás 4 partíció – a =20, [21, 50], [51, 80] és >=81 tartományban <lévő azonosítók – alapján kéri le az adatokat. |
| Nagy mennyiségű adat betöltése egyéni lekérdezéssel fizikai partíciók nélkül, míg az adatparticionáláshoz egy egész szám vagy dátum/dátum/idő oszlop szükséges. | Partícióbeállítások: Dinamikus tartománypartíció. Lekérdezés: SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>.Partícióoszlop: Adja meg az adatok particionálásához használt oszlopot. Partíció felső határa és partíció alsó határa (nem kötelező): Adja meg, hogy meg szeretné-e határozni a partíciós léptetéseket. Ez nem a tábla sorainak szűrésére használható, a lekérdezés eredményének összes sora particionálva lesz, és át lesz másolva. Ha nincs megadva, a másolási tevékenység automatikusan észleli az értéket. A végrehajtás során a szolgáltatás lecseréli az egyes partíciók ?AdfRangePartitionColumnName tényleges oszlopnevét és értéktartományait, és elküldi az Azure Synapse Analyticsnek. Ha például az "ID" partícióoszlop értéke 1 és 100 között van, és az alsó kötést 20-ra, a felső kötést pedig 80-ra állítja be, a párhuzamos másolás 4-zel, a szolgáltatás 4 partíció – a =20, [21, 50], [51, 80] és >=81 tartományban <lévő azonosítók alapján kéri le az adatokat. Az alábbiakban további minta lekérdezéseket talál a különböző forgatókönyvekhez: 1. A teljes tábla lekérdezése: SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition2. Lekérdezés oszlopkijelöléssel és további where záradékszűrőkkel rendelkező táblából: SELECT <column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>3. Lekérdezés segéd lekérdezésekkel: SELECT <column_list> FROM (<your_sub_query>) AS T WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>4. Lekérdezés a partícióval a subqueryben: SELECT <column_list> FROM (SELECT <your_sub_query_column_list> FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition) AS T |
Ajánlott eljárások az adatok partíciós beállítással való betöltéséhez:
- Válassza a megkülönböztető oszlopot partícióoszlopként (például elsődleges kulcs vagy egyedi kulcs) az adateltérés elkerülése érdekében.
- Ha a tábla beépített partícióval rendelkezik, a jobb teljesítmény érdekében használja a "Tábla fizikai partíciói" partícióbeállítást.
- Ha az Azure Integration Runtime használja az adatok másolására, nagyobb "adatintegrációs egységeket (DIU)" (>4) állíthat be, hogy több számítási erőforrást használjon. Ellenőrizze az ott alkalmazható forgatókönyveket.
- A "másolási párhuzamosság foka" szabályozza a partíciószámokat. Ha túl nagyra állítja ezt a számot, az rontja a teljesítményt, ajánlott ezt a számot (DIU vagy saját üzemeltetésű integrációs modul csomópontjainak száma) * (2–4) értékre állítani.
- Vegye figyelembe, Azure Synapse Analytics legfeljebb 32 lekérdezést hajthat végre egyszerre, a túl nagy másolási párhuzamosság beállítása Synapse-szabályozási problémát okozhat.
Példa: teljes terhelés nagy méretű táblából fizikai partíciókkal
"source": {
"type": "SqlDWSource",
"partitionOption": "PhysicalPartitionsOfTable"
}
Példa: lekérdezés dinamikus tartománypartícióval
"source": {
"type": "SqlDWSource",
"query": "SELECT * FROM <TableName> WHERE ?AdfDynamicRangePartitionCondition AND <your_additional_where_clause>",
"partitionOption": "DynamicRange",
"partitionSettings": {
"partitionColumnName": "<partition_column_name>",
"partitionUpperBound": "<upper_value_of_partition_column (optional) to decide the partition stride, not as data filter>",
"partitionLowerBound": "<lower_value_of_partition_column (optional) to decide the partition stride, not as data filter>"
}
}
Minta lekérdezés a fizikai partíció ellenőrzéséhez
SELECT DISTINCT s.name AS SchemaName, t.name AS TableName, c.name AS ColumnName, CASE WHEN c.name IS NULL THEN 'no' ELSE 'yes' END AS HasPartition
FROM sys.tables AS t
LEFT JOIN sys.objects AS o ON t.object_id = o.object_id
LEFT JOIN sys.schemas AS s ON o.schema_id = s.schema_id
LEFT JOIN sys.indexes AS i ON t.object_id = i.object_id
LEFT JOIN sys.index_columns AS ic ON ic.partition_ordinal > 0 AND ic.index_id = i.index_id AND ic.object_id = t.object_id
LEFT JOIN sys.columns AS c ON c.object_id = ic.object_id AND c.column_id = ic.column_id
LEFT JOIN sys.types AS y ON c.system_type_id = y.system_type_id
WHERE s.name='[your schema]' AND t.name = '[your table name]'
Ha a tábla fizikai partícióval rendelkezik, a "HasPartition" kifejezés "igen" lesz.
Adatok betöltése az Azure Synapse Analyticsbe a COPY utasítás használatával
A COPY utasítással egyszerűen és rugalmasan tölthet be adatokat a Azure Synapse Analyticsbe nagy átviteli sebességgel. További részletekért ellenőrizze az adatok tömeges betöltését a COPY utasítással
- Ha a forrásadatok Azure Blobban vagy Azure Data Lake Storage Gen2 találhatóak, és a formátuma COPY utasításokkal kompatibilis, a copy tevékenység használatával közvetlenül meghívhatja a COPY utasítást, hogy Azure Synapse Analytics lekérhesse az adatokat a forrásból. Részletekért lásd: Közvetlen másolás COPY utasítással.
- Ha a forrásadattárat és a formátumot eredetileg nem támogatja a COPY utasítás, használja inkább a szakaszos másolást a COPY utasítás funkcióval . A szakaszos másolási funkció jobb átviteli sebességet is biztosít. Automatikusan COPY utasítással kompatibilis formátumra konvertálja az adatokat, az adatokat az Azure Blob Storage-ban tárolja, majd meghívja a COPY utasítást, hogy betöltse az adatokat Azure Synapse Analyticsbe.
Tipp
Ha COPY utasítást használ az Azure Integration Runtime, a hatékony adatintegrációs egységek (DIU) mindig 2-et tartalmaznak. A diu finomhangolása nem befolyásolja a teljesítményt, mivel a tárolóból való adatbetöltést a Azure Synapse motor hajtja.
Közvetlen másolás COPY utasítással
Azure Synapse Analytics COPY utasítás közvetlenül támogatja az Azure Blob, Azure Data Lake Storage Gen1 és Azure Data Lake Storage Gen2. Ha a forrásadatok megfelelnek az ebben a szakaszban ismertetett feltételeknek, a COPY utasítás használatával közvetlenül a forrásadattárból másolhat Azure Synapse Analyticsbe. Ellenkező esetben használja a szakaszos másolást a COPY utasítással. A szolgáltatás ellenőrzi a beállításokat, és meghiúsul a másolási tevékenység futtatása, ha a feltételek nem teljesülnek.
A forrás társított szolgáltatás és formátum a következő típusokkal és hitelesítési módszerekkel érhető el:
Támogatott forrásadattár-típus Támogatott formátum Támogatott forráshitelesítési típus Azure-blob Tagolt szöveg Fiókkulcs-hitelesítés, közös hozzáférésű jogosultságkód-hitelesítés, szolgáltatásnév-hitelesítés, felügyelt identitás hitelesítése Parquet Fiókkulcs-hitelesítés, közös hozzáférésű jogosultságkód-hitelesítés ORK Fiókkulcs-hitelesítés, közös hozzáférésű jogosultságkód-hitelesítés Azure Data Lake Storage Gen2 Tagolt szöveg
Parquet
ORKFiókkulcs-hitelesítés, szolgáltatásnév-hitelesítés, felügyelt identitás hitelesítése Fontos
- Ha felügyelt identitáshitelesítést használ a storage társított szolgáltatáshoz, ismerje meg az Azure Blob és Azure Data Lake Storage Gen2 szükséges konfigurációit.
- Ha az Azure Storage VNet-szolgáltatásvégponttal van konfigurálva, a felügyelt identitás hitelesítését engedélyeznie kell a tárfiókban engedélyezett "megbízható Microsoft-szolgáltatás engedélyezése" beállítással. Lásd a VNet-szolgáltatásvégpontok Azure Storage-beli használatának hatását.
A formátumbeállítások a következők:
- Parquet esetén:
compressionnem lehet tömörítés, Snappy vagyGZip. - Orc:
compressionnem lehet tömörítés,zlibvagy Snappy. - Tagolt szöveg esetén:
rowDelimiterA explicit módon egyetlen karakterként vagy "\r\n" értékként van beállítva, az alapértelmezett érték nem támogatott.nullValuealapértelmezettként marad, vagy üres karakterláncra ("") van állítva.encodingNameA alapértelmezettként van megadva, vagy utf-8 vagy utf-16 értékre van állítva.escapeCharmeg kell egyeznie aquoteChar, és nem üres.skipLineCountA alapértelmezett értékként van megadva, vagy 0-ra van állítva.compressionnem lehet tömörítés vagyGZip.
- Parquet esetén:
Ha a forrás egy mappa,
recursivea másolási tevékenységnek igaz értékre kell állítania, éswildcardFilenamea következőnek kell lennie*: vagy*.*.wildcardFolderPath,wildcardFilename(nem*vagy*.*),modifiedDateTimeStart,modifiedDateTimeEnd,prefixésenablePartitionDiscoveryadditionalColumnsnincs megadva.
A másolási tevékenység az alábbi COPY utasításbeállításokat allowCopyCommand támogatja:
| Tulajdonság | Leírás | Kötelező |
|---|---|---|
| defaultValues | Az Azure Synapse Analytics minden céloszlopának alapértelmezett értékeit adja meg. A tulajdonság alapértelmezett értékei felülírják az adattárházban beállított DEFAULT kényszert, és az identitásoszlop nem rendelkezhet alapértelmezett értékkel. | No |
| additionalOptions | További beállítások, amelyek közvetlenül a COPY utasítás "With" záradékában lesznek átadva az Azure Synapse Analytics COPY utasításának. A COPY utasítás követelményeinek való megfeleléshez szükség szerint adja meg az értéket. | No |
"activities":[
{
"name": "CopyFromAzureBlobToSQLDataWarehouseViaCOPY",
"type": "Copy",
"inputs": [
{
"referenceName": "ParquetDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "AzureSQLDWDataset",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "ParquetSource",
"storeSettings":{
"type": "AzureBlobStorageReadSettings",
"recursive": true
}
},
"sink": {
"type": "SqlDWSink",
"allowCopyCommand": true,
"copyCommandSettings": {
"defaultValues": [
{
"columnName": "col_string",
"defaultValue": "DefaultStringValue"
}
],
"additionalOptions": {
"MAXERRORS": "10000",
"DATEFORMAT": "'ymd'"
}
}
},
"enableSkipIncompatibleRow": true
}
}
]
Szakaszos másolás COPY utasítással
Ha a forrásadatok natív módon nem kompatibilisek a COPY utasítással, engedélyezze az adatok másolását egy átmeneti átmeneti Azure-blobon vagy Azure Data Lake Storage Gen2 keresztül (ez nem lehet Azure Premium Storage). Ebben az esetben a szolgáltatás automatikusan átalakítja az adatokat, hogy megfeleljenek a COPY utasítás adatformátum-követelményeinek. Ezután meghívja a COPY utasítást az adatok Azure Synapse Analyticsbe való betöltéséhez. Végül megtisztítja az ideiglenes adatokat a tárolóból. Az adatok átmeneti másolással történő másolásával kapcsolatos részletekért tekintse meg a szakaszos másolást .
A szolgáltatás használatához hozzon létre egy Azure Blob Storage társított szolgáltatást vagy Azure Data Lake Storage Gen2 társított szolgáltatástfiókkulccsal vagy rendszer által felügyelt identitáshitelesítéssel, amely köztes tárolóként hivatkozik az Azure Storage-fiókra.
Fontos
- Ha felügyelt identitáshitelesítést használ az átmeneti társított szolgáltatáshoz, ismerje meg az Azure Blob és a Azure Data Lake Storage Gen2 szükséges konfigurációit.
- Ha az előkészítési Azure Storage VNet-szolgáltatásvégponttal van konfigurálva, a felügyelt identitás hitelesítését engedélyeznie kell a tárfiókon engedélyezett "megbízható Microsoft-szolgáltatás engedélyezése" beállítással. Lásd a VNet-szolgáltatásvégpontok Azure Storage-beli használatának hatását.
Fontos
Ha az átmeneti Azure Storage felügyelt privát végponttal van konfigurálva, és engedélyezve van a storage-tűzfal, felügyelt identitáshitelesítést kell használnia, és engedélyeznie kell a Storage Blob-adatolvasót a Synapse-SQL Server, hogy az hozzáférhessen az előkészített fájlokhoz a COPY utasítás betöltése során.
"activities":[
{
"name": "CopyFromSQLServerToSQLDataWarehouseViaCOPYstatement",
"type": "Copy",
"inputs": [
{
"referenceName": "SQLServerDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "AzureSQLDWDataset",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlSource",
},
"sink": {
"type": "SqlDWSink",
"allowCopyCommand": true
},
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingStorage",
"type": "LinkedServiceReference"
}
}
}
}
]
Adatok betöltése a PolyBase használatával az Azure Synapse Analyticsbe
A PolyBase használatával hatékonyan tölthet be nagy mennyiségű adatot az Azure Synapse Analyticsbe nagy átviteli sebességgel. Az alapértelmezett BULKINSERT mechanizmus helyett a PolyBase használatával nagy teljesítménynövekedést tapasztalhat. A használati esetekkel kapcsolatos útmutatásért lásd: 1 TB betöltése Azure Synapse Analyticsbe.
- Ha a forrásadatok Azure Blobban, Azure Data Lake Storage Gen1-ben vagy Azure Data Lake Storage Gen2 találhatóak, és a formátum PolyBase-kompatibilis, másolási tevékenység használatával közvetlenül meghívhatja a PolyBase-t, hogy Azure Synapse Analytics lekérhesse az adatokat a forrásból. Részletekért lásd: Közvetlen másolás a PolyBase használatával.
- Ha a forrásadattárat és a formátumot eredetileg nem támogatja a PolyBase, használja inkább a Szakaszos másolatot a PolyBase szolgáltatással . A szakaszos másolási funkció jobb átviteli sebességet is biztosít. Automatikusan PolyBase-kompatibilis formátumba konvertálja az adatokat, az adatokat az Azure Blob Storage-ban tárolja, majd meghívja a PolyBase-t, hogy betöltse az adatokat Azure Synapse Analyticsbe.
Tipp
További információ a PolyBase használatának ajánlott eljárásairól. Ha a PolyBase-t az Azure Integration Runtime-val használja, a közvetlen vagy szakaszos tárolás synapse-ba történő közvetlen vagy szakaszos tárolására szolgáló hatékony adatintegrációs egység (DIU) mindig 2. A diu finomhangolása nem befolyásolja a teljesítményt, mivel a tárolóból történő adatbetöltést a Synapse motor hajtja.
A másolási tevékenység az alábbi PolyBase-beállításokat polyBaseSettings támogatja:
| Tulajdonság | Leírás | Kötelező |
|---|---|---|
| rejectValue | A lekérdezés meghiúsulása előtt elutasítható sorok számát vagy százalékos arányát határozza meg. További információ a PolyBase elutasítási lehetőségeiről a CREATE EXTERNAL TABLE (Transact-SQL) argumentumok szakaszában. Az engedélyezett értékek a következők: 0 (alapértelmezett), 1, 2 stb. |
No |
| rejectType | Meghatározza, hogy a rejectValue beállítás konstansérték vagy százalékérték-e. Az engedélyezett értékek: Érték (alapértelmezett) és Százalék. |
No |
| rejectSampleValue | Meghatározza a lekérendő sorok számát, mielőtt a PolyBase újraszámítja az elutasított sorok százalékos arányát. Az engedélyezett értékek: 1, 2 stb. |
Igen, ha a rejectTypeértéke százalék. |
| useTypeDefault | Meghatározza, hogyan kezelhetők a hiányzó értékek a tagolt szövegfájlokban, amikor a PolyBase adatokat kér le a szövegfájlból. Erről a tulajdonságról a CREATE EXTERNAL FILE FORMAT (Transact-SQL) argumentumok szakaszában tudhat meg többet. Az engedélyezett értékek a True (Igaz ) és a False (alapértelmezett) értékek. |
No |
Közvetlen másolás PolyBase használatával
Azure Synapse Analytics PolyBase közvetlenül támogatja az Azure Blob, Azure Data Lake Storage Gen1 és Azure Data Lake Storage Gen2. Ha a forrásadatok megfelelnek az ebben a szakaszban ismertetett feltételeknek, a PolyBase használatával közvetlenül a forrásadattárból másolhat Azure Synapse Analyticsbe. Ellenkező esetben használjon szakaszos másolatot a PolyBase használatával.
Tipp
Az adatok Azure Synapse Analyticsbe való hatékony másolásához a Azure Data Factory további információi még egyszerűbbé és kényelmesebbé teszik az adatokból származó megállapítások feltárására a Data Lake Store Azure Synapse Analyticsszel való használatakor.
Ha a követelmények nem teljesülnek, a szolgáltatás ellenőrzi a beállításokat, és automatikusan visszaáll a BULKINSERT mechanizmusra az adatáthelyezéshez.
A forráshoz társított szolgáltatás a következő típusokkal és hitelesítési módszerekkel érhető el:
Támogatott forrásadattár-típus Támogatott forráshitelesítési típus Azure-blob Fiókkulcs-hitelesítés, felügyelt identitás hitelesítése 1. generációs Azure Data Lake Storage Egyszerű szolgáltatásnév hitelesítése Azure Data Lake Storage Gen2 Fiókkulcs-hitelesítés, felügyelt identitás hitelesítése Fontos
- Ha felügyelt identitáshitelesítést használ a tárolóalapú társított szolgáltatáshoz, ismerje meg az Azure Blob és Azure Data Lake Storage Gen2 szükséges konfigurációit.
- Ha az Azure Storage virtuális hálózati szolgáltatásvégponttal van konfigurálva, akkor a felügyelt identitás hitelesítését a tárfiókon engedélyezett "megbízható Microsoft-szolgáltatás engedélyezése" beállítással kell használnia, tekintse meg a VNet-szolgáltatásvégpontok Azure Storage-beli használatának hatását.
A forrásadat-formátumparquet, ORC vagy Tagolt szöveg, az alábbi konfigurációkkal:
- A mappa elérési útja nem tartalmaz helyettesítő karakterszűrőt.
- A fájlnév üres, vagy egyetlen fájlra mutat. Ha helyettesítő fájlnevet ad meg a másolási tevékenységben, az csak lehet
*vagy*.*. rowDelimiteralapértelmezett, \n, \r\nvagy \r.nullValueaz alapértelmezett érték marad, vagy üres sztring ("" értékre) van állítva, éstreatEmptyAsNullalapértelmezettként vagy igaz értékre van állítva.encodingNameaz alapértelmezett érték marad, vagy utf-8 értékre van állítva.quoteChar,escapeCharésskipLineCountnincs megadva. A PolyBase támogatása kihagyja a fejlécsort, amely a következőképpen konfigurálhatófirstRowAsHeader.compressionnem lehet tömörítés,GZipvagy deflátum.
Ha a forrás egy mappa,
recursivea másolási tevékenységnél igaz értékre kell állítani.wildcardFolderPath,wildcardFilename,modifiedDateTimeStart,modifiedDateTimeEnd,prefix,enablePartitionDiscovery, ésadditionalColumnsnincs megadva.
Megjegyzés
Ha a forrás egy mappa, vegye figyelembe, hogy a PolyBase lekéri a fájlokat a mappából és annak összes almappájából, és nem kér le adatokat olyan fájlokból, amelyek esetében a fájlnév aláhúzással (_) vagy ponttal (.) kezdődik az itt dokumentált módon – LOCATION argumentum.
"activities":[
{
"name": "CopyFromAzureBlobToSQLDataWarehouseViaPolyBase",
"type": "Copy",
"inputs": [
{
"referenceName": "ParquetDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "AzureSQLDWDataset",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "ParquetSource",
"storeSettings":{
"type": "AzureBlobStorageReadSettings",
"recursive": true
}
},
"sink": {
"type": "SqlDWSink",
"allowPolyBase": true
}
}
}
]
Szakaszos másolás a PolyBase használatával
Ha a forrásadatok natív módon nem kompatibilisek a PolyBase-lel, engedélyezze az adatok másolását egy átmeneti Azure-blobon vagy Azure Data Lake Storage Gen2 keresztül (nem lehet az Azure Premium Storage). Ebben az esetben a szolgáltatás automatikusan átalakítja az adatokat, hogy megfeleljenek a PolyBase adatformátum-követelményeinek. Ezután meghívja a PolyBase-t, hogy adatokat töltsön be az Azure Synapse Analyticsbe. Végül törli az ideiglenes adatokat a tárolóból. Az adatok átmeneti másolással történő másolásával kapcsolatos részletekért tekintse meg a szakaszos másolást .
A szolgáltatás használatához hozzon létre egy Azure Blob Storage társított szolgáltatást vagy Azure Data Lake Storage Gen2 társított szolgáltatástfiókkulccsal vagy felügyelt identitáshitelesítéssel, amely köztes tárolóként hivatkozik az Azure Storage-fiókra.
Fontos
- Ha felügyelt identitáshitelesítést használ az átmeneti társított szolgáltatáshoz, ismerje meg az Azure Blob és Azure Data Lake Storage Gen2 szükséges konfigurációit.
- Ha az átmeneti Azure Storage virtuális hálózati szolgáltatásvégponttal van konfigurálva, akkor a tárfiókon engedélyezett "megbízható Microsoft-szolgáltatás engedélyezése" felügyelt identitáshitelesítést kell használnia, tekintse meg a VNet-szolgáltatásvégpontok Azure Storage-beli használatának hatását.
Fontos
Ha az átmeneti Azure Storage felügyelt privát végponttal van konfigurálva, és a tároló tűzfala engedélyezve van, felügyelt identitás-hitelesítést kell használnia, és engedélyeznie kell a Storage Blob-adatolvasót a Synapse SQL Server, hogy a PolyBase betöltése során hozzáférhessen az előkészített fájlokhoz.
"activities":[
{
"name": "CopyFromSQLServerToSQLDataWarehouseViaPolyBase",
"type": "Copy",
"inputs": [
{
"referenceName": "SQLServerDataset",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "AzureSQLDWDataset",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "SqlSource",
},
"sink": {
"type": "SqlDWSink",
"allowPolyBase": true
},
"enableStaging": true,
"stagingSettings": {
"linkedServiceName": {
"referenceName": "MyStagingStorage",
"type": "LinkedServiceReference"
}
}
}
}
]
Ajánlott eljárások a PolyBase használatához
A következő szakaszok az ajánlott eljárásokat ismertetik az Azure Synapse Analytics ajánlott eljárásaiban említett eljárások mellett.
Szükséges adatbázis-engedély
A PolyBase használatához a Azure Synapse Analyticsbe adatokat betöltő felhasználónak "CONTROL" engedéllyel kell rendelkeznie a céladatbázison. Ennek egyik módja, ha hozzáadja a felhasználót a db_owner szerepkörhöz. Ezt a Azure Synapse Analytics áttekintésében ismerheti meg.
Sorméret és adattípus korlátai
A PolyBase-terhelés 1 MB-nál kisebb sorokra korlátozódik. Nem használható VARCHR(MAX), NVARCHAR(MAX) vagy VARBINARY(MAX) betöltésére. További információ: Azure Synapse Analytics-szolgáltatás kapacitáskorlátai.
Ha a forrásadatok sorai 1 MB-nál nagyobbak, érdemes lehet függőlegesen felosztani a forrástáblákat több kisebbre. Győződjön meg arról, hogy az egyes sorok legnagyobb mérete nem haladja meg a korlátot. A kisebb táblák ezután a PolyBase használatával betölthetők, és egyesíthetők a Azure Synapse Analyticsben.
Az ilyen széles oszlopokkal rendelkező adatok esetében a nem PolyBase használatával is betöltheti az adatokat a "PolyBase engedélyezése" beállítás kikapcsolásával.
Azure Synapse Analytics-erőforrásosztály
A lehető legjobb átviteli sebesség elérése érdekében rendeljen hozzá egy nagyobb erőforrásosztályt a felhasználóhoz, amely adatokat tölt be Azure Synapse Analyticsbe a PolyBase-en keresztül.
PolyBase hibaelhárítása
Betöltés decimális oszlopba
Ha a forrásadatok szövegformátumban vagy más, nem PolyBase-kompatibilis tárolókban találhatók (szakaszos másolás és PolyBase használatával), és üres értéket tartalmaznak, amelyet az Azure Synapse Analytics Decimális oszlopba kell betölteni, a következő hibaüzenet jelenhet meg:
ErrorCode=FailedDbOperation, ......HadoopSqlException: Error converting data type VARCHAR to DECIMAL.....Detailed Message=Empty string can't be converted to DECIMAL.....
A megoldás a "Típus alapértelmezett használata" beállítás (hamis) jelölésének megszüntetése a másolási tevékenység fogadójában –> PolyBase-beállítások. A "USE_TYPE_DEFAULT" egy natív PolyBase-konfiguráció, amely meghatározza, hogyan kezelhetők a hiányzó értékek a tagolt szövegfájlokban, amikor a PolyBase adatokat kér le a szövegfájlból.
Ellenőrizze a tableName tulajdonságot az Azure Synapse Analyticsben
Az alábbi táblázat példákat mutat be a tableName tulajdonság megadására a JSON-adatkészletben. Számos séma- és táblanév-kombinációt mutat be.
| DB-séma | Table name (Táblázat neve) | tableName JSON-tulajdonság |
|---|---|---|
| dbo | Sajáttábla | MyTable vagy dbo. MyTable vagy [dbo]. [Sajáttábla] |
| dbo1 | Sajáttábla | dbo1. MyTable vagy [dbo1]. [Sajáttábla] |
| dbo | My.Table | [My.Table] vagy [dbo]. [My.Table] |
| dbo1 | My.Table | [dbo1]. [My.Table] |
Ha a következő hiba jelenik meg, a probléma a tableName tulajdonsághoz megadott érték lehet. A tableName JSON tulajdonság értékeinek megadásának helyes módját az előző táblázatban találhatja meg.
Type=System.Data.SqlClient.SqlException,Message=Invalid object name 'stg.Account_test'.,Source=.Net SqlClient Data Provider
Alapértelmezett értékeket tartalmazó oszlopok
A PolyBase szolgáltatás jelenleg csak annyi oszlopot fogad el, mint a céltáblában. Ilyen például egy négy oszlopból álló tábla, amelyben az egyiket egy alapértelmezett érték határozza meg. A bemeneti adatoknak továbbra is négy oszloppal kell rendelkezniük. A háromoszlopos bemeneti adathalmaz az alábbi üzenethez hasonló hibát eredményez:
All columns of the table must be specified in the INSERT BULK statement.
A NULL érték az alapértelmezett érték speciális formája. Ha az oszlop null értékű, előfordulhat, hogy az oszlophoz tartozó blob bemeneti adatai üresek. A bemeneti adathalmazból azonban nem hiányozhat. A PolyBase null értéket szúr be a hiányzó értékekhez az Azure Synapse Analyticsben.
A külső fájlhozzáférés nem sikerült
Ha a következő hibaüzenet jelenik meg, győződjön meg arról, hogy felügyelt identitás-hitelesítést használ, és megadta a Storage Blob-adatolvasó engedélyeit a Azure Synapse munkaterület felügyelt identitásához.
Job failed due to reason: at Sink '[SinkName]': shaded.msdataflow.com.microsoft.sqlserver.jdbc.SQLServerException: External file access failed due to internal error: 'Error occurred while accessing HDFS: Java exception raised on call to HdfsBridge_IsDirExist. Java exception message:\r\nHdfsBridge::isDirExist
További információ: Engedélyek megadása felügyelt identitáshoz a munkaterület létrehozása után.
Adatfolyam-tulajdonságok leképezése
A leképezési adatfolyam adatainak átalakításakor az Azure Synapse Analyticsből olvashat és írhat táblákba. További információkért tekintse meg a forrásátalakítást és a fogadó transzformációt a leképezési adatfolyamokban.
Forrásátalakítás
A Azure Synapse Analyticsre vonatkozó beállítások a forrásátalakítás Forrásbeállítások lapján érhetők el.
Bemenet Válassza ki, hogy a forrást egy táblára (egyenértékű Select * from <table-name>) vagy egyéni SQL-lekérdezésre mutírja-e.
Előkészítés engedélyezése Erősen ajánlott ezt a lehetőséget éles számítási feladatokban használni Azure Synapse Analytics-forrásokkal. Amikor adatfolyam-tevékenységet hajt végre Azure Synapse Analytics-forrásokkal egy folyamatból, a rendszer egy átmenetihely-tárfiókot kér, és ezt fogja használni a szakaszos adatbetöltéshez. Ez a leggyorsabb mechanizmus az adatok Azure Synapse Analyticsből való betöltéséhez.
- Ha felügyelt identitáshitelesítést használ a tárolóalapú társított szolgáltatáshoz, ismerje meg az Azure Blob és Azure Data Lake Storage Gen2 szükséges konfigurációit.
- Ha az Azure Storage virtuális hálózati szolgáltatásvégponttal van konfigurálva, akkor a felügyelt identitás hitelesítését a tárfiókon engedélyezett "megbízható Microsoft-szolgáltatás engedélyezése" beállítással kell használnia, tekintse meg a VNet-szolgáltatásvégpontok Azure Storage-beli használatának hatását.
- Ha Azure Synapse kiszolgáló nélküli SQL-készletet használ forrásként, az előkészítés engedélyezése nem támogatott.
Lekérdezés: Ha a bemeneti mezőben a Lekérdezés lehetőséget választja, adjon meg egy SQL-lekérdezést a forráshoz. Ez a beállítás felülírja az adathalmazban kiválasztott táblákat. A Order By záradékok itt nem támogatottak, de beállíthat egy teljes SELECT FROM utasítást. Felhasználó által definiált táblafüggvényeket is használhat. A select * from udfGetData() egy UDF az SQL-ben, amely egy táblát ad vissza. Ez a lekérdezés létrehoz egy forrástáblát, amelyet használhat az adatfolyamban. A lekérdezések használatával a sorok teszteléshez vagy keresésekhez való csökkentésére is kiválóan alkalmas.
SQL-példa: Select * from MyTable where customerId > 1000 and customerId < 2000
Kötegméret: Adjon meg egy kötegméretet, hogy nagy mennyiségű adatot olvasson be. Az adatfolyamokban ezzel a beállítással állíthatja be a Spark oszlopos gyorsítótárazását. Ez egy beállításmező, amely a Spark alapértelmezéseit fogja használni, ha üresen marad.
Elkülönítési szint: A leképezési adatfolyamban az SQL-források alapértelmezett írásvédettként lesznek beolvasva. Itt az elkülönítési szintet az alábbi értékek egyikére módosíthatja:
- Lekötött olvasás
- Nem véglegesített olvasás
- Ismételhető olvasás
- Szerializálható
- Nincs (az elkülönítési szint figyelmen kívül hagyása)
Fogadó transzformációja
Az Azure Synapse Analyticsre vonatkozó beállítások a fogadóátalakítás Beállítások lapján érhetők el.
Frissítési módszer: Meghatározza, hogy milyen műveletek engedélyezettek az adatbázis célhelyén. Az alapértelmezett beállítás a beszúrások engedélyezése. A sorok frissítéséhez, frissítéséhez vagy törléséhez alter-row átalakításra van szükség a műveletek sorainak címkézéséhez. Frissítések, upserts és deletes esetén egy kulcsoszlopot vagy oszlopot kell beállítani annak meghatározásához, hogy melyik sort kell módosítani.
Táblaművelet: Meghatározza, hogy az írás előtt újra létre kell-e hozni vagy eltávolítani az összes sort a céltáblából.
- Nincs: Nem történik művelet a táblán.
- Újra: A tábla el lesz dobva, és újra létrejön. Új tábla dinamikus létrehozása esetén kötelező.
- Csonkolási: A céltábla összes sora el lesz távolítva.
Előkészítés engedélyezése: Ez lehetővé teszi a Azure Synapse Analytics SQL-készletekbe való betöltését a másolási paranccsal, és a legtöbb Synapse-fogadó esetében ajánlott. Az átmeneti tároló az Execute Adatfolyam tevékenységben van konfigurálva.
- Ha felügyelt identitáshitelesítést használ a tárolóalapú társított szolgáltatáshoz, ismerje meg az Azure Blob és Azure Data Lake Storage Gen2 szükséges konfigurációit.
- Ha az Azure Storage virtuális hálózati szolgáltatásvégponttal van konfigurálva, akkor a felügyelt identitás hitelesítését a tárfiókon engedélyezett "megbízható Microsoft-szolgáltatás engedélyezése" beállítással kell használnia, tekintse meg a VNet-szolgáltatásvégpontok Azure Storage-beli használatának hatását.
Köteg mérete: Azt szabályozza, hogy az egyes gyűjtőkben hány sor legyen megírva. A nagyobb kötegméretek javítják a tömörítést és a memóriaoptimalizálást, de az adatok gyorsítótárazásakor kiesik a memóriakivétel.
Fogadóséma használata: Alapértelmezés szerint átmeneti tábla jön létre a fogadóséma alatt előkészítésként. Másik lehetőségként törölje a jelet a Fogadó séma használata lehetőségből, és ehelyett a Select user DB schema (Felhasználói ADATBÁZIS-séma kiválasztása) mezőben adjon meg egy sémanevet, amely alatt a Data Factory létrehoz egy előkészítési táblát, amely betölti a felsőbb rétegbeli adatokat, és automatikusan törli őket a befejezéskor. Győződjön meg arról, hogy táblaengedélyt hoz létre az adatbázisban, és módosítja a sémára vonatkozó engedélyt.
Sql-elő- és post-szkriptek: Adja meg azokat a többsoros SQL-szkripteket, amelyek a fogadó adatbázisba való írása előtt (előfeldolgozás) és (utófeldolgozás) után hajtják végre az adatokat
Tipp
- Ajánlott több parancsot tartalmazó kötegelt szkripteket több kötegre bontani.
- Egy köteg részeként csak az egyszerű frissítésszámot visszajelző adatdefiníciós nyelv (DDL) és adatmanipulációs nyelv (DML) utasítások futtathatók. További információ a kötegelt műveletek végrehajtásáról
Hibát tartalmazó sorok kezelése
A Azure Synapse Analyticsbe való íráskor bizonyos adatsorok meghiúsulhatnak a cél által beállított korlátozások miatt. Néhány gyakori hiba:
- A sztring- vagy bináris adatok csonkulnak a táblában
- A NULL értéket nem lehet beszúrni az oszlopba
- Az átalakítás nem sikerült az érték adattípussá alakításakor
Alapértelmezés szerint az adatfolyam-futtatás az első lekéréskor meghiúsul. Választhatja a Folytatás hibalehetőséget , amely lehetővé teszi, hogy az adatfolyam akkor is befejeződjön, ha az egyes sorok hibásak. A szolgáltatás különböző lehetőségeket kínál a hibasorok kezelésére.
Tranzakció véglegesítése: Adja meg, hogy az adatok egyetlen tranzakcióban vagy kötegekben lesznek-e megírva. Az egyetlen tranzakció jobb teljesítményt nyújt, és a megírt adatok nem lesznek láthatók mások számára, amíg a tranzakció be nem fejeződik. A Batch-tranzakciók teljesítménye rosszabb, de nagy adathalmazok esetén is működhet.
Elutasított adatok kimenete: Ha engedélyezve van, a hibasorokat kiadhatja egy csv-fájlba Azure Blob Storage vagy egy választott Azure Data Lake Storage Gen2-fiókba. Ez megírja a hibasorokat három további oszloppal: az SQL-művelettel( például INSERT vagy UPDATE), az adatfolyam-hibakóddal és a sorban lévő hibaüzenettel.
Hibajelentés sikerességéről: Ha engedélyezve van, az adatfolyam akkor is sikeresként lesz megjelölve, ha hibasorok találhatók.
Keresési tevékenység tulajdonságai
A tulajdonságok részleteinek megismeréséhez tekintse meg a keresési tevékenységet.
AMetadata-tevékenység tulajdonságainak lekérése
A tulajdonságok részleteinek megismeréséhez tekintse meg a GetMetadata tevékenységet
Adattípus-leképezés az Azure Synapse Analyticshez
Amikor adatokat másol az Azure Synapse Analyticsből vagy az Azure Synapse Analyticsbe, a rendszer az alábbi leképezéseket használja az Azure Synapse Analytics-adattípusoktól a köztes adattípusok Azure Data Factory. Ezek a leképezések az adatok Synapse-folyamatokkal történő Azure Synapse Analyticsből vagy az Azure Synapse Analyticsbe történő másolásakor is használatosak, mivel a folyamatok Azure Data Factory is implementálnak Azure Synapse. A séma- és adattípus-leképezések segítségével megtudhatja, hogyan képezi le a másolási tevékenység a forrássémát és az adattípust a fogadóra.
Tipp
A Azure Synapse Analytics Azure Synapse Analytics által támogatott adattípusokat és a nem támogatott adattípusok kerülő megoldásait ismertető cikkben talál táblázatos adattípusokat.
| Azure Synapse Analytics-adattípus | A Data Factory köztes adattípusa |
|---|---|
| bigint | Int64 |
| binary | Bájt[] |
| bit | Logikai |
| Char | Sztring, Karakter[] |
| dátum | DateTime |
| Datetime | DateTime |
| datetime2 | DateTime |
| Datetimeoffset | DateTimeOffset |
| Tizedesjegy | Tizedesjegy |
| FILESTREAM attribútum (varbinary(max)) | Bájt[] |
| Float | Dupla |
| image | Bájt[] |
| int | Int32 |
| Pénzt | Tizedesjegy |
| nchar | Sztring, Karakter[] |
| numerikus | Tizedesjegy |
| nvarchar | Sztring, Karakter[] |
| valós szám | Egyirányú |
| rowversion | Bájt[] |
| smalldatetime | DateTime |
| smallint | Int16 |
| smallmoney | Tizedesjegy |
| time | időtartam |
| tinyint | Bájt |
| uniqueidentifier | Guid |
| varbinary | Bájt[] |
| varchar | Sztring, Karakter[] |
Következő lépések
A másolási tevékenység által forrásként és fogadóként támogatott adattárak listájáért tekintse meg a támogatott adattárakat és formátumokat.

