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

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

Dricks

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 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
  • Snowflake

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
name Namnet på aktiviteten. Ja
type Typen av aktivitet, inställd på "Script". Ja
typeProperties Ange egenskaper för att konfigurera skriptaktiviteten. Ja
linkedServiceName 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: Fråga. Nej
scripts.parameter Matrisen med parametrar för skriptet. Nej
scripts.parameter.name Namnet på parametern. Nej
scripts.parameter.value Värdet för parametern. Nej
scripts.parameter.type Parameterns datatyp. Typen är logisk typ och följer typmappningen av varje anslutningsapp. Nej
scripts.parameter.direction Parameterns riktning. Det kan vara Input, Output, InputOutput. Värdet ignoreras om riktningen är Utdata. 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
logg Inställningar Inställningarna för att lagra utdataloggarna. Om det inte anges inaktiveras skriptloggen. Nej
log Inställningar.logDestination Målet för loggutdata. Det kan vara ActivityOutput eller ExternalStore. Standard: ActivityOutput. Nej
log Inställningar.logLocation Inställningar Inställningarna för målplatsen om logDestination är ExternalStore. Nej
logSettiongs.logLocation Inställningar.linkedServiceName Den länkade tjänsten för målplatsen. Endast bloblagring stöds. Nej
log Inställningar.logLocation Inställningar.path Mappsökvägen under vilken loggarna 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
resultSets Matrisen som innehåller alla resultatuppsättningar. Alltid
resultSets.rowCount Totalt antal rader i resultatuppsättningen. Alltid
resultSets.rows Matrisen med rader i resultatuppsättningen. Alltid
recordsAffected Radantalet berörda rader 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 utskriftsinstruktor. Om anslutningsappen stöder logguttryck och enableScriptLogs är sant och logLocation Inställningar inte anges.
outputLogsPath Loggfilens fullständiga sökväg. Om enableScriptLogs är sant och logLocation Inställningar anges.
outputTruncated 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. Observera att detta gäller för ett enda skriptblock, vilket innebär att utdataraderna i nästa skriptblock inte tar bort tidigare loggar.
  • Eventuella fel som orsakas av loggen misslyckas inte.
  • Information om hur du använder aktivitetsresultatUppsättningar i nedströmsaktivitet finns i dokumentationen om resultat för uppslagsaktivitet.
  • 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

Infogat skript

Screenshot showing the UI to configure an inline script.

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

Loggning

Screenshot showing the UI for the logging settings for a script.

Loggningsalternativ:

  • Inaktivera – Inga körningsutdata loggas.
  • Aktivitetsutdata – Skriptkörningsutdata läggs till i aktivitetsutdata. Den kan användas av underordnade aktiviteter. 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: