Teilen über


Datenkonsistenzprüfung in der Kopieraktivität

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!

Wenn Sie Daten aus der Quelle in den Zielspeicher verschieben, bietet die Kopieraktivität eine Option, mit der Sie eine weitere Überprüfung der Datenkonsistenz durchführen können, um sicherzustellen, dass die Daten nicht nur erfolgreich aus der Quelle in den Zielspeicher kopiert werden, sondern auch überprüft werden, ob sie zwischen Quell- und Zielspeicher konsistent sind. Wenn während der Datenverschiebung inkonsistente Dateien gefunden werden, können Sie entweder die Kopieraktivität abbrechen oder auch noch die restlichen Dateien kopieren. Hierzu aktivieren Sie die Einstellung für Fehlertoleranz, damit inkonsistente Daten übersprungen werden. Die Namen der übersprungenen Dateien können Sie durch Aktivieren der Einstellung für das Sitzungsprotokoll in der Kopieraktivität abrufen. Weitere Informationen finden Sie im Sitzungsprotokoll in der Kopieraktivität.

Unterstützte Datenspeicher und Szenarien

  • Die Datenkonsistenzüberprüfung wird von allen Connectors außer FTP, SFTP, HTTP, Snowflake, Office 365 und Azure Databricks Delta Lake unterstützt.
  • Die Überprüfung der Datenkonsistenz wird im Stagingkopieszenario nicht unterstützt.
  • Beim Kopieren von Binärdateien ist die Datenkonsistenzprüfung nur verfügbar, wenn in der Kopieraktivität das Verhalten „PreserveHierarchy“ festgelegt ist.
  • Wenn Sie mehrere Binärdateien in einer einzigen Kopieraktivität mit aktivierter Datenkonsistenzprüfung kopieren möchten, stehen Ihnen zwei Optionen zur Verfügung: Sie können entweder die Kopieraktivität abbrechen oder die restlichen Dateien weiter kopieren, indem Sie die Fehlertoleranzeinstellung so einrichten, dass inkonsistente Dateien übersprungen werden.
  • Beim Kopieren einer Tabelle in einer einzigen Kopieraktivität mit aktivierter Datenkonsistenzprüfung tritt bei der Kopieraktivität ein Fehler auf, wenn die Anzahl der aus der Quelle gelesenen Zeilen sich von der Anzahl der in das Ziel kopierten Zeilen plus der Anzahl der inkompatiblen und übersprungenen Zeilen unterscheidet.

Konfiguration

Das folgende Beispiel zeigt eine JSON-Definition, mit der die Datenkonsistenzprüfung in der Kopieraktivität aktiviert wird:

