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:

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.

  1. 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:

  2. Keresse meg a Synapse-t, és válassza ki a Azure Synapse Analytics-összekötőt.

    Képernyőkép a Azure Synapse Analytics-összekötőről.

  3. Konfigurálja a szolgáltatás részleteit, tesztelje a kapcsolatot, és hozza létre az új társított szolgáltatást.

    Képernyőkép egy Azure Synapse Analytics társított szolgáltatás konfigurációjáról.

Ö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őkAzurePublic: , 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:

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:

  1. 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ó
  2. 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.

  3. 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;
    
  4. 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];
    
  5. 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:

  1. 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.

  2. 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;
    
  3. 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];
    
  4. 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:

  1. 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.

  2. 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;
    
  3. 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];
    
  4. 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.

  5. 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 nemNone), 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.

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.

Képernyőkép a partícióbeállításokról

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 ?AdfDynamicRangePartitionCondition
2. 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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

  1. 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
    ORK
    Fiókkulcs-hitelesítés, szolgáltatásnév-hitelesítés, felügyelt identitás hitelesítése

    Fontos

  2. A formátumbeállítások a következők:

    1. Parquet esetén: compression nem lehet tömörítés, Snappy vagy GZip.
    2. Orc: compressionnem lehet tömörítés, zlibvagy Snappy.
    3. Tagolt szöveg esetén:
      1. rowDelimiter A explicit módon egyetlen karakterként vagy "\r\n" értékként van beállítva, az alapértelmezett érték nem támogatott.
      2. nullValue alapértelmezettként marad, vagy üres karakterláncra ("") van állítva.
      3. encodingName A alapértelmezettként van megadva, vagy utf-8 vagy utf-16 értékre van állítva.
      4. escapeChar meg kell egyeznie a quoteChar, és nem üres.
      5. skipLineCount A alapértelmezett értékként van megadva, vagy 0-ra van állítva.
      6. compression nem lehet tömörítés vagy GZip.
  3. Ha a forrás egy mappa, recursive a másolási tevékenységnek igaz értékre kell állítania, és wildcardFilename a következőnek kell lennie * : vagy *.*.

  4. wildcardFolderPath , wildcardFilename (nem *vagy *.*), modifiedDateTimeStart, modifiedDateTimeEnd, prefixés enablePartitionDiscoveryadditionalColumns nincs 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

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.

  1. 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

  2. A forrásadat-formátumparquet, ORC vagy Tagolt szöveg, az alábbi konfigurációkkal:

    1. A mappa elérési útja nem tartalmaz helyettesítő karakterszűrőt.
    2. 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 *.*.
    3. rowDelimiteralapértelmezett, \n, \r\nvagy \r.
    4. nullValue az alapértelmezett érték marad, vagy üres sztring ("" értékre) van állítva, és treatEmptyAsNull alapértelmezettként vagy igaz értékre van állítva.
    5. encodingName az alapértelmezett érték marad, vagy utf-8 értékre van állítva.
    6. quoteChar, escapeCharés skipLineCount nincs megadva. A PolyBase támogatása kihagyja a fejlécsort, amely a következőképpen konfigurálható firstRowAsHeader.
    7. compression nem lehet tömörítés, GZipvagy deflátum.
  3. Ha a forrás egy mappa, recursive a másolási tevékenységnél igaz értékre kell állítani.

  4. wildcardFolderPath , wildcardFilename, modifiedDateTimeStart, modifiedDateTimeEnd, prefix, enablePartitionDiscovery, és additionalColumns nincs 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

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)

Elkülönítési szint

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.

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.

Képernyőkép a

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

Képernyőkép az SQL-feldolgozás előtti és utáni szkriptekről az Azure Synapse Analytics-adatfolyamban.

Tipp

  1. Ajánlott több parancsot tartalmazó kötegelt szkripteket több kötegre bontani.
  2. 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.

Képernyőkép a hibasor kezeléséről

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.