Dela via


Transformera data med hjälp av skriptaktiviteten i Azure Data Factory eller Synapse Analytics

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Tips

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Du använder datatransformeringsaktiviteter i en Data Factory- eller Synapse-pipeline för att transformera och bearbeta rådata till förutsägelser och insikter. Skriptaktiviteten är en av de omvandlingsaktiviteter som pipelines stöder. Den här artikeln bygger på artikeln transformeringsdata, som visar en allmän översikt över datatransformering och de omvandlingsaktiviteter som stöds.

Med hjälp av skriptaktiviteten kan du köra vanliga åtgärder med DML (Data Manipulation Language) och Data Definition Language (DDL). DML-instruktioner som INSERT, UPDATE, DELETE och SELECT låter användare infoga, ändra, ta bort och hämta data i databasen. DDL-instruktioner som CREATE, ALTER och DROP gör det möjligt för en databashanterare att skapa, ändra och ta bort databasobjekt som tabeller, index och användare.

Du kan använda skriptaktiviteten för att anropa ett SQL-skript i något av följande datalager i företaget eller på en virtuell Azure-dator (VM):

  • Azure Database for PostgreSQL (version 2.0)
  • Azure SQL Database
  • Azure Synapse Analytics
  • SQL Server Database. Om du använder SQL Server installerar du lokalt installerad integrationskörning på samma dator som är värd för databasen eller på en separat dator som har åtkomst till databasen. Lokalt installerad integrationskörning är en komponent som ansluter datakällor lokalt/på en virtuell Azure-dator med molntjänster på ett säkert och hanterat sätt. Mer information finns i artikeln om lokalt installerad integrationskörning .
  • Oracle
  • Snöflinga

Skriptet kan innehålla antingen en enda SQL-instruktion eller flera SQL-instruktioner som körs sekventiellt. Du kan använda skriptaktiviteten i följande syfte:

  • Trunkera en tabell som förberedelse för att infoga data.
  • Skapa, ändra och ta bort databasobjekt som tabeller och vyer.
  • Återskapa fakta- och dimensionstabeller innan du läser in data i dem.
  • Kör lagrade procedurer. Om SQL-instruktionen anropar en lagrad procedur som returnerar resultat från en tillfällig tabell använder du alternativet WITH RESULT SETS för att definiera metadata för resultatuppsättningen.
  • Spara raduppsättningen som returneras från en fråga som aktivitetsutdata för nedströmsförbrukning.

Syntaxinformation

Här är JSON-formatet för att definiera en skriptaktivitet:

{ 
   "name": "<activity name>", 
   "type": "Script", 
   "linkedServiceName": { 
      "referenceName": "<name>", 
      "type": "LinkedServiceReference" 
    }, 
   "typeProperties": { 
      "scripts" : [ 
         { 
            "text": "<Script Block>", 
            "type": "<Query> or <NonQuery>", 
            "parameters":[ 
               { 
                  "name": "<name>", 
                  "value": "<value>", 
                  "type": "<type>", 
                  "direction": "<Input> or <Output> or <InputOutput>", 
                  "size": 256 
               }, 
               ... 
            ] 
         }, 
         ... 
      ],     
         ... 
         ] 
      }, 
      "scriptBlockExecutionTimeout": "<time>",  
      "logSettings": { 
         "logDestination": "<ActivityOutput> or <ExternalStore>", 
         "logLocationSettings":{ 
            "linkedServiceName":{ 
               "referenceName": "<name>", 
               "type": "<LinkedServiceReference>" 
            }, 
            "path": "<folder path>" 
         } 
      } 
    } 
} 

I följande tabell beskrivs dessa JSON-egenskaper:

Egenskapsnamn beskrivning Obligatoriskt
namn Namnet på aktiviteten. Ja
typ Typen av aktivitet, inställd på "Script". Ja
typeProperties Ange egenskaper för att konfigurera skriptaktiviteten. Ja
länkadTjänstNamn Måldatabasen som skriptet körs på. Det bör vara en referens till en länkad tjänst. Ja
skript En matris med objekt som representerar skriptet. Nej
scripts.text Oformaterad text i ett block med frågor. Nej
scripts.type Typ av block med frågor. Det kan vara Fråga eller NonQuery. Standard: Sökfråga. Nej
scripts.parameter Matrisen med parametrar för skriptet. Nej
scripts.parameter.name Namnet på parametern. Nej
scripts.parameter.värde Värdet för parametern. Nej
scripts.parameter.typ Parameterns datatyp. Typsorten är logisk typ och följer typmappningen av varje anslutning. Nej
scripts.parameter.direction Parameterns riktning. Det kan vara Input, Output, InputOutput. Värdet ignoreras om riktningen är Utgång. ReturnValue-typen stöds inte. Ange returvärdet för SP till en utdataparameter för att hämta den. Nej
scripts.parameter.size Den maximala storleken på parametern. Gäller endast för parametern Output/InputOutput direction av typen string/byte[]. Nej
scriptBlockExecutionTimeout Väntetiden för att körningen av skriptblocket ska slutföras innan tidsgränsen uppnås. Nej
logginställningar Inställningarna för att lagra utdataloggarna. Om det inte anges inaktiveras skriptloggen. Nej
loggInställningar.loggDestination Destinationen för loggutdata. Det kan vara ActivityOutput eller ExternalStore. Standard: ActivityOutput. Nej
loggInställningar.loggPlatsInställningar Inställningarna för målplatsen om logDestination är ExternalStore. Nej
logSettings.logLocationSettings.linkedServiceName Den länkade tjänsten för destinationen. Endast bloblagring stöds. Nej
logSettings.logLocationSettings.path Mappsökvägen under vilken loggar ska lagras. Nej

Aktivitetsutdata

Exempel på utdata:

{ 
    "resultSetCount": 2, 
    "resultSets": [ 
        { 
            "rowCount": 10, 
            "rows":[ 
                { 
                    "<columnName1>": "<value1>", 
                    "<columnName2>": "<value2>", 
                    ... 
                } 
            ] 
        }, 
        ... 
    ], 
    "recordsAffected": 123, 
    "outputParameters":{ 
        "<parameterName1>": "<value1>", 
        "<parameterName2>": "<value2>" 
    }, 
    "outputLogs": "<logs>", 
    "outputLogsLocation": "<folder path>", 
    "outputTruncated": true, 
    ... 
} 
Egenskapsnamn beskrivning Villkor
resultSetCount Antalet resultatuppsättningar som returneras av skriptet. Alltid
Resultatuppsättningar Matrisen som innehåller alla resultatuppsättningar. Alltid
resultSets.rowCount Totalt antal rader i resultatuppsättningen. Alltid
resultatuppsättningar.rader Arrayen med rader i resultatuppsättningen. Alltid
påverkadePoster Antalet rader som påverkas av skriptet. Om scriptType är NonQuery
outputParameters Utdataparametrarna för skriptet. Om parametertypen är Output eller InputOutput.
outputLogs Loggarna som skrivs av skriptet, till exempel utskriftskommando. Om anslutningsappen stöder log statement och enableScriptLogs är sant och logLocationSettings inte tillhandahålls.
outputLogsPath Loggfilens fullständiga sökväg. Om enableScriptLogs är sant och logLocationSettings tillhandahålls.
utdataTrunkerat Indikator på om utdata överskrider gränserna och trunkeras. Om utdata överskrider gränserna.

Kommentar

  • Utdata samlas in varje gång ett skriptblock körs. De slutliga utdata är det sammanslagna resultatet av alla skriptblockutdata. Utdataparametern med samma namn i ett annat skriptblock skrivs över.
  • Eftersom utdata har storleks-/radbegränsning trunkeras utdata i följande ordning: loggar –> parametrar –> rader. Detta gäller för ett enda skriptblock, vilket innebär att utdataraderna i nästa skriptblock inte tar bort tidigare loggar.
  • Eventuella fel orsakade av loggen kommer inte att leda till att aktiviteten misslyckas.
  • Information om hur du använder resultatuppsättningar från aktivitetsutdata i nedströms aktivitet finns i dokumentationen för resultatuppslagning.
  • Använd outputLogs när du använder PRINT-instruktioner för loggningsändamål. Om frågan returnerar resultSets blir den tillgänglig i aktivitetsutdata och begränsas till 5 000 rader/storleksgräns på 4 MB.

Konfigurera skriptaktiviteten med hjälp av användargränssnittet

Inline-skript

Skärmbild som visar användargränssnittet för att konfigurera ett infogat skript.

Infogade skript integreras väl med Pipeline CI/CD eftersom skriptet lagras som en del av pipelinemetadata.

Loggning

Skärmbild som visar användargränssnittet för loggningsinställningarna för ett skript.

Loggningsalternativ:

  • Inaktivera – Inga körningsutdata loggas.
  • Aktivitetsutdata – Utdata från skriptkörning läggs till i aktivitetsutdatat. Underordnade aktiviteter kan sedan använda den. Utdatastorleken är begränsad till 4 MB.
  • Extern lagring – bevarar utdata till lagring. Använd det här alternativet om utdatastorleken är större än 2 MB eller om du uttryckligen vill spara utdata på ditt lagringskonto.

Kommentar

Fakturering – Skriptaktiviteten faktureras som pipelineaktiviteter.

Se följande artiklar som förklarar hur du transformerar data på andra sätt: