Adatok másolása és átalakítása Azure Database for PostgreSQL Azure Data Factory vagy Synapse Analytics

A KÖVETKEZŐKRE VONATKOZIK: Azure Data Factory Azure Synapse Analytics

Ez a cikk bemutatja, hogyan használhatja a másolási tevékenységet Azure Data Factory- és Synapse Analytics-folyamatokban az adatok Azure Database for PostgreSQL-ból és Azure Database for PostgreSQL-be való másolására, és hogyan használhatja a Data Flow-t az adatok átalakítására a Azure Database for PostgreSQL. További tudnivalókért olvassa el az Azure Data Factory és a Synapse Analytics.

Ez az összekötő az Azure Database for PostgreSQL szolgáltatáshoz készült. A helyszínen vagy a felhőben található általános PostgreSQL-adatbázisból származó adatok másolásához használja a PostgreSQL-összekötőt.

Támogatott képességek

Ez Azure Database for PostgreSQL összekötő a következő tevékenységekhez támogatott:

Az adatfolyam jelenleg támogatja az egykiszolgálós Azure Database for PostgreSQL-kiszolgálót, de a rugalmas kiszolgálót és az rugalmas skálázás (Citus); A szolgáltatásban az adatfolyam Azure Synapse Analytics PostgreSQL-változatokat támogatja.

Első lépések

A Copy tevékenység folyamatokkal való végrehajtásához a következő eszközök vagy AZDK-k egyikét használhatja:

Azure Database for PostgreSQL-hez csatolt szolgáltatás létrehozása a felhasználói felület használatával

Az alábbi lépésekkel hozhat létre egy Azure Database for PostgreSQL-hez kapcsolódó szolgáltatást a Azure Portal felhasználói felületén.

  1. Lépjen a Kezelés lapra a Azure Data Factory Synapse-munkaterületen, és válassza a Csatolt szolgáltatások lehetőséget, majd kattintson az Új elemre:

  2. Keressen rá a PostgreSQL kifejezésre, és válassza ki az Azure Database for PostgreSQL-összekötőt.

    Válassza ki az Azure Database for PostgreSQL-összekötőt.

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

    Konfigurál egy azure-adatbázishoz kapcsolódó szolgáltatást a PostgreSQL-hez.

Az összekötő konfigurációjának részletei

A következő szakaszokban részletesen olvashat az összekötőhöz Data Factory entitások Azure Database for PostgreSQL tulajdonságokról.

Csatolt szolgáltatás tulajdonságai

Az alábbi tulajdonságok támogatottak a Azure Database for PostgreSQL szolgáltatáshoz:

Tulajdonság Leírás Kötelező
típus A type tulajdonságot a következőre kell beállítani: AzurePostgreSql. Yes
connectionString (kapcsolati karakterlánc) OdBC kapcsolati sztring a Azure Database for PostgreSQL.
Jelszót is betehet a Azure Key Vault és kiveheti a konfigurációt a password kapcsolati sztringből. További részletekért tekintse meg a következő mintákat és a hitelesítő Azure Key Vault a hitelesítő adatokat.
Yes
connectVia Ez a tulajdonság az adattárhoz való csatlakozáshoz használt integrációskörnyezetet jelöli. Használhat saját Azure Integration Runtime vagy Integration Runtime is (ha az adattár magánhálózatban található). Ha nincs megadva, akkor az alapértelmezett Azure Integration Runtime. No

Egy tipikus kapcsolati sztring a Server=<server>.postgres.database.azure.com;Database=<database>;Port=<port>;UID=<username>;Password=<Password> . Esetenként a következő tulajdonságokat állíthatja be:

Tulajdonság Leírás Beállítások Kötelező
EncryptionMethod (EM) Az illesztő által az illesztő és az adatbázis-kiszolgáló között küldött adatok titkosítására használt módszer. Például: EncryptionMethod=<0/1/6>; 0 (Nincs titkosítás) (alapértelmezett) / 1 (SSL) / 6 (RequestSSL) No
ValidateServerCertificate (VSC) Megállapítja, hogy az illesztő ellenőrzi-e az adatbázis-kiszolgáló által az SSL-titkosítás engedélyezésekor küldött tanúsítványt (Titkosítási módszer=1). Például: ValidateServerCertificate=<0/1>; 0 (Letiltva) (alapértelmezett) / 1 (Engedélyezve) No

Például:

{
    "name": "AzurePostgreSqlLinkedService",
    "properties": {
        "type": "AzurePostgreSql",
        "typeProperties": {
            "connectionString": "Server=<server>.postgres.database.azure.com;Database=<database>;Port=<port>;UID=<username>;Password=<Password>"
        }
    }
}

Például:

Jelszó tárolása Azure Key Vault

{
    "name": "AzurePostgreSqlLinkedService",
    "properties": {
        "type": "AzurePostgreSql",
        "typeProperties": {
            "connectionString": "Server=<server>.postgres.database.azure.com;Database=<database>;Port=<port>;UID=<username>;",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        }
    }
}

Adatkészlet tulajdonságai

Az adatkészletek meghatározásához elérhető szakaszok és tulajdonságok teljes listájáért lásd: Adatkészletek. Ez a szakasz az adatkészletek által Azure Database for PostgreSQL tulajdonságok listáját tartalmazza.

Ha adatokat Azure Database for PostgreSQL, állítsa az adatkészlet type tulajdonságát az AzurePostgreSqlTable tulajdonságra. A következő tulajdonságok támogatottak:

Tulajdonság Leírás Kötelező
típus Az adatkészlet type tulajdonságát AzurePostgreSqlTable-re kell állítani Yes
tableName A tábla neve Nem (ha a tevékenységforrásban a "lekérdezés" meg van adva)

Például:

{
    "name": "AzurePostgreSqlDataset",
    "properties": {
        "type": "AzurePostgreSqlTable",
        "linkedServiceName": {
            "referenceName": "<AzurePostgreSql linked service name>",
            "type": "LinkedServiceReference"
        },
        "typeProperties": {}
    }
}

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áért lásd: Folyamatok és tevékenységek. Ez a szakasz a forrás által támogatott Azure Database for PostgreSQL listáját tartalmazza.

Forrás: Azure Database for PostgreSql

Ha adatokat Azure Database for PostgreSQL, állítsa be a forrás típusát a másolási tevékenységben az AzurePostgreSqlSource-ba. A másolási tevékenység forrásszakasza 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 type tulajdonságát AzurePostgreSqlSource-ba kell állítani Yes
lekérdezés Az egyéni lekérdezéssel SQL beolvashatja az adatokat. Például: SELECT * FROM mytable vagy SELECT * FROM "MyTable" . Megjegyzés a PostgreSQL-ben az entitás neve a kis- és a nagy- és a kis- és a nagy- és kis- és nagy- és kis- és a nagy- és kis- és nagy- és kis- Nem (ha az adatkészlet tableName tulajdonsága meg van adva)
partitionOptions Megadja az adatok az adatbetöltéshez használt adatpartíciós beállításokat Azure SQL Database.
Megengedett értékek: Nincs (alapértelmezett), PhysicalPartitionsOfTable, és DynamicRange.
Ha engedélyezve van egy partíciós beállítás (azaz nem ), az adatok párhuzamos betöltésének mértéke egy Azure SQL Database a másolási tevékenység beállítása None parallelCopies vezérli.
No
partitionSettings Adja meg az adatpartíció beállításainak csoportját.
Akkor alkalmazza, ha a partíciós beállítás nem None .
No
A partitionSettings alatt:
partitionNames (partíciónevek) A másolni szükséges fizikai partíciók listája.
Akkor alkalmazza, ha a partíciós beállítás PhysicalPartitionsOfTable . Ha lekérdezést használ a forrásadatok lekéréséhez, használja a hookot a ?AdfTabularPartitionName WHERE záradékban. Példaként tekintse meg a párhuzamos másolást Azure Database for PostgreSQL szakaszban.
No
partitionColumnName Adja meg a forrásoszlop nevét egész számban vagy dátum/dátum/idő típusban ( , , , , vagy ), amelyet a tartomány particionálása fog használni a int smallint párhuzamos bigint date timestamp without time zone timestamp with time zone time without time zone másoláshoz. Ha nincs megadva, a rendszer automatikusan észleli a tábla elsődleges kulcsát, és partícióoszlopként használja.
Akkor alkalmazza, ha a partíciós beállítás DynamicRange . Ha lekérdezést használ a forrásadatok lekéréséhez, a WHERE záradékban kattintson ?AdfRangePartitionColumnName a hookra. Példaként tekintse meg a párhuzamos másolást Azure Database for PostgreSQL szakaszban.
No
partitionUpperBound Az adatok másolására vonatkozó partícióoszlop maximális értéke.
Akkor alkalmazza, ha a partíciós beállítás DynamicRange . Ha lekérdezést használ a forrásadatok lekéréséhez, használja a hookot a ?AdfRangePartitionUpbound WHERE záradékban. Példaként tekintse meg a párhuzamos másolást Azure Database for PostgreSQL szakaszban.
No
partitionLowerBound Az adatok másolására vonatkozó partícióoszlop minimális értéke.
Akkor alkalmazza, ha a partíciós beállítás DynamicRange . Ha lekérdezést használ a forrásadatok lekéréséhez, használja a hookot a ?AdfRangePartitionLowbound WHERE záradékban. Példaként tekintse meg a párhuzamos másolást Azure Database for PostgreSQL szakaszban.
No

Például:

"activities":[
    {
        "name": "CopyFromAzurePostgreSql",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<AzurePostgreSql input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "AzurePostgreSqlSource",
                "query": "<custom query e.g. SELECT * FROM mytable>"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Azure Database for PostgreSQL mint fogadó

Az adatok másolása Azure Database for PostgreSQL következő tulajdonságokat támogatja a másolási tevékenység fogadója szakaszban:

Tulajdonság Leírás Kötelező
típus A másolási tevékenység fogadó type (típus) tulajdonságát AzurePostgreSQLSink (AzurePostgreSQLSink) beállításra kell állítani. Yes
preCopyScript Adjon meg SQL lekérdezést a másolási tevékenység végrehajtásához, mielőtt adatokat írna Azure Database for PostgreSQL egyes futtatás során. Ezzel a tulajdonságkal megtisztíthatja az előre betöltött adatokat. No
writeMethod Az adatok írására használt metódus a Azure Database for PostgreSQL.
Megengedett értékek: CopyCommand (alapértelmezett, amely nagyobb teljesítmény), BulkInsert.
No
writeBatchSize A kötegbe betöltött Azure Database for PostgreSQL száma.
Az Engedélyezett érték egész szám, amely a sorok számát jelöli.
Nem (az alapértelmezett érték 1 000 000)
writeBatchTimeout Várjon, amíg a kötegelt beszúrási művelet befejeződik, mielőtt időkorrekciót ad.
Az engedélyezett értékek az időkorrekta sztringek. Például: 00:30:00 (30 perc).
Nem (az alapértelmezett érték: 00:30:00)

Például:

"activities":[
    {
        "name": "CopyToAzureDatabaseForPostgreSQL",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<Azure PostgreSQL output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "AzurePostgreSQLSink",
                "preCopyScript": "<custom SQL script>",
                "writeMethod": "CopyCommand",
                "writeBatchSize": 1000000
            }
        }
    }
]

Párhuzamos másolás Azure Database for PostgreSQL

A Azure Database for PostgreSQL összekötő a másolási tevékenységben beépített adatpartíciót biztosít az adatok párhuzamos másolása érdekében. Az adatpartíciós beállításokat a másolási tevékenység Forrás lapján találja.

Képernyőkép a partíció beállításairó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 Database for PostgreSQL a forráson az adatok partíciók szerint való betöltéséhez. A párhuzamos fokot a parallelCopies másolási tevékenység beállítása vezérli. Ha például négyre van állítva, a szolgáltatás egyidejűleg generál és futtat négy lekérdezést a megadott partíciós beállítás és beállítások alapján, és minden lekérdezés lekéri az adatok egy részét parallelCopies a Azure Database for PostgreSQL.

Ajánlott engedélyezni a párhuzamos másolást adatpartícióval, különösen akkor, ha nagy mennyiségű adatot tölt be a Azure Database for PostgreSQL. Az alábbiakban a különböző forgatókönyvekhez javasolt konfigurációkat javasoltunk. Amikor fájlalapú adattárba másol adatokat, ajánlott több fájlként írni egy mappába (csak mappanév megadása), 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óval. Partíciós beállítás: A 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 szerint másolja az adatokat.
Teljes betöltés nagy táblából, fizikai partíciók nélkül, egy egész szám oszloppal az adat particionáláshoz. Partícióbeállítások: Dinamikustartomány-partíció.
Partícióoszlop: Adja meg az adatok particionálására használt oszlopot. Ha nincs megadva, a rendszer az elsődleges kulcs oszlopát használja.
Nagy mennyiségű adat betöltése egyéni lekérdezéssel, fizikai partíciók használatával. Partíciós beállítás: A tábla fizikai partíciói.
Lekérdezés: SELECT * FROM ?AdfTabularPartitionName WHERE <your_additional_where_clause> .
Partíció neve: Adja meg a partíció nevét, amely(nek) adatokat kell másolnia. Ha nincs megadva, a szolgáltatás automatikusan észleli a fizikai partíciókat a PostgreSQL-adatkészletben megadott táblán.

A végrehajtás során a szolgáltatás lecseréli a helyére a tényleges partíció nevét, és elküldi a ?AdfTabularPartitionName Azure Database for PostgreSQL.
Nagy mennyiségű adatot tölt be egyéni lekérdezéssel, fizikai partíciók nélkül, miközben egy egész szám oszlopot használ az adatpartícióhoz. Partícióbeállítások: Dinamikustartomány-partíció.
Lekérdezés: SELECT * FROM ?AdfTabularPartitionName WHERE ?AdfRangePartitionColumnName <= ?AdfRangePartitionUpbound AND ?AdfRangePartitionColumnName >= ?AdfRangePartitionLowbound AND <your_additional_where_clause> .
Partícióoszlop: Adja meg az adatok particionálására használt oszlopot. Az oszlopra egész szám vagy dátum/dátum/idő adattípussal particionálhat.
Partíció felső határa és alsó határa: Adja meg, hogy a partícióoszlop alapján szeretne-e szűrni, és csak az alsó és a felső tartomány közötti adatokat szeretné lekérni.

A végrehajtás során a szolgáltatás lecseréli a , és értékeket az egyes partíciók tényleges oszlopnevére és értéktartományára, és elküldi őket a ?AdfRangePartitionColumnName ?AdfRangePartitionUpbound ?AdfRangePartitionLowbound Azure Database for PostgreSQL.
Ha például az "ID" partícióoszlop alsó korlátja 1, a felső pedig 80, a párhuzamos másolási beállítás pedig 4, a szolgáltatás 4 partícióval olvassa be az adatokat. Az értékük [1,20], [21, 40], [41, 60] és [61, 80] között van.

Ajánlott eljárások az adatok partíciós beállítással való betöltéséhez:

  1. Válassza az oszlopot partícióoszlopként (például elsődleges kulcsként vagy egyedi kulcsként), hogy elkerülje az adatdedukálást.
  2. Ha a tábla beépített partícióval rendelkezik, használja a "Tábla fizikai partíciói" partíciós lehetőséget a jobb teljesítmény érdekében.
  3. Ha az Azure Integration Runtime használ az adatok másolására, nagyobb " Adatintegrációs egységek(DIU)" (>4) beállítással több számítási erőforrást használhat. Ellenőrizze a vonatkozó forgatókönyveket.
  4. "Amásolás párhuzamosságának foka" a partíciószámokat szabályozhatja, és ezt a számot túl nagyra állítva a teljesítményt okozva, javasoljuk, hogy ezt a számot a következőre kell beállítva: (DIU vagy saját üzemelő integrációspont-csomópontok száma) * (2–4).

Példa: teljes betöltés nagy táblából fizikai partícióval

"source": {
    "type": "AzurePostgreSqlSource",
    "partitionOption": "PhysicalPartitionsOfTable"
}

Példa: lekérdezés dinamikustartomány-partícióval

"source": {
    "type": "AzurePostgreSqlSource",
    "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>"
    }
}

Adatfolyam-tulajdonságok leképezése

Az adatok leképezési adatfolyamban való átalakításakor a táblákat a leképezési adatfolyamból olvashatja és írhatja Azure Database for PostgreSQL. További információért tekintse meg a forrás- és fogadóátalakítást a leképezési adatfolyamok között. Dönthet úgy, hogy egy Azure Database for PostgreSQL adatkészletet vagy egy beágyazott adatkészletet használ forrás- és fogadótípusként.

Forrásátalakítás

Az alábbi táblázat a forrás által támogatott Azure Database for PostgreSQL sorolja fel. Ezeket a tulajdonságokat a Forrásbeállítások lapon szerkesztheti.

Név Leírás Kötelező Megengedett értékek Adatfolyam-szkripttulajdonság
Tábla Ha a Tábla lehetőséget választja bemenetként, az adatfolyam lekéri az összes adatot az adatkészletben megadott táblából. No - (csak beágyazott adatkészlet esetén)
tableName
Lekérdezés Ha a Lekérdezés lehetőséget választja bemenetként, adjon meg egy SQL lekérdezést az adatok forrásból való lekéréséhez, amely felülbírálja az adatkészletben megadott összes táblát. A lekérdezések használatával remekül csökkenthetők a teszteléshez vagy keresésekhez használt sorok.

Az Order By záradék nem támogatott, de teljes SELECT FROM utasítást állíthat be. Felhasználó által definiált táblafunkciókat is használhat. A select * from udfGetData() egy UDF a SQL, amely egy adatfolyamban használható táblát ad vissza.
Példalekérdezés: select * from mytable where customerId > 1000 and customerId < 2000 vagy select * from "MyTable" . Megjegyzés a PostgreSQL-ben az entitás neve a kis- és a nagy- és a kis- és a nagy- és kis- és nagy- és kis- és a nagy- és kis- és nagy- és kis-
Nem Sztring lekérdezés
Köteg mérete Adjon meg egy kötegméretet a nagy méretű adatok kötegekbe való darabolására. No Egész szám batchSize
Elkülönítési szint Válasszon egyet a következő elkülönítési szintek közül:
- Read Committed
- Olvasás Nincs megadva (alapértelmezett)
– Ismételhető olvasás
- Szerializálható
- Nincs (hagyja figyelmen kívül az elkülönítési szintet)
No READ_COMMITTED
READ_UNCOMMITTED
REPEATABLE_READ
SZERIALIZÁLHATÓ
NINCS
isolationLevel (elkülönítési szint)

Azure Database for PostgreSQL példaszk szkriptre

Ha forrástípusként Azure Database for PostgreSQL, a társított adatfolyam-szkript a következő:

source(allowSchemaDrift: true,
    validateSchema: false,
    isolationLevel: 'READ_UNCOMMITTED',
    query: 'select * from mytable',
    format: 'query') ~> AzurePostgreSQLSource

Fogadó-átalakítás

Az alábbi táblázat a fogadó által támogatott Azure Database for PostgreSQL sorolja fel. Ezeket a tulajdonságokat a Fogadó beállításai lapon szerkesztheti.

Név Leírás Kötelező Megengedett értékek Adatfolyam-szkripttulajdonság
Update metódus Adja meg, hogy milyen műveletek engedélyezettek az adatbázis célhelyen. Az alapértelmezett beállítás az, hogy csak a beszúrásokat engedélyezi.
A sorok frissítéséhez, upsert műveletéhez vagy törléséhez alter row transformation (Sor átalakítása) műveletre van szükség az ilyen műveletek sorának címkézéséhez.
Yes true vagy false törölhető
beszúrható
Frissíthető
upsertable
Kulcsoszlopok A frissítésekhez, upserts és deletes oszlopokhoz kulcsoszlop(ak)t kell beállítani annak meghatározásához, hogy melyik sort kell módosítani.
A kulcsként kijelölt oszlopnév a következő frissítés, upsert és delete részeként lesz használva. Ezért olyan oszlopot kell választania, amely létezik a Fogadó leképezésben.
No Tömb keys
Kulcsoszlopok írásának kihagyása Ha nem szeretné a kulcsoszlopba írni az értéket, válassza a "Kulcsoszlopok írásának kihagyása" lehetőséget. No true vagy false skipKeyWrites (SkipKey-átírások)
Tábla művelet Meghatározza, hogy az összes sort újra létre kell-e hozni, vagy el kell-e távolítani a céltáblából az írás előtt.
- Nincs: A táblán nem történik művelet.
- Újra: A tábla el lesz dobva, majd újra létre lesz hozva. Új tábla dinamikus létrehozásakor szükséges.
- Truncate: A céltábla összes sorát eltávolítja a rendszer.
No true vagy false Újra
Megcsonkít
Köteg mérete Adja meg, hogy a kötegek hány sort írjanak. 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 memória-kivételeket kockáztatnak. No Egész szám batchSize
Előzetes és utólagos SQL szkriptek Adjon meg többsoros SQL, amelyek végrehajtása (előfeldolgozás) előtt és után (utófeldolgozás) a fogadó adatbázisba lesznek írva. Nem Sztring preSQL-ek
postSQLs (postSQL-ek)

Azure Database for PostgreSQL példa fogadószk szkriptre

Ha fogadótípusként Azure Database for PostgreSQL, a társított adatfolyam-szkript a következő:

IncomingStream sink(allowSchemaDrift: true,
    validateSchema: false,
    deletable:false,
    insertable:true,
    updateable:true,
    upsertable:true,
    keys:['keyColumn'],
    format: 'table',
    skipDuplicateMapInputs: true,
    skipDuplicateMapOutputs: true) ~> AzurePostgreSQLSink

Keresési tevékenység tulajdonságai

A tulajdonságokkal kapcsolatos további információkért lásd: Keresési tevékenység.

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át lásd: Támogatott adattárak.