{
  "name":"CopyActivityDataConsistency",
  "type":"Copy",
  "typeProperties": { 
    "source": { 
        "type": "BinarySource", 
        "storeSettings": { 
            "type": "AzureDataLakeStoreReadSettings", 
            "recursive": true 
        } 
    }, 
    "sink": { 
        "type": "BinarySink", 
        "storeSettings": { 
            "type": "AzureDataLakeStoreWriteSettings" 
        } 
    }, 
    "validateDataConsistency": true, 
    "skipErrorFile": { 
        "dataInconsistency": true 
    }, 
    "logSettings": {
        "enableCopyActivityLog": true,
        "copyActivityLogSettings": {
            "logLevel": "Warning",
            "enableReliableLogging": false
        },
        "logLocationSettings": {
            "linkedServiceName": {
               "referenceName": "ADLSGen2",
               "type": "LinkedServiceReference"
            },
            "path": "sessionlog/"
        }
    }
} 
Eigenschaft BESCHREIBUNG Zulässige Werte Erforderlich
validateDataConsistency Wenn Sie diese Eigenschaft auf TRUE festlegen, prüft die Kopieraktivität beim Kopieren von Binärdateien die Dateigröße, das Datum der letzten Änderung und die MD5-Prüfsumme für jede aus dem Quell- in den Zielspeicher kopierte Binärdatei, um die Datenkonsistenz zwischen den beiden Speichern sicherzustellen. Beim Kopieren tabellarischer Daten überprüft die Kopieraktivität die Gesamtzahl der Zeilen, nachdem der Auftrag abgeschlossen wurde, und stellt sicher, dass die Gesamtanzahl der zeilen, die aus der Quelle gelesen wurden, mit der Anzahl der Zeilen übereinstimmt, die an das Ziel kopiert wurden, sowie die Anzahl der inkompatiblen Zeilen, die übersprungen wurden. Beachten Sie, dass die Kopierleistung durch aktivieren dieser Option beeinträchtigt wird. True
False (Standard)
Nein
dataInconsistency Eines der Schlüssel-Wert-Paare in der skipErrorFile-Eigenschaftensammlung zur Bestimmung, ob Sie die inkonsistenten Dateien überspringen möchten.
– TRUE: Sie möchten den Rest kopieren, indem Sie inkonsistente Dateien überspringen.
– FALSE: Sie möchten die Kopieraktivität abbrechen, sobald inkonsistente Dateien gefunden wurden.
Beachten Sie, dass diese Eigenschaft nur gültig ist, wenn Sie Binärdateien kopieren und „validateDataConsistency“ auf TRUE festlegen.
True
False (Standard)
Nein
logSettings Eine Gruppe von Eigenschaften, die angegeben werden können, um das Sitzungsprotokoll zum Protokollieren übersprungener Dateien zu aktivieren. Nein
linkedServiceName Der verknüpfte Dienst von Azure Blob Storage oder Azure Data Lake Storage Gen2 zum Speichern der Sitzungsprotokolldateien. Die Namen eines verknüpften Diensts vom Typ AzureBlobStorage oder AzureBlobFS, der auf die Instanz verweist, in der Sie die Protokolldateien speichern. Nein
path Der Pfad der Protokolldateien. Geben Sie den Pfad an, in dem die Protokolldateien gespeichert werden sollen. Wenn Sie keinen Pfad angeben, erstellt der Dienst automatisch einen Container. Nein

Hinweis

  • Beim Kopieren von Binärdateien aus oder in Azure Blob oder Azure Data Lake Storage Gen2 blockiert der Dienst die MD5-Prüfsummenüberprüfung mithilfe der Azure Blob-API und der Azure Data Lake Storage Gen2-API. Wenn ContentMD5 in Dateien im Azure-Blob oder in Azure Data Lake Storage Gen2 als Datenquelle vorhanden ist, führt der Dienst nach dem Lesen der Dateien auch eine Überprüfung der MD5-Prüfsumme auf Dateiebene durch. Nach dem Kopieren von Dateien in das Azure-Blob oder in Azure Data Lake Storage Gen2 als Datenziel schreibt der Dienst ContentMD5 in das Ziel. Diese Information kann in Downstreamanwendungen zur Überprüfung der Datenkonsistenz weiterverwendet werden.
  • Beim Kopieren von Binärdateien zwischen Speichern führt der Dienst eine Überprüfung der Dateigröße durch.

Überwachung

Ausgabe aus der Kopieraktivität

Nach Abschluss aller Kopieraktivitätsausführungen wird das Ergebnis der Datenkonsistenzprüfung aus der Ausgabe der jeweiligen Ausführung angezeigt:

"output": {
            "dataRead": 695,
            "dataWritten": 186,
            "filesRead": 3,  
            "filesWritten": 1, 
            "filesSkipped": 2, 
            "throughput": 297,
            "logFilePath": "myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
            "dataConsistencyVerification": 
           { 
                "VerificationResult": "Verified", 
                "InconsistentData": "Skipped" 
           } 
        }

Hier können Sie die Details der Datenkonsistenzprüfung aus der Eigenschaft „dataConsistencyVerification“ sehen.

Wert von VerificationResult:

  • Überprüft: Ihre kopierten Daten wurden auf Konsistenz zwischen Quell- und Zielspeicher überprüft.
  • NotVerified: Ihre kopierten Daten wurden nicht überprüft, um konsistent zu sein, da Sie die ValidateDataConsistency in kopieraktivität nicht aktiviert haben.
  • Nicht unterstützt: Ihre kopierten Daten wurden nicht überprüft, um konsistent zu sein, da die Überprüfung der Datenkonsistenz für dieses bestimmte Kopierpaar nicht unterstützt wird.

Wert von InconsistentData:

  • Found (Gefunden): Die Copy-Aktivität hat inkonsistente Daten gefunden.
  • Skipped (Übersprungen): Die Copy-Aktivität hat inkonsistente Daten gefunden und übersprungen.
  • Keine: Die Kopieraktivität hat keine inkonsistenten Daten gefunden. Der Grund: Bei der Überprüfung wurde festgestellt, dass Ihre Daten zwischen Quell- und Zielspeicher konsistent sind, oder Sie haben „validateDataConsistency“ in der Kopieraktivität deaktiviert.

Sitzungsprotokoll aus der Kopieraktivität

Wenn Sie so konfigurieren, dass die inkonsistente Datei protokolliert wird, können Sie die Protokolldatei unter diesem Pfad finden: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv. Die Protokolldateien sind die CSV-Dateien.

Das Schema einer Protokolldatei lautet wie folgt:

Column BESCHREIBUNG
Timestamp Der Zeitstempel, der angibt, wann der Dienst die inkonsistenten Dateien überspringt.
Ebene Die Protokollstufe dieses Elements. Es befindet sich auf der Ebene "Warnung" für das Element, das das Überspringen der Datei anzeigt.
Vorgangsname Das Vorgangsverhalten der Copy-Aktivität für jede Datei. Es ist "FileSkip", um die datei anzugeben, die übersprungen werden soll.
OperationItem Der Name der zu überspringenden Datei.
`Message` Weitere Informationen zu den Ursachen für das Überspringen von Dateien.

Das Beispiel für eine Protokolldatei lautet wie folgt:

Timestamp, Level, OperationName, OperationItem, Message
2020-02-26 06:22:56.3190846, Warning, FileSkip, "sample1.csv", "File is skipped after read 548000000 bytes: ErrorCode=DataConsistencySourceDataChanged,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Source file 'sample1.csv' is changed by other clients during the copy activity run.,Source=,'." 

In der vorstehenden Protokolldatei können Sie sehen, dass die Datei „sample1.csv“ übersprungen wurde, weil die Konsistenz zwischen Quell- und Zielspeicher nicht überprüft werden konnte. Weitere Details zu dem Grund, aus dem „sample1.csv“ inkonsistent wird: Die Datei wurde von anderen Anwendungen bei gleichzeitiger Ausführung der Copy-Aktivität geändert.

Weitere Informationen finden Sie in den anderen Artikeln zur Kopieraktivität: