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 |
logSettings | Inställningarna för att lagra utdataloggarna. Om det inte anges inaktiveras skriptloggen. | Nej |
logSettings.logDestination | Målet för loggutdata. Det kan vara ActivityOutput eller ExternalStore. Standard: ActivityOutput. | Nej |
logSettings.logLocationSettings | Inställningarna för målplatsen om logDestination är ExternalStore. | Nej |
logSettiongs.logLocationSettings.linkedServiceName | Den länkade tjänsten för målplatsen. 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 |
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 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. |
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
Infogade skript integreras väl med Pipeline CI/CD eftersom skriptet lagras som en del av pipelinemetadata.
Loggning
Loggningsalternativ:
- Inaktivera – Inga körningsutdata loggas.
- Aktivitetsutdata – Skriptkörningsutdata läggs till i aktivitetsutdata. 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.
Relaterat innehåll
Se följande artiklar som förklarar hur du transformerar data på andra sätt: