Condividi tramite


Attività di copia nel log di sessione

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!

È possibile registrare i nomi dei file copiati in un attività Copy. Ciò consente di garantire che i dati non solo vengano copiati correttamente dall'origine alla destinazione, ma anche convalidare la coerenza tra origine e destinazione.

Quando si abilita l'impostazione della tolleranza di errore in un attività Copy per ignorare i dati difettosi, è anche possibile registrare i file ignorati e le righe ignorate. È possibile ottenere altri dettagli dalla tolleranza di errore nell'attività di copia.

Dato che è possibile ottenere tutti i nomi di file copiati da Azure Data Factory (ADF) attività Copy tramite l'abilitazione del log di sessione, sarà utile per l'utente negli scenari seguenti:

  • Dopo aver usato le attività di copia di Azure Data Factory per copiare i file da una risorsa di archiviazione a un'altra, si trovano alcuni file imprevisti nell'archivio di destinazione. È possibile analizzare i log di sessione attività Copy per vedere quale attività ha effettivamente copiato i file e quando. Con questo approccio è possibile trovare facilmente la causa radice e correggere le configurazioni in Azure Data Factory.
  • Dopo aver usato le attività di copia di Azure Data Factory per copiare i file da un archivio a un altro, i file copiati nella destinazione non sono quelli previsti dall'archivio di origine. È possibile analizzare i log di sessione attività Copy per ottenere il timestamp dei processi di copia e i metadati dei file quando le attività di copia di Azure Data Factory leggono dall'archivio di origine. Con questo approccio, è possibile verificare se i file sono stati aggiornati da altre applicazioni nell'archivio di origine dopo essere stati copiati da ADF.

Configurazione con Azure Data Factory Studio

Per configurare l'attività di registrazione Copy, aggiungi prima un'attività Copy alla pipeline e poi usa la scheda Impostazioni per configurare la registrazione e diverse opzioni di registrazione. Illustra come configurare la registrazione per un attività Copy nella scheda impostazioni.

Per monitorare successivamente il log, è possibile controllare l'output di un'esecuzione della pipeline nella scheda Monitoraggio di ADF Studio nelle esecuzioni della pipeline. Selezionare l'esecuzione della pipeline da monitorare e quindi passare il puntatore sull'area accanto al nome dell'attività, dove sono disponibili icone per i collegamenti che mostrano l'input della pipeline, l'output (una volta completato) e altri dettagli.

Illustra come trovare l'output di un'attività Copy in ADF Studio.

Selezionare l'icona di output per visualizzare i dettagli del log per il processo e prendere nota della posizione del log nell'account di archiviazione selezionato, in cui è possibile visualizzare i dettagli di tutte le attività registrate.

Mostra l'output di un'attività di copia con la registrazione abilitata.

Per informazioni dettagliate sul formato di output del log, vedere di seguito.

Configurazione con JSON

L'esempio seguente fornisce una definizione JSON per abilitare il log di sessione nell'attività di copia:

{
  "name": "CopyActivityLog",
  "type": "Copy",
  "typeProperties": {
    "source": {
      "type": "BinarySource",
      "storeSettings": {
        "type": "AzureDataLakeStoreReadSettings",
        "recursive": true
      },
      "formatSettings": {
        "type": "BinaryReadSettings"
      }
    },
    "sink": {
      "type": "BinarySink",
      "storeSettings": {
        "type": "AzureBlobFSWriteSettings"
      }
    },
    "skipErrorFile": {
      "fileForbidden": true,
      "dataInconsistency": true
    },
    "validateDataConsistency": true,
    "logSettings": {
      "enableCopyActivityLog": true,
      "copyActivityLogSettings": {
        "logLevel": "Warning",
        "enableReliableLogging": false
      },
      "logLocationSettings": {
        "linkedServiceName": {
          "referenceName": "ADLSGen2",
          "type": "LinkedServiceReference"
        },
        "path": "sessionlog/"
      }
    }
  }
}
Proprietà Descrizione Valori consentiti Richiesto
abilitaRegistroAttivitàDiCopia Se impostato su true, sarà possibile registrare file copiati, file ignorati o righe ignorate. Vero
False (impostazione predefinita)
No
logLevel "Info" registra tutti i file copiati, i file saltati e le righe saltate. "Avviso" registra solo i file ignorati e le righe ignorate. Informazioni
Avviso (impostazione predefinita)
No
enableReliableLogging Quando è vero, un'attività di copia in modalità affidabile svuota i registri immediatamente una volta che ogni file è stato copiato verso la destinazione. Quando si copiano molti file con modalità di registrazione affidabile abilitata nell'attività di copia, è necessario prevedere che la velocità di trasferimento risulti influenzata, poiché sono necessarie operazioni di doppia scrittura per ogni file copiato. Una richiesta passa all'archivio di destinazione e un'altra all'archivio di archiviazione log. Un'attività di copia in modalità migliori sforzi scarica i log con batch di record entro un periodo di tempo e la velocità effettiva della copia sarà molto meno influenzata. La completezza e tempestività della registrazione non sono garantite in questa modalità, poiché c'è la possibilità che l'ultimo batch di eventi di log non siano stati scaricati nel file di log quando un'attività di copia non è riuscita. In questo scenario, non viene registrata la copia di alcuni file nella destinazione. Vero
False (impostazione predefinita)
No
impostazioni di registrazione della posizione Gruppo di proprietà che possono essere usate per specificare il percorso in cui archiviare i log di sessione. No
nomeServizioCollegato 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
percorso 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

