evento
31/03, 23 - 2/04, 23
O maior evento de aprendizagem de Malha, Power BI e SQL. 31 de março a 2 de abril. Use o código FABINSIDER para economizar $400.
Registe-se hoje mesmoEste browser já não é suportado.
Atualize para o Microsoft Edge para tirar partido das mais recentes funcionalidades, atualizações de segurança e de suporte técnico.
APLICA-SE A: Azure Data Factory
Azure Synapse Analytics
Sugestão
Experimente o Data Factory no Microsoft Fabric, uma solução de análise tudo-em-um para empresas. O Microsoft Fabric abrange tudo, desde a movimentação de dados até ciência de dados, análises em tempo real, business intelligence e relatórios. Saiba como iniciar uma nova avaliação gratuitamente!
Quando você copia dados do armazenamento de origem para o de destino, a atividade de cópia fornece um certo nível de tolerância a falhas para evitar a interrupção de falhas no meio da movimentação de dados. Por exemplo, você está copiando milhões de linhas do armazenamento de origem para o de destino, onde uma chave primária foi criada no banco de dados de destino, mas o banco de dados de origem não tem nenhuma chave primária definida. Quando você copiar linhas duplicadas da origem para o destino, você atingirá a falha de violação de PK no banco de dados de destino. Neste momento, a atividade de cópia oferece duas maneiras de lidar com esses erros:
O serviço suporta os seguintes cenários de tolerância a falhas ao copiar arquivos binários. Você pode optar por cancelar a atividade de cópia ou continuar a copiar o restante nos seguintes cenários:
Para configurar a tolerância a falhas em uma atividade de cópia em um pipeline com interface do usuário, conclua as seguintes etapas:
Se você ainda não criou uma atividade Copiar para seu pipeline, procure Copiar no painel Atividades do pipeline e arraste uma atividade Copiar Dados para a tela do pipeline.
Selecione a nova atividade Copiar dados na tela, se ainda não estiver selecionada, e sua guia Configurações , para configurar a tolerância a falhas.
Ao copiar arquivos binários entre armazenamentos de armazenamento, você pode habilitar a tolerância a falhas da seguinte maneira:
{
"name": "CopyActivityFaultTolerance",
"type": "Copy",
"typeProperties": {
"source": {
"type": "BinarySource",
"storeSettings": {
"type": "AzureDataLakeStoreReadSettings",
"recursive": true
}
},
"sink": {
"type": "BinarySink",
"storeSettings": {
"type": "AzureDataLakeStoreWriteSettings"
}
},
"skipErrorFile": {
"fileMissing": true,
"fileForbidden": true,
"dataInconsistency": true,
"invalidFileName": true
},
"validateDataConsistency": true,
"logSettings": {
"enableCopyActivityLog": true,
"copyActivityLogSettings": {
"logLevel": "Warning",
"enableReliableLogging": false
},
"logLocationSettings": {
"linkedServiceName": {
"referenceName": "ADLSGen2",
"type": "LinkedServiceReference"
},
"path": "sessionlog/"
}
}
}
}
Property | Description | Valores permitidos | Necessário |
---|---|---|---|
skipErrorFile | Um grupo de propriedades para especificar os tipos de falhas que você deseja ignorar durante a movimentação de dados. | Não | |
arquivoAusente | Um dos pares chave-valor dentro do conjunto de propriedades skipErrorFile para determinar se você deseja ignorar arquivos que estão sendo excluídos por outros aplicativos no momento em que o serviço está executando a operação de cópia. -True: você quer copiar o resto ignorando os arquivos que estão sendo excluídos por outros aplicativos. - Falso: você deseja abortar a atividade de cópia uma vez que todos os arquivos estão sendo excluídos do armazenamento de origem no meio da movimentação de dados. Lembre-se de que essa propriedade está definida como true como padrão. |
True(padrão) False |
Não |
arquivoProibido | Um dos pares chave-valor dentro do pacote de propriedades skipErrorFile para determinar se você deseja ignorar os arquivos específicos, quando as ACLs desses arquivos ou pastas exigem um nível de permissão mais alto do que a conexão configurada. -True: você quer copiar o resto ignorando os arquivos. - Falso: você deseja abortar a atividade de cópia uma vez obtendo o problema de permissão em pastas ou arquivos. |
Verdadeiro False(padrão) |
Não |
inconsistência de dados | Um dos pares chave-valor no saco de propriedades skipErrorFile para determinar se você deseja ignorar os dados inconsistentes entre o armazenamento de origem e de destino. -True: você deseja copiar o resto ignorando dados inconsistentes. - Falso: você deseja abortar a atividade de cópia uma vez que dados inconsistentes sejam encontrados. Lembre-se de que essa propriedade só é válida quando você define validateDataConsistency como True. |
Verdadeiro False(padrão) |
Não |
Nome do arquivo inválido | Um dos pares chave-valor dentro do saco de propriedades skipErrorFile para determinar se você deseja ignorar os arquivos específicos, quando os nomes de arquivo são inválidos para o repositório de destino. -True: você deseja copiar o resto ignorando os arquivos com nomes de arquivo inválidos. - False: você deseja abortar a atividade de cópia uma vez que todos os arquivos tenham nomes de arquivo inválidos. Lembre-se de que essa propriedade funciona ao copiar arquivos binários de qualquer armazenamento de armazenamento para o ADLS Gen2 ou ao copiar arquivos binários do AWS S3 apenas para qualquer armazenamento de armazenamento. |
Verdadeiro False(padrão) |
Não |
logSettings | Um grupo de propriedades que podem ser especificadas quando você deseja registrar os nomes de objeto ignorados. | Não | |
linkedServiceName | O serviço vinculado do Armazenamento de Blobs do Azure ou do Azure Data Lake Storage Gen2 para armazenar os arquivos de log de sessão. | Os nomes de um AzureBlobStorage ou AzureBlobFS tipo de serviço vinculado, que se refere à instância que você usa para armazenar o arquivo de log. |
Não |
path | O caminho dos arquivos de log. | Especifique o caminho que você usa para armazenar os arquivos de log. Se você não fornecer um caminho, o serviço criará um contêiner para você. | Não |
Nota
A seguir estão os pré-requisitos para habilitar a tolerância a falhas na atividade de cópia ao copiar arquivos binários. Para ignorar arquivos específicos quando eles estão sendo excluídos do armazenamento de origem:
Para ignorar arquivos específicos quando seu acesso é proibido do armazenamento de origem:
Para ignorar arquivos específicos quando se verifica que eles são inconsistentes entre o armazenamento de origem e de destino:
Você pode obter o número de arquivos que estão sendo lidos, gravados e ignorados através da saída de cada atividade de cópia executada.
"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"
}
}
Se você configurar para registrar os nomes de arquivo ignorados, poderá encontrar o arquivo de log neste caminho: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv
.
Os arquivos de log devem ser os arquivos csv. O esquema do arquivo de log é o seguinte:
Column | Description |
---|---|
Carimbo de Data/Hora | O carimbo de data/hora quando o arquivo foi ignorado. |
Level | O nível de log deste item. Ele estará no nível 'Aviso' para o item que mostra o arquivo pulando. |
OperationName | Copie o comportamento operacional da atividade em cada arquivo. Será 'FileSkip' para especificar o arquivo a ser ignorado. |
OperationItem | Os nomes de arquivo a serem ignorados. |
Mensagem | Mais informações para ilustrar por que o arquivo está sendo ignorado. |
O exemplo de um arquivo de log é o seguinte:
Timestamp,Level,OperationName,OperationItem,Message
2020-03-24 05:35:41.0209942,Warning,FileSkip,"bigfile.csv","File is skipped after read 322961408 bytes: ErrorCode=UserErrorSourceBlobNotExist,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The required Blob is missing. ContainerName: https://transferserviceonebox.blob.core.windows.net/skipfaultyfile, path: bigfile.csv.,Source=Microsoft.DataTransfer.ClientLibrary,'."
2020-03-24 05:38:41.2595989,Warning,FileSkip,"3_nopermission.txt","File is skipped after read 0 bytes: ErrorCode=AdlsGen2OperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=ADLS Gen2 operation failed for: Operation returned an invalid status code 'Forbidden'. Account: 'adlsgen2perfsource'. FileSystem: 'skipfaultyfilesforbidden'. Path: '3_nopermission.txt'. ErrorCode: 'AuthorizationPermissionMismatch'. Message: 'This request is not authorized to perform this operation using this permission.'. RequestId: '35089f5d-101f-008c-489e-01cce4000000'..,Source=Microsoft.DataTransfer.ClientLibrary,''Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Operation returned an invalid status code 'Forbidden',Source=,''Type=Microsoft.Azure.Storage.Data.Models.ErrorSchemaException,Message='Type=Microsoft.Azure.Storage.Data.Models.ErrorSchemaException,Message=Operation returned an invalid status code 'Forbidden',Source=Microsoft.DataTransfer.ClientLibrary,',Source=Microsoft.DataTransfer.ClientLibrary,'."
A partir do log acima, você pode ver bigfile.csv foi ignorado devido a outro aplicativo excluído este arquivo quando o serviço estava copiando-o. E 3_nopermission.txt foi ignorado porque o serviço não tem permissão para acessá-lo devido a um problema de permissão.
A atividade de cópia suporta três cenários para detetar, ignorar e registrar dados tabulares incompatíveis:
Incompatibilidade entre o tipo de dados de origem e o tipo nativo do coletor.
Por exemplo: copie dados de um arquivo CSV no armazenamento de Blob para um banco de dados SQL com uma definição de esquema que contenha três colunas do tipo INT. As linhas do arquivo CSV que contêm dados numéricos, como 123.456.789, são copiadas com êxito para o repositório de coletores. No entanto, as linhas que contêm valores não numéricos, como 123.456, abc são detetadas como incompatíveis e são ignoradas.
Incompatibilidade no número de colunas entre a origem e o coletor.
Por exemplo: copie dados de um arquivo CSV no armazenamento de Blob para um banco de dados SQL com uma definição de esquema que contém seis colunas. As linhas do arquivo CSV que contêm seis colunas são copiadas com êxito para o repositório de coletores. As linhas do arquivo CSV que contêm mais de seis colunas são detetadas como incompatíveis e ignoradas.
Violação de chave primária ao gravar no SQL Server/Banco de Dados SQL do Azure/Azure Cosmos DB.
Por exemplo: copie dados de um servidor SQL para um banco de dados SQL. Uma chave primária é definida no banco de dados SQL do coletor, mas nenhuma chave primária é definida no servidor SQL de origem. As linhas duplicadas que existem na origem não podem ser copiadas para o coletor. A atividade de cópia copia apenas a primeira linha dos dados de origem para o coletor. As linhas de origem subsequentes que contêm o valor de chave primária duplicado são detetadas como incompatíveis e ignoradas.
Nota
O exemplo a seguir fornece uma definição JSON para configurar ignorar as linhas incompatíveis na atividade de cópia:
"typeProperties": {
"source": {
"type": "AzureSqlSource"
},
"sink": {
"type": "AzureSqlSink"
},
"enableSkipIncompatibleRow": true,
"logSettings": {
"enableCopyActivityLog": true,
"copyActivityLogSettings": {
"logLevel": "Warning",
"enableReliableLogging": false
},
"logLocationSettings": {
"linkedServiceName": {
"referenceName": "ADLSGen2",
"type": "LinkedServiceReference"
},
"path": "sessionlog/"
}
}
},
Property | Description | Valores permitidos | Necessário |
---|---|---|---|
enableSkipIncompatibleRow | Especifica se as linhas incompatíveis devem ser ignoradas durante a cópia ou não. | True Falso (predefinição) |
Não |
logSettings | Um grupo de propriedades que podem ser especificadas quando você deseja registrar as linhas incompatíveis. | Não | |
linkedServiceName | O serviço vinculado do Armazenamento de Blobs do Azure ou do Azure Data Lake Storage Gen2 para armazenar o log que contém as linhas ignoradas. | Os nomes de um AzureBlobStorage ou AzureBlobFS tipo de serviço vinculado, que se refere à instância que você usa para armazenar o arquivo de log. |
Não |
path | O caminho dos arquivos de log que contém as linhas ignoradas. | Especifique o caminho que você deseja usar para registrar os dados incompatíveis. Se você não fornecer um caminho, o serviço criará um contêiner para você. | Não |
Após a conclusão da execução da atividade de cópia, você poderá ver o número de linhas ignoradas na saída da atividade de cópia:
"output": {
"dataRead": 95,
"dataWritten": 186,
"rowsCopied": 9,
"rowsSkipped": 2,
"copyDuration": 16,
"throughput": 0.01,
"logFilePath": "myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
"errors": []
},
Se você configurar para registrar as linhas incompatíveis, poderá encontrar o arquivo de log neste caminho: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv
.
Os arquivos de log serão os arquivos csv. O esquema do arquivo de log é o seguinte:
Column | Description |
---|---|
Carimbo de Data/Hora | O carimbo de data/hora quando as linhas incompatíveis foram ignoradas |
Level | O nível de log deste item. Estará no nível 'Aviso' se este item mostrar as linhas ignoradas |
OperationName | Copie o comportamento operacional da atividade em cada linha. Será 'TabularRowSkip' para especificar que a linha incompatível específica foi ignorada |
OperationItem | As linhas ignoradas do armazenamento de dados de origem. |
Mensagem | Mais informações para ilustrar o porquê da incompatibilidade desta linha em particular. |
Um exemplo do conteúdo do arquivo de log é o seguinte:
Timestamp, Level, OperationName, OperationItem, Message
2020-02-26 06:22:32.2586581, Warning, TabularRowSkip, """data1"", ""data2"", ""data3""," "Column 'Prop_2' contains an invalid value 'data3'. Cannot convert 'data3' to type 'DateTime'."
2020-02-26 06:22:33.2586351, Warning, TabularRowSkip, """data4"", ""data5"", ""data6"",", "Violation of PRIMARY KEY constraint 'PK_tblintstrdatetimewithpk'. Cannot insert duplicate key in object 'dbo.tblintstrdatetimewithpk'. The duplicate key value is (data4)."
No arquivo de log de exemplo acima, você pode ver uma linha "data1, data2, data3" foi ignorada devido a um problema de conversão de tipo do armazenamento de origem para o destino. Outra linha "data4, data5, data6" foi ignorada devido ao problema de violação de PK do armazenamento de origem para o destino.
A abordagem a seguir é a maneira herdada de habilitar a tolerância a falhas para copiar apenas dados tabulares. Se você estiver criando um novo pipeline ou atividade, você é encorajado a começar a partir daqui .
O exemplo a seguir fornece uma definição JSON para configurar ignorar as linhas incompatíveis na atividade de cópia:
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "SqlSink",
},
"enableSkipIncompatibleRow": true,
"redirectIncompatibleRowSettings": {
"linkedServiceName": {
"referenceName": "<Azure Storage or Data Lake Store linked service>",
"type": "LinkedServiceReference"
},
"path": "redirectcontainer/erroroutput"
}
}
Property | Description | Valores permitidos | Necessário |
---|---|---|---|
enableSkipIncompatibleRow | Especifica se as linhas incompatíveis devem ser ignoradas durante a cópia ou não. | True Falso (predefinição) |
Não |
redirectIncompatibleRowSettings | Um grupo de propriedades que podem ser especificadas quando você deseja registrar as linhas incompatíveis. | Não | |
linkedServiceName | O serviço vinculado do Armazenamento do Azure ou do Repositório Azure Data Lake para armazenar o log que contém as linhas ignoradas. | Os nomes de um AzureStorage ou AzureDataLakeStore tipo de serviço vinculado, que se refere à instância que você deseja usar para armazenar o arquivo de log. |
Não |
path | O caminho do arquivo de log que contém as linhas ignoradas. | Especifique o caminho que você deseja usar para registrar os dados incompatíveis. Se você não fornecer um caminho, o serviço criará um contêiner para você. | Não |
Após a conclusão da execução da atividade de cópia, você poderá ver o número de linhas ignoradas na saída da atividade de cópia:
"output": {
"dataRead": 95,
"dataWritten": 186,
"rowsCopied": 9,
"rowsSkipped": 2,
"copyDuration": 16,
"throughput": 0.01,
"redirectRowPath": "https://myblobstorage.blob.core.windows.net//myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
"errors": []
},
Se você configurar para registrar as linhas incompatíveis, poderá encontrar o arquivo de log neste caminho: https://[your-blob-account].blob.core.windows.net/[path-if-configured]/[copy-activity-run-id]/[auto-generated-GUID].csv
.
Os arquivos de log só podem ser os arquivos csv. Os dados originais que estão sendo ignorados serão registrados com vírgula como delimitador de coluna, se necessário. Adicionamos mais duas colunas "ErrorCode" e "ErrorMessage" além dos dados de origem originais no arquivo de log, onde você pode ver a causa raiz da incompatibilidade. O ErrorCode e o ErrorMessage serão citados entre aspas duplas.
Um exemplo do conteúdo do arquivo de log é o seguinte:
data1, data2, data3, "UserErrorInvalidDataValue", "Column 'Prop_2' contains an invalid value 'data3'. Cannot convert 'data3' to type 'DateTime'."
data4, data5, data6, "2627", "Violation of PRIMARY KEY constraint 'PK_tblintstrdatetimewithpk'. Cannot insert duplicate key in object 'dbo.tblintstrdatetimewithpk'. The duplicate key value is (data4)."
Veja os outros artigos da atividade de cópia:
evento
31/03, 23 - 2/04, 23
O maior evento de aprendizagem de Malha, Power BI e SQL. 31 de março a 2 de abril. Use o código FABINSIDER para economizar $400.
Registe-se hoje mesmoFormação
Percurso de aprendizagem
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Documentação
Mapeamento de esquema e tipo de dados na atividade de cópia - Azure Data Factory & Azure Synapse
Saiba como a atividade de cópia no Azure Data Factory e nos pipelines do Azure Synapse Analytics mapeia esquemas e tipos de dados de dados de origem para dados de coletor.
Atividade Copiar - Azure Data Factory & Azure Synapse
Saiba mais sobre a atividade de cópia no Azure Data Factory e no Azure Synapse Analytics. Você pode usá-lo para copiar dados de um armazenamento de dados de origem suportado para um armazenamento de dados de coletor suportado.
Monitorizar a atividade de cópia - Azure Data Factory & Azure Synapse
Saiba como monitorar a execução da atividade de cópia no Azure Data Factory e no Azure Synapse Analytics.