Kopieren und Transformieren von Daten von und zu einem REST-Endpunkt mithilfe von Azure Data Factory

Gilt für: Azure Data Factory Azure Synapse Analytics

Tipp

Data Factory in Microsoft Fabric ist die nächste Generation von Azure Data Factory mit einer einfacheren Architektur, integrierter KI und neuen Features. Wenn Sie mit der Datenintegration noch nicht vertraut sind, beginnen Sie mit Fabric Data Factory. Vorhandene ADF-Workloads können auf Fabric aktualisiert werden, um auf neue Funktionen in der Datenwissenschaft, Echtzeitanalysen und Berichterstellung zuzugreifen.

In diesem Artikel wird beschrieben, wie Sie die Kopieraktivität in Azure Data Factory verwenden, um Daten von und zu einem REST-Endpunkt zu kopieren. Der Artikel baut auf Copy Activity in Azure Data Factory auf, die eine allgemeine Übersicht über kopieraktivität darstellt.

Hinweis

Dieser Connector ist auch in Data Factory in Microsoft Fabric verfügbar. Informationen zu Fabric spezifischen Konfigurationen und Features finden Sie in der Dokumentation zu Fabric REST-Connector.

Die Unterschiede zwischen diesem REST-Connector, dem HTTP-Connector und dem Web-Table-Connector sind:

  • REST-Connector: Dieser unterstützt insbesondere das Kopieren von Daten aus RESTful-APIs.
  • Der HTTP-Connector ist generisch, um Daten von jedem HTTP-Endpunkt abzurufen, zum Beispiel um eine Datei herunterzuladen. Vor diesem REST-Connector könnte man den HTTP-Connector nutzen, um Daten aus RESTful-APIs zu kopieren, die zwar unterstützt werden, aber weniger funktional sind als der REST-Connector.
  • Webtabellen-Konnektor: Der extrahiert Tabelleninhalte aus einer HTML-Webseite.

Unterstützte Funktionen

Dieser REST-Connector wird für die folgenden Funktionen unterstützt:

Unterstützte Funktionen IR
Copy-Aktivität (Quelle/Senke) (1) (2)
Mapping-Datenfluss (Quelle/Senke)

(1) Azure Integrationslaufzeit (2) Selbst gehostete Integrationslaufzeit

Eine Liste der als Quellen/Senken unterstützten Datenspeicher finden Sie unter Unterstützte Datenspeicher.

Dieser allgemeine REST-Connector unterstützt Folgendes:

  • Daten von einem REST-Endpunkt mit den GET - oder POST-Methoden kopieren und Daten auf einen REST-Endpunkt mit den POST-, PUT- oder PATCH-Methoden kopieren.
  • Datenkopierung mittels Verwendung einer der folgenden Authentifizierungen: Anonym,Basic, Service Principal, OAuth2 Client Credential, System Assigned Managed Identity und User Assigned Managed Identity.
  • Paginierung in den REST-APIs.
  • Wenn REST die Quelle ist: Kopieren der unveränderten REST-JSON-Antwort oder Analysieren der Antwort mithilfe der Schemazuordnung. In JSON wird lediglich die Antwortnutzlast unterstützt.

Tipp

Um eine Anforderung für den Datenabruf zu testen, bevor Sie den REST-Connector in Data Factory konfigurieren, informieren Sie sich über die API-Spezifikation für Header- und Textanforderungen. Sie können Tools wie Visual Studio, Invoke-RestMethod in PowerShell oder einen Webbrowser zum Überprüfen verwenden.

Voraussetzungen

Wenn sich Ihr Datenspeicher in einem lokalen Netzwerk, einem Azure virtuellen Netzwerk oder amazon Virtual Private Cloud befindet, müssen Sie eine self-gehostete Integrationslaufzeit konfigurieren, um eine Verbindung damit herzustellen.

Wenn Ihr Datenspeicher ein verwalteter Clouddatendienst ist, können Sie die Azure Integration Runtime verwenden. Wenn der Zugriff auf IPs beschränkt ist, die in den Firewallregeln genehmigt wurden, können Sie der Zulassungsliste Azure Integration Runtime-IPs hinzufügen.

Sie können auch das Feature managed virtual network integration runtime in Azure Data Factory verwenden, um auf das lokale Netzwerk zuzugreifen, ohne eine selbst gehostete Integrationslaufzeit zu installieren und zu konfigurieren.

Weitere Informationen zu den von Data Factory unterstützten Netzwerksicherheitsmechanismen und -optionen finden Sie unter Datenzugriffsstrategien.

Erste Schritte

Zum Ausführen der Kopieraktivität mit einer Pipeline können Sie eines der folgenden Tools oder SDKs verwenden:

Erstellen eines verknüpften REST-Diensts über die Benutzeroberfläche

Führen Sie die folgenden Schritte aus, um einen REST-verknüpften Dienst in der benutzeroberfläche des Azure Portals zu erstellen.

  1. Navigieren Sie in Ihrem Azure Data Factory- oder Synapse-Arbeitsbereich zur Registerkarte "Verwalten", und wählen Sie "Verknüpfte Dienste" und dann "Neu" aus:

  2. Suchen Sie nach REST, und wählen Sie den REST-Connector aus.

    Screenshot der Auswahl des REST-Connectors.

  3. Konfigurieren Sie die Dienstdetails, testen Sie die Verbindung, und erstellen Sie den neuen verknüpften Dienst.

    Screenshot der Konfiguration des REST-verknüpften Dienstes.

Details zur Connectorkonfiguration

In den folgenden Abschnitten finden Sie Details zu Eigenschaften, mit denen Sie Data Factory-Entitäten definieren können, die für den REST-Connector spezifisch sind.

Eigenschaften des verknüpften Diensts

Folgende Eigenschaften werden für den mit REST verknüpften Dienst unterstützt:

Eigenschaft Beschreibung Erforderlich
Typ Die type-Eigenschaft muss auf RestService festgelegt werden. Ja
url Die Basis-URL des REST-Diensts. Ja
Serverzertifikatprüfung aktivieren Hiermit wird festgelegt, ob das serverseitige TLS-/SSL-Zertifikat beim Herstellen einer Verbindung mit dem Endpunkt überprüft werden soll. Nein
(der Standardwert ist TRUE)
Authentifizierungstyp Typ der Authentifizierung für die Verbindung mit dem REST-Dienst. Zulässige Werte: Anonymous, Basic, AadServicePrincipal, OAuth2ClientCredential und ManagedServiceIdentity. Außerdem können Sie Authentifizierungsheader in der authHeaders-Eigenschaft konfigurieren. Weitere Informationen zu anderen Eigenschaften und Beispiele finden Sie weiter unten in den jeweiligen Abschnitten. Ja
authHeaders Andere HTTP-Anforderungsheader für die Authentifizierung.
Um beispielsweise die API-Schlüsselauthentifizierung zu verwenden, können Sie den Authentifizierungstyp als "Anonym" auswählen und den API-Schlüssel im Header angeben.
Nein
connectVia Der Integration Runtime, der zum Herstellen einer Verbindung mit dem Datenspeicher verwendet werden soll. Weitere Informationen finden Sie im Abschnitt Voraussetzungen. Wenn nicht angegeben, verwendet diese Eigenschaft die Standard-Azure Integration Runtime. Nein

Ausführliche Informationen zu verschiedenen Authentifizierungstypen finden Sie in den entsprechenden Abschnitten.

Verwenden der Standardauthentifizierung

Legen Sie die authenticationType-Eigenschaft auf Basic fest. Geben Sie zusätzlich zu den im vorherigen Abschnitt beschriebenen generischen Eigenschaften die folgenden Eigenschaften an:

Eigenschaft Beschreibung Erforderlich
Nutzername Der Benutzername, der für den Zugriff auf den REST-Endpunkt verwendet werden soll. Ja
Passwort Das Kennwort für den Benutzer (der Wert userName). Markieren Sie dieses Feld als Typ SecureString, um es sicher in Data Factory zu speichern. Sie können auch ein Geheimnis referenzieren, das in Azure Key Vault gespeichert ist. Ja

Beispiel

{
    "name": "RESTLinkedService",
    "properties": {
        "type": "RestService",
        "typeProperties": {
            "authenticationType": "Basic",
            "url" : "<REST endpoint>",
            "userName": "<user name>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Verwenden Sie die Dienstprinzipalauthentifizierung

Legen Sie die authenticationType-Eigenschaft auf AadServicePrincipal fest. Geben Sie zusätzlich zu den im vorherigen Abschnitt beschriebenen generischen Eigenschaften die folgenden Eigenschaften an:

Eigenschaft Beschreibung Erforderlich
servicePrincipalId Geben Sie die Client-ID der Microsoft Entra Anwendung an. Ja
servicePrincipalCredentialType Geben Sie die Art der Anmeldeinformationen für die Dienstprinzipalauthentifizierung an. Zulässige Werte sind ServicePrincipalKey und ServicePrincipalCert. Nein
Für ServicePrincipalKey
servicePrincipalKey Geben Sie den Schlüssel der Microsoft Entra Anwendung an. Markieren Sie dieses Feld als SecureString, um es sicher in Data Factory zu speichern, oder verweisen Sie auf ein Geheimnis, das in Azure Key Vault gespeichert ist. Nein
Für ServicePrincipalCert
servicePrincipalEmbeddedCert Geben Sie das base64-codierte Zertifikat Ihrer Anwendung an, das in Microsoft Entra ID registriert ist, und stellen Sie sicher, dass der Zertifikatinhaltstyp PKCS #12 ist. Markieren Sie dieses Feld als SecureString, um es sicher zu speichern, oder verweisen Sie auf ein Geheimnis, das in Azure Key Vault gespeichert ist. Wechseln Sie zu diesem section, um zu erfahren, wie Sie das Zertifikat in Azure Key Vault speichern. Nein
servicePrincipalEmbeddedCertPassword Geben Sie das Kennwort Ihres Zertifikats an, falls Ihr Zertifikat mit einem Kennwort geschützt ist. Markieren Sie dieses Feld als SecureString, um es sicher zu speichern, oder verweisen Sie auf ein Geheimnis, das in Azure Key Vault gespeichert ist. Nein
Mieter Geben Sie die Mandanteninformationen (Domänenname oder Mandanten-ID) für Ihre Anwendung an. Rufen Sie es ab, indem Sie die Maus in die obere rechte Ecke des Azure-Portals bewegen. Ja
aadResourceId Geben Sie die Microsoft Entra Ressource an, die Sie zur Autorisierung anfordern, z. B. https://management.core.windows.net. Ja
azureCloudType Geben Sie für die Dienstprinzipalauthentifizierung den Typ der Azure Cloudumgebung an, für die Ihre Microsoft Entra-Anwendung registriert ist.
Zulässige Werte sind AzurePublic, AzureChina, AzureUsGovernment und AzureGermany. Standardmäßig wird die Cloudumgebung der Data Factory verwendet.
Nein

Beispiel 1: Verwendung der Authentifizierung mit Dienstprinzipalschlüssel

{
    "name": "RESTLinkedService",
    "properties": {
        "type": "RestService",
        "typeProperties": {
            "url": "<REST endpoint e.g. https://www.example.com/>",
            "authenticationType": "AadServicePrincipal",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalCredentialType": "ServicePrincipalKey",
            "servicePrincipalKey": {
                "value": "<service principal key>",
                "type": "SecureString"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "aadResourceId": "<Azure AD resource URL e.g. https://management.core.windows.net>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Beispiel 2: Verwenden der Dienstprinzipal-Zertifikatauthentifizierung

{
    "name": "RESTLinkedService",
    "properties": {
        "type": "RestService",
        "typeProperties": {
            "url": "<REST endpoint e.g. https://www.example.com/>",
            "authenticationType": "AadServicePrincipal",
            "servicePrincipalId": "<service principal id>",
            "servicePrincipalCredentialType": "ServicePrincipalCert",
            "servicePrincipalEmbeddedCert": {
                "type": "SecureString",
                "value": "<the base64 encoded certificate of your application registered in Microsoft Entra ID>"
            },
            "servicePrincipalEmbeddedCertPassword": {
                "type": "SecureString",
                "value": "<password of your certificate>"
            },
            "tenant": "<tenant info, e.g. microsoft.onmicrosoft.com>",
            "aadResourceId": "<Azure AD resource URL e.g. https://management.core.windows.net>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Speichern des Dienstprinzipalzertifikats in Azure Key Vault

Sie haben zwei Möglichkeiten, das Dienstprinzipalzertifikat in Azure Key Vault zu speichern:

  • Option 1:

    1. Konvertieren Sie das Dienstprinzipalzertifikat in eine Base64-Zeichenfolge. Mehr dazu erfahren Sie in diesem Artikel.

    2. Speichern Sie die base64-Zeichenfolge als geheimen Schlüssel in Azure Key Vault.

      Screenshot der Geheimnisliste in Azure Key Vault.

      Screenshot: Geheimniswert

  • Option 2:

    Wenn Sie das Zertifikat von Azure Key Vault nicht herunterladen können, können Sie dieses verwenden, um das konvertierte Dienstprinzipalzertifikat als geheimer Schlüssel in Azure Key Vault zu speichern.

    Screenshot: Vorlagenpipeline zum Speichern des Dienstprinzipalzertifikats als Geheimnis in AKV

Verwenden Sie die OAuth2-Client-Authentifizierung

Legen Sie die authenticationType-Eigenschaft auf OAuth2ClientCredential fest. Geben Sie zusätzlich zu den im vorherigen Abschnitt beschriebenen generischen Eigenschaften die folgenden Eigenschaften an:

Eigenschaft Beschreibung Erforderlich
tokenEndpoint Der Tokenendpunkt des Autorisierungsservers zum Erhalten des Zugriffstokens Ja
Kunden-ID Die Client-ID, die Ihrer Anwendung zugeordnet ist Ja
Kundengeheimnis Der geheime Clientschlüssel, der Ihrer Anwendung zugeordnet ist. Markieren Sie dieses Feld als Typ SecureString, um es sicher in Data Factory zu speichern. Sie können auch ein Geheimnis referenzieren, das in Azure Key Vault gespeichert ist. Ja
scope Der Umfang des erforderlichen Zugriffs. Er beschreibt, welche Art von Zugriff angefordert wird. Nein
Ressource Der Zieldienst oder die Zielressource, für den bzw. die Zugriff angefordert wird Nein

Beispiel

{
    "name": "RESTLinkedService",
    "properties": {
        "type": "RestService",
        "typeProperties": {
            "url": "<REST endpoint e.g. https://www.example.com/>",
            "enableServerCertificateValidation": true,
            "authenticationType": "OAuth2ClientCredential",
            "clientId": "<client ID>",
            "clientSecret": {
                "type": "SecureString",
                "value": "<client secret>"
            },
            "tokenEndpoint": "<token endpoint>",
            "scope": "<scope>",
            "resource": "<resource>"
        }
    }
}

Verwenden der systemseitig zugewiesenen Authentifizierung mit einer verwalteten Identität

Legen Sie die authenticationType-Eigenschaft auf ManagedServiceIdentity fest. Geben Sie zusätzlich zu den im vorherigen Abschnitt beschriebenen generischen Eigenschaften die folgenden Eigenschaften an:

Eigenschaft Beschreibung Erforderlich
aadResourceId Geben Sie die Microsoft Entra Ressource an, die Sie zur Autorisierung anfordern, z. B. https://management.core.windows.net. Ja

Beispiel

{
    "name": "RESTLinkedService",
    "properties": {
        "type": "RestService",
        "typeProperties": {
            "url": "<REST endpoint e.g. https://www.example.com/>",
            "authenticationType": "ManagedServiceIdentity",
            "aadResourceId": "<AAD resource URL e.g. https://management.core.windows.net>"
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Verwenden der benutzerseitig zugewiesenen Authentifizierung mit einer verwalteten Identität

Legen Sie die authenticationType-Eigenschaft auf ManagedServiceIdentity fest. Geben Sie zusätzlich zu den im vorherigen Abschnitt beschriebenen generischen Eigenschaften die folgenden Eigenschaften an:

Eigenschaft Beschreibung Erforderlich
aadResourceId Geben Sie die Microsoft Entra Ressource an, die Sie zur Autorisierung anfordern, z. B. https://management.core.windows.net. Ja
Anmeldeinformationen Geben Sie die vom Benutzer zugewiesene verwaltete Identität als Anmeldeobjekt an. Ja

Beispiel

{
    "name": "RESTLinkedService",
    "properties": {
        "type": "RestService",
        "typeProperties": {
            "url": "<REST endpoint e.g. https://www.example.com/>",
            "authenticationType": "ManagedServiceIdentity",
            "aadResourceId": "<Azure AD resource URL e.g. https://management.core.windows.net>",
            "credential": {
                "referenceName": "credential1",
                "type": "CredentialReference"
            }    
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Authentifizierungs-Header verwenden

Darüber hinaus können Sie neben den integrierten Authentifizierungstypen auch Anforderungsheader für die Authentifizierung konfigurieren.

Beispiel: Verwenden der Authentifizierung mit API-Schlüssel

{
    "name": "RESTLinkedService",
    "properties": {
        "type": "RestService",
        "typeProperties": {
            "url": "<REST endpoint>",
            "authenticationType": "Anonymous",
            "authHeaders": {
                "x-api-key": {
                    "type": "SecureString",
                    "value": "<API key>"
                }
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

Dataset-Eigenschaften

Dieser Abschnitt enthält eine Liste der Eigenschaften, die das REST-Dataset unterstützt.

Eine vollständige Liste mit den Abschnitten und Eigenschaften, die zum Definieren von Datasets zur Verfügung stehen, finden Sie unter Datasets und verknüpfte Dienste.

Zum Kopieren von Daten aus REST werden die folgenden Eigenschaften unterstützt:

Eigenschaft Beschreibung Erforderlich
Typ Die type-Eigenschaft des Datasets muss auf RestResource festgelegt sein. Ja
relativeUrl Eine relative URL zu der Ressource, die die Daten enthält. Wenn die Eigenschaft nicht angegeben ist, wird nur die URL verwendet, die in der Definition des verknüpften Diensts angegeben ist. Der HTTP-Connector kopiert Daten aus der kombinierten URL: [URL specified in linked service]/[relative URL specified in dataset]. Nein

Wenn Sie , requestMethod, additionalHeaders, und requestBody im Datensatz setzenpaginationRules, unterstützt die Kopieroperation sie weiterhin as-is, obwohl Sie das neue Modell künftig in der Aktivität verwenden sollten.

Beispiel:

{
    "name": "RESTDataset",
    "properties": {
        "type": "RestResource",
        "typeProperties": {
            "relativeUrl": "<relative url>"
        },
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<REST linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Eigenschaften der Kopieraktivität

Dieser Abschnitt enthält eine Liste der Eigenschaften, die von der REST-Quelle und -Senke unterstützt werden.

Eine vollständige Liste mit den verfügbaren Abschnitten und Eigenschaften zum Definieren von Aktivitäten finden Sie unter Pipelines.

REST als Quelle

Folgende Eigenschaften werden im Abschnitt source der Kopieraktivität unterstützt:

Eigenschaft Beschreibung Erforderlich
Typ Die type-Eigenschaft der Quelle der Kopieraktivität muss auf RestSource festgelegt werden. Ja
Anfragemethode Die HTTP-Methode. Zulässige Werte sind GET (Standardwert) und POST. Nein
additionalHeaders Andere HTTP-Anforderungsheader. Nein
requestBody Der Text der HTTP-Anforderung. Nein
paginationRules Die Paginierungsregeln zum Zusammenstellen der nächsten Seitenanforderungen. Ausführliche Informationen finden Sie im Abschnitt Unterstützung der Paginierung. Nein
httpRequestTimeout Das Timeout (der Wert TimeSpan) für die HTTP-Anforderung, um eine Antwort zu empfangen. Bei diesem Wert handelt es sich um das Timeout zum Empfangen einer Antwort, nicht um das Timeout zum Lesen von Antwortdaten. Der Standardwert ist 00:01:40. Nein
requestInterval Die Wartezeit vor dem Senden der Anforderung für die nächste Seite. Der Standardwert lautet 00:00:01 Nein

Hinweis

Der REST-Anschluss ignoriert jeden Accept von dir angegebenen Header in additionalHeaders. Da es nur JSON-Antworten unterstützt, setzt es den Header automatisch auf Accept: application/json.
Paginierung wird für REST-API-Antworten nicht unterstützt, bei denen die Struktur der obersten Ebene ein JSON-Array ist.

Beispiel 1: Verwenden der GET-Methode mit der Paginierung

"activities":[
    {
        "name": "CopyFromREST",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<REST input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "RestSource",
                "additionalHeaders": {
                    "x-user-defined": "helloworld"
                },
                "paginationRules": {
                    "AbsoluteUrl": "$.paging.next"
                },
                "httpRequestTimeout": "00:01:00"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

Beispiel 2: Verwenden der POST-Methode

"activities":[
    {
        "name": "CopyFromREST",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<REST input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "RestSource",
                "requestMethod": "Post",
                "requestBody": "<body for POST REST request>",
                "httpRequestTimeout": "00:01:00"
            },
            "sink": {
                "type": "<sink type>"
            }
        }
    }
]

REST als Senke

Folgende Eigenschaften werden im Abschnitt sink der Kopieraktivität unterstützt:

Eigenschaft Beschreibung Erforderlich
Typ Die type-Eigenschaft der Senke der Kopieraktivität muss auf RestSink festgelegt werden. Ja
Anfragemethode Die HTTP-Methode. Zulässige Werte sind POST (Standardwert), PUT und PATCH. Nein
additionalHeaders Andere HTTP-Anforderungsheader. Nein
httpRequestTimeout Das Timeout (der Wert TimeSpan) für die HTTP-Anforderung, um eine Antwort zu empfangen. Bei diesem Wert handelt es sich um das Timeout zum Empfangen einer Antwort, nicht um das Timeout zum Schreiben der Daten. Der Standardwert ist 00:01:40. Nein
requestInterval Das Zeitintervall zwischen verschiedenen Anforderungen in Millisekunden. Der Wert für das Anforderungsintervall sollte eine Zahl zwischen 10 und 60000 sein. Nein
httpCompressionType Der HTTP-Komprimierungstyp, der zum Senden von Daten mit der optimalen Komprimierungsstufe verwendet werden soll. Zulässige Werte sind none und gzip. Nein
writeBatchSize Die Anzahl von Datensätzen, die pro Batch in die REST-Senke geschrieben werden sollen. Der Standardwert ist 10.000. Nein

Ein REST-Connector als Senke funktioniert mit den REST-APIs, die JSON akzeptieren. Die Daten werden in JSON mit folgendem Muster gesendet. Verwenden Sie bei Bedarf das Kopierungsschema-Mapping , um die Quelldaten so umzugestalten, dass sie der erwarteten Nutzlast der REST-API entsprechen.

[
    { <data object> },
    { <data object> },
    ...
]

Beispiel:

"activities":[
    {
        "name": "CopyToREST",
        "type": "Copy",
        "inputs": [
            {
                "referenceName": "<input dataset name>",
                "type": "DatasetReference"
            }
        ],
        "outputs": [
            {
                "referenceName": "<REST output dataset name>",
                "type": "DatasetReference"
            }
        ],
        "typeProperties": {
            "source": {
                "type": "<source type>"
            },
            "sink": {
                "type": "RestSink",
                "requestMethod": "POST",
                "httpRequestTimeout": "00:01:40",
                "requestInterval": 10,
                "writeBatchSize": 10000,
                "httpCompressionType": "none",
            },
        }
    }
]

Eigenschaften von Zuordnungsdatenflüssen

REST wird in Datenflüssen sowohl für Integrationsdatasets als auch für Inlinedatasets unterstützt.

Quellentransformation

Eigenschaft Beschreibung Erforderlich
Anfragemethode Die HTTP-Methode. Zulässige Werte sind GET und POST. Ja
relativeUrl Eine relative URL zu der Ressource, die die Daten enthält. Wenn die Eigenschaft nicht angegeben ist, wird nur die URL verwendet, die in der Definition des verknüpften Diensts angegeben ist. Der HTTP-Connector kopiert Daten aus der kombinierten URL: [URL specified in linked service]/[relative URL specified in dataset]. Nein
additionalHeaders Andere HTTP-Anforderungsheader. Nein
httpRequestTimeout Das Timeout (der Wert TimeSpan) für die HTTP-Anforderung, um eine Antwort zu empfangen. Bei diesem Wert handelt es sich um das Timeout zum Empfangen einer Antwort, nicht um das Timeout zum Lesen von Antwortdaten. Der Standardwert ist 00:01:40. Nein
requestInterval Das Zeitintervall zwischen verschiedenen Anforderungen in Millisekunden. Der Wert für das Anforderungsintervall sollte eine Zahl zwischen 10 und 60000 sein. Nein
QueryParameters. request_query_parameter OR QueryParameters['request_query_parameter'] „request_query_parameter“ wird vom Benutzer definiert und verweist auf einen Abfrageparameternamen in der nächsten HTTP-Anforderungs-URL. Nein

Senkentransformation

Eigenschaft Beschreibung Erforderlich
additionalHeaders Andere HTTP-Anforderungsheader. Nein
httpRequestTimeout Das Timeout (der Wert TimeSpan) für die HTTP-Anforderung, um eine Antwort zu empfangen. Bei diesem Wert handelt es sich um das Timeout zum Empfangen einer Antwort, nicht um das Timeout zum Schreiben der Daten. Der Standardwert ist 00:01:40. Nein
requestInterval Das Zeitintervall zwischen verschiedenen Anforderungen in Millisekunden. Der Wert für das Anforderungsintervall sollte eine Zahl zwischen 10 und 60000 sein. Nein
httpCompressionType Der HTTP-Komprimierungstyp, der zum Senden von Daten mit der optimalen Komprimierungsstufe verwendet werden soll. Zulässige Werte sind none und gzip. Nein
writeBatchSize Die Anzahl von Datensätzen, die pro Batch in die REST-Senke geschrieben werden sollen. Der Standardwert ist 10.000. Nein

Sie können die Methoden delete, insert, update und upsert sowie die relativen Zeilendaten festlegen, die für CRUD-Vorgänge an die REST-Senke gesendet werden sollen.

Screenshot des REST-Sinks für den Datenfluss.

Beispiel-Datenflussskript

Beachten Sie die Verwendung einer Alter-Zeilen-Transformation vor dem Sink, um Data Factory anzuweisen, welche Art von Aktion mit Ihrem REST-Sink durchgeführt werden soll. Diese Aktion kann Einfügen, Aktualisieren, Upsert oder Löschen sein.

AlterRow1 sink(allowSchemaDrift: true,
	validateSchema: false,
	deletable:true,
	insertable:true,
	updateable:true,
	upsertable:true,
	rowRelativeUrl: 'periods',
	insertHttpMethod: 'PUT',
	deleteHttpMethod: 'DELETE',
	upsertHttpMethod: 'PUT',
	updateHttpMethod: 'PATCH',
	timeout: 30,
	requestFormat: ['type' -> 'json'],
	skipDuplicateMapInputs: true,
	skipDuplicateMapOutputs: true) ~> sink1

Hinweis

Datenfluss generiert beim Verarbeiten von N-Seiten insgesamt N+1-API-Aufrufe. Dazu gehört ein erster Aufruf, um das Schema abzuleiten, gefolgt von N Aufrufen, die der Anzahl der aus der Quelle abgerufenen Seiten entsprechen.

Unterstützung der Paginierung

Wenn Sie Daten aus REST-APIs kopieren, begrenzt die REST-API normalerweise die Antwortnutzlastgröße einer einzelnen Anfrage auf eine angemessene Zahl. Um eine große Datenmenge zurückzugeben, wird das Ergebnis auf mehrere Seiten aufgeteilt und die Anrufer müssen aufeinanderfolgende Anfragen senden, um die nächste Ergebnisseite zu erhalten. In der Regel ist die Anfrage für eine Seite dynamisch und besteht aus den Informationen, die in der Antwort auf die vorherige Seite zurückgegeben wurden.

Dieser generische REST-Connector unterstützt die folgenden Paginierungsmuster:

  • Absolute oder relative URL der nächsten Anforderung = Eigenschaftswert im aktuellen Antworttext
  • Absolute oder relative URL der nächsten Anforderung = Headerwert in aktuellen Antwortheadern
  • Abfrageparameter der nächsten Anforderung = Eigenschaftswert im aktuellen Antworttext
  • Abfrageparameter der nächsten Anforderung = Headerwert in aktuellen Antwortheadern
  • Header der nächsten Anforderung = Eigenschaftswert im aktuellen Antworttext
  • Der Header der nächsten Anfrage entspricht dem Headerwert in den aktuellen Antwortheadern.

Paginierungsregeln sind als Wörterbuch im Datensatz definiert, das ein oder mehrere groß- und kleinschreibungssensitive Schlüssel-Wert-Paare enthält. Die Konfiguration wird verwendet, um die Anfrage ab der zweiten Seite zu generieren. Der Connector hört auf zu iterieren, wenn er den HTTP-Statuscode 204 (No Content) erhält oder einer der JSONPath-Ausdrücke in null paginationRules zurückgibt.

In Paginierungsregeln unterstützte Schlüssel:

Schlüssel Beschreibung
AbsoluteUrl Gibt die URL für die nächste Anforderung an. Sie kann eine absolute oder eine relative URL sein.
QueryParameters. request_query_parameter OR QueryParameters['request_query_parameter'] „request_query_parameter“ wird vom Benutzer definiert und verweist auf einen Abfrageparameternamen in der nächsten HTTP-Anforderungs-URL.
Kopfzeilen.request_header ODER Kopfzeilen['request_header'] „request_header“ wird vom Benutzer definiert und verweist auf einen Headernamen in der nächsten HTTP-Anforderung.
Endbedingung:end_condition „end_condition“ ist benutzerdefiniert und gibt die Bedingung an, die die Paginierungsschleife in der nächsten HTTP-Anforderung beendet.
MaximaleAnzahlAnfragen Gibt die maximale Anzahl von Paginierungsanforderungen an. Falls leer gelassen, gilt kein Grenzwert.
SupportRFC5988 Standardmäßig wird dies auf "wahr" gesetzt, wenn keine Paginierungsregel definiert ist. Sie können diese Regel deaktivieren, indem Sie supportRFC5988 auf FALSE festlegen oder diese Eigenschaft aus dem Skript entfernen.

Unterstützte Werte in Paginierungsregeln:

Wert Beschreibung
Headers.response_header ODER Headers['response_header'] „response_header“ wird vom Benutzer definiert und verweist auf einen Headernamen in der aktuellen HTTP-Antwort, den Wert, der zum Ausgeben der nächsten Anforderung verwendet wird.
Ein mit „$“ beginnender JSONPath-Ausdruck (stellt den Stamm des Antworttexts dar) Der Antworttext sollte nur ein JSON-Objekt enthalten, und das Array des Objekts, da der Antworttext nicht unterstützt wird. Der JSONPath-Ausdruck sollte einen einzelnen primitiven Wert zurückgeben, der zum Ausgeben der nächsten Anforderung verwendet wird.

Hinweis

Die Paginierungsregeln bei der Abbildung von Datenströmen unterscheiden sich in folgenden Aspekten von den Regeln der Kopieraktivitäten:

  1. Range wird bei der Zuordnung von Datenflüssen nicht unterstützt.
  2. [''] wird bei der Zuordnung von Datenflüssen nicht unterstützt. Verwenden Sie stattdessen {}, um das Sonderzeichen mit Escapezeichen zu versehen. Beispielsweise enthält body.{@odata.nextLink} den JSON-Knoten @odata.nextLink, der ein Sonderzeichen aufweist (.).
  3. Die Endbedingung wird in Zuordnungsdatenflüssen unterstützt, aber die Bedingungssyntax ist anders als bei der Copy-Aktivität. body wird anstelle von $ verwendet, um den Antworttext abzugeben. Auch wird header statt headers verwendet, um den Antwortheader anzugeben. Hier finden Sie zwei Beispiele, in denen dieser Unterschied deutlich wird:
    • Beispiel 1:
      Copy-Aktivität: "EndCondition:$.data": "Empty"
      Zuordnungsdatenflüsse: "EndCondition:body.data": "Empty"
    • Beispiel 2:
      Copy-Aktivität: "EndCondition:headers.complete": "Exist"
      Zuordnungsdatenflüsse: "EndCondition:header.complete": "Exist"

Beispiele für Paginierungsregeln

In diesem Abschnitt werden Beispiele mit Einstellungen für Paginierungsregeln aufgeführt.

Beispiel 1: Variablen in QueryParameters

In diesem Beispiel werden die Konfigurationsschritte demonstriert, die durchgeführt werden müssen, um mehrere Anforderungen zu senden, deren Variablen sich in QueryParameters befinden.

Mehrere Anforderungen:

baseUrl/api/now/table/incident?sysparm_limit=1000&sysparm_offset=0,
baseUrl/api/now/table/incident?sysparm_limit=1000&sysparm_offset=1000,
...... 
baseUrl/api/now/table/incident?sysparm_limit=1000&sysparm_offset=10000

Schritt 1:Geben Sie sysparm_offset={offset} wie in den folgenden Screenshots gezeigt entweder in Basis-URL oder Relative URL ein:

Screenshot mit einer Konfiguration zum Senden mehrerer Anfragen, deren Variablen sich in Abfrageparametern befinden.

oder

Screenshot, der eine andere Konfiguration zum Senden mehrerer Anfragen zeigt, deren Variablen sich in Abfrageparametern befinden.

Schritt 2: Setzen Sie die Paginierungsregeln entweder als Option 1 oder Option 2:

  • Option 1: "QueryParameters.{offset}" : "RANGE:0:10000:1000"

  • Option 2: "AbsoluteUrl.{offset}" : "RANGE:0:10000:1000"

Beispiel 2: Variablen in AbsoluteUrl

In diesem Beispiel werden die Konfigurationsschritte demonstriert, die durchgeführt werden müssen, um mehrere Anforderungen zu senden, deren Variablen sich in AbsoluteUrl befinden.

Mehrere Anforderungen:

BaseUrl/api/now/table/t1
BaseUrl/api/now/table/t2
...... 
BaseUrl/api/now/table/t100

Schritt 1: Geben Sie {id} entweder auf der Konfigurationsseite des verknüpften Diensts in Basis-URL oder im Bereich „Datasetverbindung“ in Relative URL ein.

Screenshot, der eine Konfiguration zum Senden mehrerer Anfragen zeigt, deren Variablen sich in einer absoluten URL befinden.

oder

Screenshot, der eine andere Konfiguration zum Senden mehrerer Anfragen zeigt, deren Variablen in der absoluten URL enthalten sind.

Schritt 2: Legen Sie die Pagination rules auf "AbsoluteUrl.{id}" :"RANGE:1:100:1" fest.

Beispiel 3: Variablen in Headern

In diesem Beispiel werden die Konfigurationsschritte gezeigt, die durchgeführt werden müssen, um mehrere Anforderungen zu senden, deren Variablen sich in Headern befinden.

Mehrere Anforderungen:

RequestUrl: https://example/table
Request 1: Header(id->0)
Request 2: Header(id->10)
......
Request 100: Header(id->100)

Schritt 1: Geben Sie {id} in Additional headers (Weitere Header) ein.

Schritt 2: Legen Sie die Paginierungsregeln auf "Headers.{id}" : "RANGE:0:100:10" fest.

Screenshot, der die Paginierungsregel zum Senden mehrerer Anfragen zeigt, deren Variablen sich in Headern befinden.

Beispiel 4: Variablen befinden sich in AbsoluteUrl/QueryParameters/Headers, die Endvariable ist nicht vordefiniert und die Endbedingung basiert auf der Antwort

In diesem Beispiel werden Konfigurationsschritte zum Senden mehrerer Anforderungen bereitgestellt, deren Variablen sich in AbsoluteUrl/QueryParameters/Header befinden, die Endvariable jedoch nicht definiert ist. Für verschiedene Antworten werden in Beispiel 4.1-4.6 verschiedene Einstellungen der Endbedingungsregel gezeigt.

Mehrere Anforderungen:

Request 1: baseUrl/api/now/table/incident?sysparm_limit=1000&sysparm_offset=0, 
Request 2: baseUrl/api/now/table/incident?sysparm_limit=1000&sysparm_offset=1000,
Request 3: baseUrl/api/now/table/incident?sysparm_limit=1000&sysparm_offset=2000,
...... 

In diesem Beispiel treten zwei Antworten auf:

Antwort 1:

{
    Data: [
        {key1: val1, key2: val2
        },
        {key1: val3, key2: val4
        }
    ]
}

Antwort 2:

{
    Data: [
        {key1: val5, key2: val6
        },
        {key1: val7, key2: val8
        }
    ]
}

Schritt 1: Legen Sie den Bereich der Pagination rules auf Beispiel 1 fest, und lassen Sie das Ende des Bereichs mit "AbsoluteUrl.{offset}": "RANGE:0::1000" leer.

Schritt 2: Legen Sie die unterschiedlichen Endbedingungsregeln gemäß der unterschiedlichen letzten Antworten fest. Hier einige Beispiele:

  • Beispiel 4.1: Die Paginierung endet, wenn der Wert des bestimmten Knoten in der Antwort leer ist

    Die REST-API gibt die letzte Antwort in der folgenden Struktur zurück:

    {
        Data: []
    }
    

    Legen Sie die Endbedingungsregel auf "EndCondition:$.data": "Empty" fest, um die Paginierung zu beenden, wenn der Wert des bestimmten Knotens als Antwort leer ist.

    Screenshot, der die Endbedingungseinstellung für Beispiel 4.1 zeigt.

  • Beispiel 4.2: Die Paginierung endet, wenn der Wert des spezifischen Knotens als Antwort nicht existiert

    Die REST-API gibt die letzte Antwort in der folgenden Struktur zurück:

    {}
    

    Legen Sie die Endbedingungsregel als "EndCondition:$.data" fest: "NonExist" , um die Paginierung zu beenden, wenn der Wert des spezifischen Knotens in Antwort nicht vorhanden ist.

    Screenshot, der die Endbedingungseinstellung für Beispiel 4.2 zeigt.

  • Beispiel 4.3: Die Paginierung endet, wenn der Wert des bestimmten Knotens als Antwort vorhanden ist

    Die REST-API gibt die letzte Antwort in der folgenden Struktur zurück:

    {
        Data: [
            {key1: val991, key2: val992
            },
            {key1: val993, key2: val994
            }
        ],
                Complete: true
    }
    

    Legen Sie die Endbedingungsregel auf "EndCondition:$.Complete": "Exist" fest, um die Paginierung zu beenden, wenn der Wert des bestimmten Knotens als Antwort vorhanden ist.

    Screenshot, der die Endbedingungseinstellung für Beispiel 4.3 zeigt.

  • Beispiel 4.4: Die Paginierung endet, wenn der Wert des bestimmten Knotens als Antwort ein benutzerdefinierter „const“-Wert ist

    Die REST-API gibt die Antwort in der folgenden Struktur zurück:

    {
        Data: [
            {key1: val1, key2: val2
            },
            {key1: val3, key2: val4
            }
        ],
                Complete: false
    }
    

    ......

    Die letzte Antwort ist in der folgenden Struktur:

    {
        Data: [
            {key1: val991, key2: val992
            },
            {key1: val993, key2: val994
            }
        ],
                Complete: true
    }
    

    Legen Sie die Endbedingungsregel auf "EndCondition:$.Complete": "Const:true" fest, um die Paginierung zu beenden, wenn der Wert des bestimmten Knotens als Antwort ein benutzerdefinierter „const“-Wert ist.

    Screenshot, der die Endbedingungseinstellung für Beispiel 4.4 zeigt.

  • Beispiel 4.5: Die Paginierung endet, wenn der Wert des Header-Schlüssels als Antwort einem benutzerdefinierten Const-Wert entspricht

    Die Headerschlüssel in REST-API-Antworten werden in der folgenden Struktur angezeigt:

    Antwortkopfzeile 1: header(Complete->0)
    ......
    „Letzte Antwort“-Header: header(Complete->1)

    Setze die Endbedingungsregel als "EndCondition:headers. Complete": "Const:1", um die Paginierung zu beenden, wenn der Wert des Header-Schlüssels als Antwort einem benutzerdefinierten Const-Wert entspricht.

    Screenshot, der die Endbedingungseinstellung für Beispiel 4.5 zeigt.

  • Beispiel 4.6: Die Paginierung endet, wenn der Schlüssel im Antwortheader vorhanden ist

    Die Headerschlüssel in REST-API-Antworten werden in der folgenden Struktur angezeigt:

    Antwortkopfzeile 1: header()
    ......
    „Letzte Antwort“-Header: header(CompleteTime->20220920)

    Legen Sie die Endbedingungsregel auf "EndCondition:headers.CompleteTime": "Exist" fest, um die Paginierung zu beenden, wenn der Schlüssel im Antwortheader vorhanden ist.

    Screenshot, der die Endbedingungseinstellung für Beispiel 4.6 zeigt.

Beispiel 5: Setze Endbedingung, um endlose Anfragen zu vermeiden, wenn die Reichweitenregel nicht definiert ist

In diesem Beispiel werden die Konfigurationsschritte zum Senden mehrerer Anforderungen bereitgestellt, wenn die Bereichsregel nicht verwendet wird. Die Endbedingung kann wie in Beispiel 4.1-4.6 festgelegt werden, um endlose Anforderungen zu vermeiden. Die REST-API gibt eine Antwort in der folgenden Struktur zurück. In diesem Fall wird die URL der nächsten Seite in paging.next dargestellt.

{
    "data": [
        {
            "created_time": "2017-12-12T14:12:20+0000",
            "name": "album1",
            "id": "1809938745705498_1809939942372045"
        },
        {
            "created_time": "2017-12-12T14:14:03+0000",
            "name": "album2",
            "id": "1809938745705498_1809941802371859"
        },
        {
            "created_time": "2017-12-12T14:14:11+0000",
            "name": "album3",
            "id": "1809938745705498_1809941879038518"
        }
    ],
    "paging": {
        "cursors": {
            "after": "MTAxNTExOTQ1MjAwNzI5NDE=",
            "before": "NDMyNzQyODI3OTQw"
        },
        "previous": "https://graph.facebook.com/me/albums?limit=25&before=NDMyNzQyODI3OTQw",
        "next": "https://graph.facebook.com/me/albums?limit=25&after=MTAxNTExOTQ1MjAwNzI5NDE="
    }
}
...

Die letzte Antwort lautet:

{
    "data": [],
    "paging": {
        "cursors": {
            "after": "MTAxNTExOTQ1MjAwNzI5NDE=",
            "before": "NDMyNzQyODI3OTQw"
        },
        "previous": "https://graph.facebook.com/me/albums?limit=25&before=NDMyNzQyODI3OTQw",
        "next": "Same with Last Request URL"
    }
}

Schritt 1: Legen Sie die Pagination rules auf "AbsoluteUrl": "$.paging.next" fest.

Schritt 2: Wenn next die letzte Antwort immer dieselbe wie die letzte Anfrage-URL ist und nicht leer ist, sendet der Prozess endlose Anfragen. Nutze die Endbedingung, um endlose Anfragen zu vermeiden. Setzen Sie daher die Endbedingungsregel, indem Sie sich auf die Beispiele 4.1 bis 4.6 beziehen.

Beispiel 6: Setze die maximale Anfrageanzahl, um endlose Anfragen zu vermeiden

Legen Sie MaxRequestNumber (die maximale Anzahl der Anforderungen) wie im folgenden Screenshot gezeigt fest, um endlose Anforderungen zu vermeiden:

Screenshot, der die Einstellung „Max. Anforderungsanzahl“ für Beispiel 6 zeigt.

Beispiel 7: Die Paginierungsregel RFC 5988 wird standardmäßig unterstützt

Das Backend erhält automatisch die nächste URL basierend auf den RFC-5988-Stil Links im Header.

Screenshot mit Beispielen des HTTP-Headers, der RFC 5988 entspricht.

Tipp

Wenn Sie diese Standardpaginierungsregel nicht aktivieren möchten, können Sie supportRFC5988 im Skript auf false festlegen oder einfach löschen.

Screenshot, der zeigt, wie die RFC 5988-Einstellung für Beispiel 7 deaktiviert wird.

Beispiel 8a: Die nächste Anforderungs-URL befindet sich im Antworttext, wenn die Paginierung in Zuordnungsdatenflüssen verwendet wird

In diesem Beispiel wird gezeigt, wie die Paginierungsregel und die Endbedingungsregel in Zuordnungsdatenflüssen festgelegt werden, wenn die nächste Anforderungs-URL aus dem Antworttext kommt.

Im Folgenden finden Sie das Antwortschema:

Screenshot, der das Antwortschema von Beispiel 8 zeigt.

Die Paginierungsregeln sollte wie im folgenden Screenshot gezeigt festgelegt werden:

Screenshot, der zeigt, wie die Paginierungsregel für Beispiel 8 festgelegt wird.

Standardmäßig endet die Paginierung, wenn body.{@odata.nextLink} null oder leer ist.

Wenn jedoch der Wert von @odata.nextLink im letzten Antwort-Body der letzten Anfrage-URL entspricht, führt das zu einer endlosen Schleife. Definieren Sie Endbedingungsregeln, um dies zu vermeiden.

  • Wenn Wert in der letzten Antwort Leer ist, kann die Endbedingungsregel wie folgt festgelegt werden:

    Screenshot, der das Festlegen der Endbedingungsregel zeigt, wenn die letzte Antwort leer ist.

  • Wenn der Wert des vollständigen Schlüssels im Antwortheader gleich TRUE ist, gibt dies das Ende der Paginierung an, und die Endbedingungsregel kann wie im Folgenden dargestellt festgelegt werden:

    Screenshot, der das Festlegen der Endbedingungsregel zeigt, wenn der vollständige Schlüssel im Antwortheader gleich „true“ ist, was das Ende der Paginierung anzeigt.

Beispiel 8b: Die nächste Anforderungs-URL befindet sich im Antworttext, wenn die Paginierung in der Copy-Aktivität verwendet wird

In diesem Beispiel wird veranschaulicht, wie die Paginierungsregel in einer Copy-Aktivität festgelegt wird, wenn die nächste Anforderungs-URL im Antworttext enthalten ist.

Im Folgenden finden Sie das Antwortschema:

Screenshot: Antwortschema von Beispiel 8b.

Die Paginierungsregeln sollte wie im folgenden Screenshot gezeigt festgelegt werden:

Screenshot, der zeigt, wie die Paginierungsregel für Beispiel 8b festgelegt wird.

Beispiel 9: Das Antwortformat ist XML, und die nächste Anforderungs-URL wird aus dem Antworttext erstellt, wenn die Paginierung in Zuordnungsdatenflüssen verwendet wird

In diesem Beispiel wird angegeben, wie die Paginierungsregel in Zuordnungsdatenflüssen festgelegt wird, wenn das Antwortformat XML und die nächste Anforderungs-URL aus dem Antworttext stammt. Wie im folgenden Screenshot gezeigt, lautet die erste URL https://< user.dfs.core.windows.net/bugfix/test/movie_1.xml>

Screenshot, der das Antwortformat X M L zeigt, und die nächste Anforderungs-URL stammt aus dem Antworttext.

Im Folgenden finden Sie das Antwortschema:

Screenshot, der das Antwortschema von Beispiel 9 zeigt.

Die Syntax der Paginierungsregel ist mit der im Beispiel 8 identisch und sollte wie im folgenden Beispiel festgelegt werden:

Screenshot, der das Festlegen der Paginierungsregel für Beispiel 9 zeigt.

Exportieren der unveränderten JSON-Antwort

Sie können den REST-Connector verwenden, um die JSON-Antwort einer REST-API as-is in verschiedene dateibasierte Speichersysteme (Senken) zu exportieren. Um dieses schema-agnostische Kopierverhalten zu aktivieren, verwenden Sie das Standard-Schema-Mapping (definieren Sie keine Abbildung im Tab Copy Activity Mapping).

Schemazuordnung

Informationen zum Kopieren von Daten aus dem REST-Endpunkt in eine tabellarische Senke finden Sie unter Schemazuordnung.

Eine Liste der Datenspeicher, die von der Kopieraktivität als Quellen und Senken in Azure Data Factory unterstützt werden, finden Sie unter Unterstützte Datenspeicher und Formate.