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 all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!
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. Se vengono trovati dati incoerenti durante lo spostamento dati, è possibile interrompere l'attività Copy o continuare a copiare il resto abilitando l'impostazione di tolleranza di errore per ignorare i file incoerenti. È possibile ottenere i nomi dei file ignorati abilitando l'impostazione del log della sessione nell'attività Copy. 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.
Impostazione
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. | Vero 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. |
Vero False (impostazione predefinita) |
No |
logSettings | 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 in Azure Data Lake Storage Gen2, il servizio blocca la verifica del checksum MD5 a livello di livello sfruttando l'API BLOB di Azure e l'API di Azure Data Lake Storage Gen2. Se ContentMD5 nei file esiste nel BLOB di Azure o in Azure Data Lake Storage 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 Storage Gen2 come destinazione dati, il servizio scrive ContentMD5 nel BLOB di Azure o in Azure Data Lake Storage 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. |
Level | 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.
Contenuto correlato
Vedere gli altri articoli relativi all'attività di copia: