Condividi tramite


Verifica della coerenza dei dati nell'attività di copia

SI APPLICA A: Azure Data Factory Azure Synapse Analytics

Suggerimento

Provare Data Factory in Microsoft Fabric, una soluzione di analisi completa per le aziende. Microsoft Fabric copre tutti gli elementi, dallo spostamento dei dati all'analisi scientifica dei dati, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Scopri come avviare gratuitamente una nuova versione di valutazione .

Quando si spostano dati dall'archivio di origine a quello di destinazione, l'attività di copia offre un'opzione che consente di eseguire ulteriori verifiche di coerenza dei dati per assicurarsi che i dati non vengano solo copiati correttamente dall'origine all'archivio di destinazione, ma anche verificati di essere coerenti tra l'archivio di origine e quello di destinazione. Dopo aver trovato file incoerenti durante lo spostamento dei dati, è possibile interrompere l'attività di copia o continuare a copiare il resto abilitando l'impostazione di tolleranza di errore per ignorare i file incoerenti. È possibile ottenere i nomi di file ignorati abilitando l'impostazione del log di sessione nell'attività di copia. Per altri dettagli, fare riferimento al log della sessione nell'attività di copia.

Archivi dati e scenari supportati

  • La verifica della coerenza dei dati è supportata da tutti i connettori ad eccezione di FTP, SFTP, HTTP, Snowflake, Office 365 e Azure Databricks Delta Lake.
  • La verifica della coerenza dei dati non è supportata nello scenario di copia di staging.
  • Quando si copiano file binari, la verifica della coerenza dei dati è disponibile solo quando il comportamento "PreserveHierarchy" viene impostato nell'attività di copia.
  • Quando si copiano più file binari in un'unica attività di copia con verifica della coerenza dei dati abilitata, è possibile interrompere l'attività di copia o continuare a copiare il resto abilitando l'impostazione di tolleranza di errore per ignorare i file incoerenti.
  • Quando si copia una tabella in un'attività di copia singola con verifica della coerenza dei dati abilitata, l'attività di copia ha esito negativo se il numero di righe lette dall'origine è diverso dal numero di righe copiate nella destinazione e dal numero di righe incompatibili ignorate.

Configurazione

Nell'esempio seguente viene fornita una definizione JSON per abilitare la verifica della coerenza dei dati nell'attività di copia:

{
  "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/"
        }
    }
} 
Proprietà Descrizione Valori consentiti Richiesto
validateDataConsistency Se si imposta true per questa proprietà, quando si copiano file binari, l'attività di copia verificherà le dimensioni del file, lastModifiedDate e il checksum MD5 per ogni file binario copiato dall'archivio di origine a quello di destinazione per garantire la coerenza dei dati tra l'archivio di origine e quello di destinazione. Quando si copiano dati tabulari, l'attività di copia verificherà il numero totale di righe al termine del processo, assicurando che il numero totale di righe lette dall'origine corrisponda al numero di righe copiate nella destinazione e al numero di righe incompatibili ignorate. Tenere presente che le prestazioni della copia sono influenzate dall'abilitazione di questa opzione. True
False (impostazione predefinita)
No
dataInconsistency Una delle coppie chiave-valore all'interno del contenitore delle proprietà skipErrorFile per determinare se si desidera ignorare i file incoerenti.
-True: si vuole copiare il resto ignorando i file incoerenti.
- False: si vuole interrompere l'attività di copia dopo aver trovato un file incoerente.
Tenere presente che questa proprietà è valida solo quando si copiano file binari e si imposta validateDataConsistency su True.
True
False (impostazione predefinita)
No
log Impostazioni Gruppo di proprietà che è possibile specificare per consentire al log di sessione di registrare i file ignorati. No
linkedServiceName Servizio collegato di Archiviazione BLOB di Azure o Azure Data Lake Storage Gen2 per archiviare i file di log della sessione. Nomi di un servizio collegato di tipo AzureBlobStorage o AzureBlobFS che fa riferimento all'istanza da usare per archiviare i file di log. No
path Percorso dei file di log. Specificare il percorso desiderato per archiviare i file di log. Se non si specifica un percorso, il servizio crea automaticamente un contenitore. No

Nota

  • Quando si copiano file binari da o in BLOB di Azure o azure Data Lake Archiviazione Gen2, il servizio blocca la verifica del checksum MD5 a livello di blocco sfruttando l'API BLOB di Azure e l'API Azure Data Lake Archiviazione Gen2. Se ContentMD5 nei file esiste nel BLOB di Azure o in Azure Data Lake Archiviazione Gen2 come origini dati, il servizio esegue anche la verifica del checksum MD5 a livello di file dopo la lettura dei file. Dopo aver copiato i file nel BLOB di Azure o in Azure Data Lake Archiviazione Gen2 come destinazione dati, il servizio scrive ContentMD5 nel BLOB di Azure o in Azure Data Lake Archiviazione Gen2, che può essere ulteriormente utilizzato dalle applicazioni downstream per la verifica della coerenza dei dati.
  • Il servizio esegue la verifica delle dimensioni dei file durante la copia di file binari tra archivi di archiviazione.

Monitoraggio

Output dell'attività di copia

Quando l'attività di copia viene eseguita completamente, è possibile visualizzare il risultato della verifica della coerenza dei dati dall'output di ciascuna esecuzione dell'attività di copia:

"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" 
           } 
        }

È possibile visualizzare i dettagli della verifica di coerenza dei dati da "Proprietà dataConsistencyVerification".

Valore di VerificationResult:

  • Verificato: i dati copiati sono stati verificati in modo che siano coerenti tra l'archivio di origine e quello di destinazione.
  • NotVerified: i dati copiati non sono stati verificati in modo coerente perché non è stata abilitata l'opzione validateDataConsistency nell'attività di copia.
  • Non supportato: i dati copiati non sono stati verificati in modo coerente perché la verifica della coerenza dei dati non è supportata per questa coppia di copia specifica.

Valore di InconsistentData:

  • Trovato: l'attività di copia ha trovato dati incoerenti.
  • Ignorato: l'attività di copia ha trovato e ignorato dati incoerenti.
  • Nessuno: l'attività di copia non ha trovato dati incoerenti. Questo può essere dovuto al fatto che i dati sono stati verificati come coerenti tra l'archivio di origine e di destinazione o perché è stato disabilitato validateDataConsistency nell'attività di copia.

Log di sessione dell'attività di copia

Se si configura la registrazione dei file incoerenti, vedere il file di log al percorso seguente: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv. I file di log sono i file CSV.

Lo schema di un file di log è il seguente:

Colonna Descrizione
Timestamp: Timestamp quando il servizio ignora i file incoerenti.
Livello Livello log dell'elemento. È a livello di avviso per l'elemento che mostra l'ignorato del file.
OperationName Comportamento operativo dell'attività di copia in ogni file. È "FileSkip" per specificare il file da ignorare.
OperationItem Il nome file da ignorare.
Message Altre informazioni per illustrare il motivo per cui i file vengono ignorati.

Di seguito è riportato un esempio di file di log:

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=,'." 

Dal file di log riportato sopra, è possibile vedere che sample1.csv è stato ignorato perché non è stato possibile verificarne la coerenza tra l'archivio di origine e quello di destinazione. È possibile ottenere altri dettagli sul motivo per cui sample1.csv diventa incoerente perché è stato modificato da altre applicazioni quando l'attività di copia viene copiata contemporaneamente.

Vedere gli altri articoli relativi all'attività di copia: