Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik: Azure Database for PostgreSQL – Rugalmas kiszolgáló
Ebben a cikkben megtudhatja, hogyan hozhat létre szkripttevékenységet a Microsoft Fabric Data Factoryben egyéni PostgreSQL-lekérdezések futtatásához. A szkripttevékenységekkel különböző típusú PostgreSQL-parancsokat futtathat közvetlenül a folyamatokban. Ezek a parancsok a következők:
- Adatmanipulációs nyelv (DML) utasítások:
INSERT
,UPDATE
,DELETE
ésSELECT
. - Data Definition Language (DDL) utasítások:
CREATE
,ALTER
ésDROP
.
Előfeltételek
- Azure Database for PostgreSQL rugalmas kiszolgáló. További információ: Rugalmas Azure Database for PostgreSQL-kiszolgáló létrehozása.
- Egy Microsoft Fabric Data Factory adatcsatorna.
Szkripttevékenység létrehozása
A Microsoft Fabricben válassza ki a munkaterületet, váltson a Data Factoryre, majd válassza az Új elem gombot.
Az Új elem panelen keressen rá a pipeline, és válassza ki az Adatcsővezeték csempét.
Az Új folyamat párbeszédpanelen adjon meg egy nevet, majd a Létrehozás gombra kattintva hozzon létre egy adatfolyamot.
A Tevékenységek menüben válassza a Szkript ikont.
Ha a szkripttevékenység ki van jelölve az adatfolyam vásznán, az Általános lapon adja meg a tevékenység nevét.
A Beállítások lapon válassza ki az Azure Database for PostgreSQL-kapcsolatot, vagy hozzon létre egy újat a Továbbiak lehetőséggel. További információ az adatokhoz való kapcsolódásról az adatfolyamok modern adat-hozzáférési élményének használatával.
Válassza a Lekérdezés vagy a Nem lekérdezés lehetőséget a szkripttől függően.
A szkripttevékenység mind a lekérdezési, mind a nem lekérdezési utasításokat támogatja.
A lekérdezési utasítások postgreSQL-utasításokat (gyakran
SELECT
utasításokat) hajtanak végre, amelyek eredményeket adnak vissza. A lekérdezési utasítás adatrekordokat ad vissza.Íme egy mintapayload egy lekérdezési kifejezéssel:
{ "name": "Sample of select statement", "type": "Script", "dependsOn": [], "policy": { "timeout": "0.12:00:00", "retry": 0, "retryIntervalInSeconds": 30, "secureOutput": false, "secureInput": false }, "typeProperties": { "scripts": [ { "type": "Query", "text": { "value": "SELECT * FROM sample_table WHERE sample_int =100", "type": "Expression" } } ], "scriptBlockExecutionTimeout": "02:00:00" }, "externalReferences": { "connection": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } }
Több szkript létrehozása egy szkripttevékenységen belül
A Beállítások lapon több lekérdezést is konfigurálhat egy szkripttevékenységben. Új szkriptbemenet hozzáadásához válassza a Plusz (+) gombot a Szkript területen.
A gombot többször is kijelölheti + attól függően, hogy hány szkriptbemenetet szeretne létrehozni. Ha például két új szkriptbemenetet szeretne hozzáadni, jelölje ki kétszer a + gombot.
Ha törölni szeretne egy lekérdezési beviteli mezőt, válassza a Mező Törlése ikont.
Íme egy hasznos adatminta két külön lekérdezéssel:
{
"name": "Sample of multiple select statements",
"type": "Script",
"dependsOn": [],
"policy": {
"timeout": "0.12:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"typeProperties": {
"scripts": [
{
"type": "Query",
"text": {
"value": "SELECT * FROM sample_table WHERE sample_int = 100;",
"type": "Expression"
}
},
{
"type": "Query",
"text": {
"value": "SELECT * FROM sample_table WHERE sample_int > 250;",
"type": "Expression"
}
}
],
"scriptBlockExecutionTimeout": "02:00:00"
},
"externalReferences": {
"connection": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
Szkriptparaméterek használata
Fontos
A kimeneti paramétereket használó több lekérdezési utasítás nem támogatott. A kimeneti lekérdezéseket külön szkriptblokkokra kell felosztania egy szkripttevékenységen belül.
A szkripttevékenységek kétféle szkriptparamétert támogatnak:
- Az elnevezett paraméterek a paraméterek nevére épülnek, és a lekérdezésben megadottak szerint
@<name>
vannak megadva. - A pozicionálási paraméterek a paraméterek indexén alapulnak, és a lekérdezésben (sorrendben) vannak megadva, mint
$<position number>
a kezdő indexben1
.
Elnevezett paraméterek (ajánlott)
A kimeneti paraméterként elnevezett paraméterekhez használja az @
előtagot. Állítsa be az értéket null
-ként a felhasználói felületen a "Null értékként kezel" jelölőnégyzettel bejelölve, és hagyja üresen a terhelést vagy null
-t. A szöveg értékének a következőnek kell lennie null
: .
Az eljárás során a kimenethez megadott név az adat resultSets
kimenetben használt név. A rendszer a felhasználói felület kimeneti sorában megadott nevet használja a névhez outputParameters
.
Íme egy mintaeredmény a felhasználói felület végrehajtásából:
{
"resultSetCount": 1,
"recordsAffected": 0,
"resultSets": [
{
"rowCount": 1,
"rows": [
{
"output1": 10,
"output2": "\"Hello World\""
}
]
}
],
"outputParameters": {
"output10": 10,
"output20": "\"Hello World\""
}
}
Íme egy adatcsomag minta a kimeneti paraméter számára:
{
"scripts": [
{
"type": "NonQuery",
"text": "CREATE OR REPLACE PROCEDURE swap_proc (input1 IN TEXT, input2 IN BIGINT, output1 OUT BIGINT, output2 OUT TEXT) LANGUAGE plpgsql AS $$ DECLARE BEGIN output2 := input1; output1 := input2; END $$ "
},
{
"parameters": [
{
"name": "input1",
"type": "String",
"value": "Hello world",
"direction": "Input"
},
{
"name": "input2",
"type": "Int32",
"value": "1234",
"direction": "Input"
},
{
"name": "output1",
"type": "Int32",
"value": "",
"direction": "Output"
},
{
"name": "output2",
"type": "String",
"value": "",
"direction": "Output",
"size": 100
}
],
"type": "Query",
"text": "CALL swap_proc(@input1, @input2, null, null)"
}
],
"scriptBlockExecutionTimeout": "02:00:00"
}
Pozícióparaméterek
Fontos
A pozícióparamétereket használó több lekérdezési utasítás nem támogatott. Győződjön meg arról, hogy a helyparaméterekkel rendelkező lekérdezések külön szkriptblokkokban találhatók egy szkripttevékenységen belül.
Pozícióparaméterek használatához használjon helyőrzőt $<positional number>
a lekérdezésben. A felhasználói felületen a Szkriptparaméterek területen a Név mezőt üresen kell hagyni. A hasznos teherben a name
mezőt null
szerint kell megadni.
Az alábbi példa egy érvényes pozícióparamétert mutat be.
{
"name": "Sample for valid positional parameter",
"type": "Script",
"dependsOn": [],
"policy": {
"timeout": "0.12:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"typeProperties": {
"scripts": [
{
"parameters": [
{
"type": "String",
"value": "John",
"direction": "Input"
},
{
"type": "Int32",
"value": "52",
"direction": "Input"
}
],
"type": "Query",
"text": {
"value": "SELECT * FROM customers WHERE first_name = $1 and age = $2;",
"type": "Expression"
}
}
],
"scriptBlockExecutionTimeout": "02:00:00"
},
"externalReferences": {
"connection": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
Az alábbi példa egy érvénytelen pozícióparamétert mutat be:
{
"name": "Sample for invalid positional parameter",
"type": "Script",
"dependsOn": [],
"policy": {
"timeout": "0.12:00:00",
"retry": 0,
"retryIntervalInSeconds": 30,
"secureOutput": false,
"secureInput": false
},
"typeProperties": {
"scripts": [
{
"parameters": [
{
"type": "String",
"value": "John",
"direction": "Input"
},
{
"type": "Int32",
"value": "52",
"direction": "Input"
}
],
"type": "Query",
"text": {
"value": "SELECT * FROM customers WHERE first_name = $1; SELECT * FROM customers WHERE age = $2;",
"type": "Expression"
}
}
],
"scriptBlockExecutionTimeout": "02:00:00"
},
"externalReferences": {
"connection": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
Speciális beállítások konfigurálása
Szkriptblokkok végrehajtási időtúllépése
Az időtúllépést percek alatt konfigurálhatja minden futtatott szkriptblokkhoz. Ha a szkripttevékenység bármely szkriptblokkja túllépi a megadott időtúllépést, a teljes tevékenység meghiúsul.
"typeProperties": {
"scripts": [
{
"type": "Query",
"text": {
"value": "SELECT pg_sleep(75);",
"type": "Expression"
}
}
],
"scriptBlockExecutionTimeout": "00:01:00"
},
"externalReferences": {
"connection": "9b351899-a92f-4e00-bc48-200a2c287f4c"
}
Fakitermelés
A PostgreSQL-értesítéseket naplózhatja egy külső Azure Blob Storage-fiókba vagy egy belső tárolóba.
Külső tároló
Külső naplózás beállítása:
A Beállítások lapon bontsa ki a Speciális szakaszt.
Jelölje be a Naplózás engedélyezése jelölőnégyzetet és a Külső tárolás lehetőséget.
Blob Storage-fiók hozzáadásához hozzon létre egy új társított szolgáltatást a Blob Storage-fiókhoz.
Igény szerint megadhat egy mappa elérési útját. Ha üresen hagyja a Mappa elérési útját , a naplók a
scriptactivity-logs
mappába kerülnek.
"typeProperties": {
"scripts": [
{
"type": "Query",
"text": "DO $$ BEGIN RAISE Notice 'Hello'; RAISE Notice 'World!'; END $$;"
}
],
"scriptBlockExecutionTimeout": "02:00:00",
"logSettings": {
"logDestination": "ExternalStore",
"logLocationSettings": {
"linkedServiceName": {
"referenceName": "<Azure Blob Storage linked service name>",
"type": "LinkedServiceReference"
},
"path": "<Azure Blob Storage folder path>"
}
}
}
Tevékenység kimenete
Naplózás beállítása a tevékenység kimenetében:
A Beállítások lapon bontsa ki a Speciális szakaszt.
Jelölje be a Naplózás engedélyezése jelölőnégyzetet és a Tevékenység kimenet beállítását.
"typeProperties": {
"scripts": [
{
"type": "Query",
"text": "DO $$ BEGIN RAISE Notice 'Hello'; RAISE Notice 'World!'; END $$;"
}
],
"scriptBlockExecutionTimeout": "02:00:00",
"logSettings": {
"logDestination": "ActivityOutput"
}
}