Monitoraggio

Output da un'attività di copia

Dopo l'esecuzione completa dell'attività di copia, è possibile visualizzare il percorso dei file di log dall'output di ogni attività Copy esecuzione. È possibile trovare i file di log dal percorso : https://[your-blob-account].blob.core.windows.net/[logFilePath]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].txt. I file di log generati hanno l'estensione .txt e i relativi dati sono in formato CSV.

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

Nota

Quando la enableCopyActivityLog proprietà è impostata su Enabled, i nomi dei file di log vengono generati dal sistema.

Schema del file di log

Nella tabella seguente viene illustrato lo schema di un file di log.

Colonna Descrizione
Marca temporale: Il timestamp quando ADF legge, scrive o ignora l'oggetto.
Level Livello log dell'elemento. Può essere "Avviso" o "Info".
OperationName Attività Copy di ADF comportamento operativo su ogni oggetto. Può essere 'FileRead',' FileWrite', 'FileSkip' o 'TabularRowSkip'.
OperationItem Nomi di file o righe saltate.
Messaggio Altre informazioni da visualizzare se il file è stato letto dall'archivio di origine o scritto nell'archivio di destinazione. Può anche essere il motivo per cui il file o le righe sono state saltate.

Ecco un esempio di file di log:

Timestamp, Level, OperationName, OperationItem, Message
2020-10-19 08:39:13.6688152,Info,FileRead,"sample1.csv","Start to read file: {""Path"":""sample1.csv"",""ItemType"":""File"",""Size"":104857620,""LastModified"":""2020-10-19T08:22:31Z"",""ETag"":""\""0x8D874081F80C01A\"""",""ContentMD5"":""dGKVP8BVIy6AoTtKnt+aYQ=="",""ObjectName"":null}"
2020-10-19 08:39: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=,'." 
2020-10-19 08:40:13.6688152,Info,FileRead,"sample2.csv","Start to read file: {""Path"":""sample2.csv"",""ItemType"":""File"",""Size"":104857620,""LastModified"":""2020-10-19T08:22:31Z"",""ETag"":""\""0x8D874081F80C01A\"""",""ContentMD5"":""dGKVP8BVIy6AoTtKnt+aYQ=="",""ObjectName"":null}"
2020-10-19 08:40:13.9003981,Info,FileWrite,"sample2.csv","Start to write file from source file: sample2.csv."
2020-10-19 08:45:17.6508407,Info,FileRead,"sample2.csv","Complete reading file successfully. "
2020-10-19 08:45:28.7390083,Info,FileWrite,"sample2.csv","Complete writing file from source file: sample2.csv. File is successfully copied."

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 ADF attività Copy sta copiando contemporaneamente. È anche possibile vedere che sample2.csv è stato copiato correttamente dall'archivio di origine a quello di destinazione.

È possibile usare più motori di analisi per analizzare ulteriormente i file di log. Di seguito sono riportati alcuni esempi per usare query SQL per analizzare il file di log importando il file di log csv nel database SQL in cui il nome della tabella può essere SessionLogDemo.

  • Dammi l'elenco di file copiato.
select OperationItem from SessionLogDemo where Message like '%File is successfully copied%'
  • Dammi l'elenco di file copiato all'interno di un intervallo di tempo specifico.
select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%'
  • Dammi un particolare file con il tempo copiato e i metadati.
select * from SessionLogDemo where OperationItem='<file name>'
  • Dammi un elenco di file con i relativi metadati copiati entro un intervallo di tempo.
select * from SessionLogDemo where OperationName='FileRead' and Message like 'Start to read%' and OperationItem in (select OperationItem from SessionLogDemo where TIMESTAMP >= '<start time>' and TIMESTAMP <= '<end time>' and Message like '%File is successfully copied%')
  • Dammi l'elenco dei file ignorati.
select OperationItem from SessionLogDemo where OperationName='FileSkip'
  • Dammi il motivo per cui un file specifico è stato ignorato.
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip'
  • Dammi l'elenco dei file ignorati a causa dello stesso motivo: "il file BLOB non esiste".
select TIMESTAMP, OperationItem, Message from SessionLogDemo where OperationName='FileSkip' and Message like '%UserErrorSourceBlobNotExist%'
  • Dammi il nome del file che richiede il tempo più lungo per essere copiato.
select top 1 OperationItem, CopyDuration=DATEDIFF(SECOND, min(TIMESTAMP), max(TIMESTAMP)) from SessionLogDemo group by OperationItem order by CopyDuration desc

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