Megosztás a következőn keresztül:


Szkripttevékenység létrehozása a Microsoft Fabric Data Factoryben

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és SELECT.
  • Data Definition Language (DDL) utasítások: CREATE, ALTERés DROP.

Előfeltételek

Szkripttevékenység létrehozása

  1. A Microsoft Fabricben válassza ki a munkaterületet, váltson a Data Factoryre, majd válassza az Új elem gombot.

  2. Az Új elem panelen keressen rá a pipeline, és válassza ki az Adatcsővezeték csempét.

    Képernyőkép az adatfolyam létrehozásának megkezdéséhez szükséges kijelölésekről.

  3. Az Új folyamat párbeszédpanelen adjon meg egy nevet, majd a Létrehozás gombra kattintva hozzon létre egy adatfolyamot.

    Új folyamat elnevezésére szolgáló párbeszédpanel képernyőképe.

  4. A Tevékenységek menüben válassza a Szkript ikont.

    Képernyőkép egy szkripttevékenység kiválasztására szolgáló ikonról.

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

    Képernyőkép arról, hogy hol adhat nevet egy szkripttevékenységnek az Általános lapon.

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

    Egy kapcsolat példabeállítását bemutató képernyőkép.

  7. Válassza a Lekérdezés vagy a Nem lekérdezés lehetőséget a szkripttől függően.

    Képernyőkép egy szkript lekérdezési és nem lekérdezési beállításairól.

    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.

    Képernyőkép egy lekérdezési szkript mintájáról.

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

Képernyőkép egy új szkriptbemenet létrehozására szolgáló gombról és mezőről.

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.

Képernyőkép, amely bemutatja, hogyan adhat hozzá egy második mezőt a szkriptbemenethez.

Ha törölni szeretne egy lekérdezési beviteli mezőt, válassza a Mező Törlése ikont.

Képernyőkép a Szkript beviteli mezőinek Törlés ikonról.

Í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ő indexben 1.

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

Képernyőkép egy kimeneti paraméter példájáról, amelyen az értékek null értékként való kezelésére kijelölt jelölőnégyzetek láthatók.

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.

Képernyőkép egy érvényes pozícióparaméterről.

{
    "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.

Képernyőkép egy szkripttevékenység speciális beállításával a szkriptblokk végrehajtási időtúllépésének beállításához.

    "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:

  1. A Beállítások lapon bontsa ki a Speciális szakaszt.

  2. Jelölje be a Naplózás engedélyezése jelölőnégyzetet és a Külső tárolás lehetőséget.

  3. Blob Storage-fiók hozzáadásához hozzon létre egy új társított szolgáltatást a Blob Storage-fiókhoz.

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

Képernyőkép egy külső naplózási példáról.

"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:

  1. A Beállítások lapon bontsa ki a Speciális szakaszt.

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

A tevékenységkimenet naplózásának beállítására szolgáló kijelöléseket bemutató képernyőkép.

"typeProperties": {
   "scripts": [
      {
         "type": "Query",
         "text": "DO $$ BEGIN RAISE Notice 'Hello'; RAISE Notice 'World!'; END $$;"
      }
   ],
   "scriptBlockExecutionTimeout": "02:00:00",
   "logSettings": {
      "logDestination": "ActivityOutput"
   }
}