Share via


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 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
type 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. Nein
logSettiongs.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. Nein

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

Screenshot showing the UI to configure an inline script.

Inlineskripts lassen sich gut in Pipeline-CI/CD integrieren, da das Skript als Teil der Pipelinemetadaten gespeichert wird.

Logging

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

Protokollierungsoptionen:

  • Deaktivieren: Es wird keine Ausführungsausgabe protokolliert.
  • Aktivitätsausgabe – Die Ausgabe der Skriptausführung wird an die Aktivitätsausgabe angefügt. Sie kann von nachgeschalteten Aktivitäten genutzt werden. 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.

In den folgenden Artikeln erfahren Sie, wie Daten auf andere Weisen transformiert werden: