Transformieren von Daten mithilfe der Skriptaktivität in Azure Data Factory oder Synapse Analytics
GILT FÜR: Azure Data Factory Azure Synapse Analytics
Tipp
Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!
Sie verwenden Transformationsaktivitäten in einer Data Factory- oder Synapse-Pipeline, um Rohdaten in Vorhersagen und Erkenntnisse zu transformieren und zu verarbeiten. Die Skriptaktivität ist eine der Transformationsaktivitäten, die Pipelines unterstützen. Dieser Artikel baut auf dem Artikel zum Transformieren von Daten auf, der eine allgemeine Übersicht über die Datentransformation und die unterstützten Transformationsaktivitäten bietet.
Mithilfe der Skriptaktivität können Sie allgemeine Vorgänge mit der Datenbearbeitungssprache (Data Manipulation Language, DML) und der Datendefinitionssprache (Data Definition Language, DDL) ausführen. DML-Anweisungen wie INSERT, UPDATE, DELETE und SELECT ermöglichen Benutzern und Benutzerinnen das Einfügen, Ändern, Löschen und Abrufen von Daten in der Datenbank. DDL-Anweisungen wie CREATE, ALTER und DROP ermöglichen einem Datenbank-Manager das Erstellen, Ändern und Entfernen von Datenbankobjekten wie Tabellen, Indizes und Benutzern.
Mit der Skriptaktivität können Sie ein SQL-Skript in einem der folgenden Datenspeicher in Ihrem Unternehmen oder auf einem virtuellen Azure-Computer (VM) aufrufen:
- Azure SQL-Datenbank
- Azure Synapse Analytics
- SQL Server-Datenbank. Wenn Sie SQL Server verwenden, müssen Sie die selbstgehostete Integration Runtime auf dem Computer installieren, der die Datenbank hostet, oder auf einem separaten Computer, der Zugriff auf die Datenbank hat. Die selbstgehostete Integration Runtime ist eine Komponente, die lokale Datenquellen bzw. Datenquellen auf virtuellen Azure Computern mit Clouddiensten auf sichere und verwaltete Weise verbindet. Im Artikel Selbstgehostete Integration Runtime finden Sie Details.
- Oracle
- Snowflake
Das Skript kann eine oder mehrere SQL-Anweisungen enthalten, die sequenziell ausgeführt werden. Der Skripttask kann für folgende Zwecke verwendet werden:
- Abschneiden einer Tabelle, um das Einfügen von Daten vorzubereiten.
- Erstellen, Ändern und Löschen von Datenbankobjekten, wie z. B. Tabellen und Sichten.
- Neuerstellen von Fakten- und Dimensionstabellen vor dem Laden von Daten.
- Ausführen gespeicherter Prozeduren. Wenn Sie mithilfe einer SQL-Anweisung eine gespeicherte Prozedur aufrufen, die Ergebnisse von einer temporären Tabelle zurückgibt, verwenden Sie die WITH RESULT SETS-Option, um Metadaten für das Resultset zu definieren.
- Speichern Sie das von einer Abfrage zurückgegebene Rowset als Aktivitätsausgabe für die nachgeschaltete Nutzung.
Syntaxdetails
Hier sehen Sie das JSON-Format zum Definieren einer Skriptaktivität:
{
"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>"
}
}
}
}
In der folgenden Tabelle werden diese JSON-Eigenschaften beschrieben:
Eigenschaftenname | BESCHREIBUNG | Erforderlich |
---|---|---|
name | Der Name der Aktivität. | Ja |
Typ | Der Typ der Aktivität, der auf „Script“ festgelegt ist. | Ja |
typeProperties | Geben Sie Eigenschaften zum Konfigurieren der Skriptaktivität an. | Ja |
linkedServiceName | Die Zieldatenbank, auf der das Skript ausgeführt wird. Dies sollte ein Verweis auf einen verknüpften Dienst sein. | Ja |
In Skripts | Ein Array von Objekten, die das Skript darstellen sollen. | Nein |
scripts.text | Der reine Text eines Abfrageblocks. | Nein |
scripts.type | Der Typ des Abfrageblocks. Dieser kann „Query“ oder „NonQuery“ sein. Der Standardwert ist „Query“. | Nein |
scripts.parameter | Das Array von Parametern des Skripts. | Nein |
scripts.parameter.name | Der Name des Parameters. | Nein |
scripts.parameter.value | Der Wert des Parameters. | Nein |
scripts.parameter.type | Der Datentyp des Parameters. Der Typ ist ein logischer Typ und folgt der Typzuordnung jedes Connectors. | Nein |
scripts.parameter.direction | Die Richtung des Parameters. Dies kann „Input“, „Output“ oder „InputOutput“ sein. Der Wert wird ignoriert, wenn die Richtung „Output“ lautet. Der Typ „ReturnValue“ wird nicht unterstützt. Legen Sie den Rückgabewert von SP auf einen Ausgabeparameter fest, um ihn abzurufen. | Nein |
scripts.parameter.size | Die maximale Größe des Parameters. Gilt nur für den Richtungsparameter „Output“/„InputOutput“ vom Typ „string/byte[]“. | Nein |
scriptBlockExecutionTimeout | Die Wartezeit für den Abschluss der Skriptblockausführung, bevor ein Timeout auftritt. | Nein |
logSettings | Die Einstellungen zum Speichern der Ausgabeprotokolle. Wenn keine Angabe erfolgt, ist das Skriptprotokoll deaktiviert. | Nein |
logSettings.logDestination | Das Ziel der Protokollausgabe. Dies kann „ActivityOutput“ oder „ExternalStore“ sein. Der Standardwert ist „ActivityOutput“. | Nein |
logSettings.logLocationSettings | Die Einstellungen des Zielspeicherorts, wenn „logDestination“ auf „ExternalStore“ festgelegt ist. | No |
logSettings.logLocationSettings.linkedServiceName | Der verknüpfte Dienst des Zielspeicherorts. Es wird nur Blobspeicher unterstützt. | Nein |
logSettings.logLocationSettings.path | Der Ordnerpfad, unter dem Protokolle gespeichert werden sollen. | No |
Aktivitätsausgabe
Beispielausgabe:
{
"resultSetCount": 2,
"resultSets": [
{
"rowCount": 10,
"rows":[
{
"<columnName1>": "<value1>",
"<columnName2>": "<value2>",
...
}
]
},
...
],
"recordsAffected": 123,
"outputParameters":{
"<parameterName1>": "<value1>",
"<parameterName2>": "<value2>"
},
"outputLogs": "<logs>",
"outputLogsLocation": "<folder path>",
"outputTruncated": true,
...
}
Eigenschaftenname | Beschreibung | Bedingung |
---|---|---|
resultSetCount | Die Anzahl der vom Skript zurückgegebenen Resultsets. | Always |
resultSets | Das Array, das alle Resultsets enthält. | Always |
resultSets.rowCount | Gesamtzeilen im Resultset. | Always |
resultSets.rows | Das Array von Zeilen im Resultset. | Always |
recordsAffected | Die Anzahl der vom Skript betroffenen Zeilen. | Wenn „scriptType“ auf „NonQuery“ festgelegt ist |
outputParameters | Die Ausgabeparameter des Skripts. | Wenn der Parametertyp auf „Output“ oder „InputOutput“ festgelegt ist. |
outputLogs | Die vom Skript geschriebenen Protokolle, z. B. Druckanweisung. | Wenn der Connector die Protokollanweisung unterstützt, „enableScriptLogs“ auf „true“ festgelegt ist und „logLocationSettings“ nicht bereitgestellt wird. |
outputLogsPath | Der vollständige Pfad der Protokolldatei. | Wenn „enableScriptLogs“ auf „true“ festgelegt ist und „logLocationSettings“ bereitgestellt wird. |
outputTruncated | Indikator, ob die Ausgabe die Grenzwerte überschreitet und abgeschnitten wird. | Wenn die Ausgabe die Grenzwerte überschreitet. |
Hinweis
- Die Ausgabe wird bei jeder Ausführung eines Skriptblocks erfasst. Die letztendliche Ausgabe ist das zusammengeführte Ergebnis aller Skriptblockausgaben. Der Ausgabeparameter mit demselben Namen in einem anderen Skriptblock wird überschrieben.
- Da die Ausgabe eine Größen-/Zeilenbeschränkung aufweist, wird die Ausgabe in der folgenden Reihenfolge abgeschnitten: Protokolle -> Parameter -> Zeilen. Beachten Sie, dass dies für einen einzelnen Skriptblock gilt. Das bedeutet, dass durch die Ausgabezeilen des nächsten Skriptblocks vorherige Protokolle nicht entfernt werden.
- Fehler, die durch das Protokoll verursacht werden, führen nicht zu Fehlern bei der Aktivität.
- Informationen zur Verwendung von Resultsets der Aktivitätsausgabe in nachgeschalteten Aktivitäten finden Sie in der Dokumentation zum Ergebnis der Lookup-Aktivität.
- Verwenden Sie „outputLogs“, wenn Sie „PRINT“-Anweisungen zu Protokollierungszwecken verwenden. Wenn die Abfrage Resultsets zurückgibt, ist sie in der Aktivitätsausgabe verfügbar und auf 5.000 Zeilen bzw. eine Größe von 4 MB beschränkt.
Konfigurieren der Skriptaktivität über die Benutzeroberfläche
Inlineskript
Inlineskripts lassen sich gut in Pipeline-CI/CD integrieren, da das Skript als Teil der Pipelinemetadaten gespeichert wird.
Protokollierung
Protokollierungsoptionen:
- Deaktivieren: Es wird keine Ausführungsausgabe protokolliert.
- Aktivitätsausgabe – Die Ausgabe der Skriptausführung wird an die Aktivitätsausgabe angefügt. Nachgeschaltete Aktivitäten können ihn dann nutzen. Die Ausgabegröße ist auf 4 MB beschränkt.
- Externer Speicher – Die Ausgabe wird im Speicher aufbewahrt. Verwenden Sie diese Option, wenn die Ausgabegröße 2 MB übersteigt oder Sie die Ausgabe explizit in Ihrem Speicherkonto aufbewahren möchten.
Hinweis
Abrechnung: Die Skriptaktivität wird als Pipelineaktivitätenabgerechnet.
Zugehöriger Inhalt
In den folgenden Artikeln erfahren Sie, wie Daten auf andere Weisen transformiert werden: