Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
APLICA-SE A:
Azure Data Factory
Azure Synapse Analytics
Gorjeta
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!
Os fluxos de dados estão disponíveis tanto na Azure Data Factory pipelines como na Azure Synapse Analytics pipelines. Este artigo aplica-se ao mapeamento de fluxos de dados. Se você é novo em transformações, consulte o artigo introdutório Transformar dados usando fluxos de dados de mapeamento.
Use a transformação Alter Row para definir políticas de inserção, exclusão, atualização e atualização em linhas. Você pode adicionar condições de um-para-muitos como expressões. Essas condições devem ser especificadas em ordem de prioridade, pois cada linha é marcada com a política correspondente à primeira expressão correspondente. Cada uma dessas condições pode resultar em uma linha (ou linhas) sendo inserida, atualizada, excluída ou atualizada. O Alter Row pode produzir ações DDL ou DML em seu banco de dados.
As transformações Alter Row operam apenas em coletores de banco de dados, REST ou Azure Cosmos DB em seu fluxo de dados. As ações atribuídas às linhas (inserir, atualizar, excluir, upsert) não ocorrem durante as sessões de depuração. Para aplicar as políticas de alteração de linha nas suas tabelas de banco de dados, execute uma atividade de fluxo de dados num pipeline.
Nota
Uma transformação Alter Row não é necessária para fluxos de dados do Change Data Capture que usam fontes CDC nativas, como SQL Server ou SAP. Nesses casos, o ADF detetará automaticamente o marcador de linha, de modo que as políticas de Alterar Linha sejam desnecessárias.
Especificar uma política de linhas predefinida
Crie uma transformação Alter Row e especifique uma política de linha com uma condição de true(). Cada linha que não corresponde a nenhuma das expressões definidas anteriormente é marcada para a política de linha especificada. Por padrão, cada linha que não corresponde a nenhuma expressão condicional é marcada para Insert.
Nota
Para marcar todas as linhas com uma política, você pode criar uma condição para essa política e especificar a condição como true().
Ver políticas na pré-visualização de dados
Use modo de depuração para visualizar os resultados das suas políticas de alteração de linhas no painel de pré-visualização de dados. Uma visualização de dados de uma transformação de linha alter não produz ações DDL ou DML em relação ao seu destino.
Um ícone para cada política de linha de alteração indica se ocorre uma ação de inserção, atualização, atualização ou exclusão. O cabeçalho superior mostra quantas linhas cada política afeta na pré-visualização.
Permitir alterar políticas de linha no coletor
Para que as políticas de linha de alteração funcionem, o fluxo de dados deve gravar em um banco de dados ou coletor do Azure Cosmos DB. No separador Configurações do dissipador, habilite as políticas de modificação de linha permitidas para esse dissipador.
O comportamento padrão é permitir apenas inserções. Para permitir atualizações, insersões ou exclusões, marque a caixa no destino correspondente a essa condição. Se atualizações, upserts ou exclusões estiverem habilitadas, você deverá especificar quais colunas de chave no coletor corresponderão.
Nota
Se suas inserções, atualizações ou upserts modificarem o esquema da tabela de destino no coletor, o fluxo de dados falhará. Para modificar o esquema de destino em seu banco de dados, escolha Recriar tabela como a ação da tabela. Isto irá eliminar e recriar a sua tabela com a nova definição de esquema.
A transformação do coletor requer uma única chave ou uma série de chaves para identificação de linha exclusiva em seu banco de dados de destino. Para coletores SQL, defina as chaves na guia Configurações do coletor. Para o Azure Cosmos DB, defina a chave de partição nas configurações e também defina o campo "ID" do sistema Azure Cosmos DB no mapeamento do coletor. Para o Azure Cosmos DB, é obrigatório incluir a coluna do sistema "ID" para atualizações, atualizações e exclusões.
Fusão e inserções/atualizações no Banco de Dados SQL do Azure e no Azure Synapse
Os Fluxos de Dados dão suporte a mesclagens no Banco de Dados SQL do Azure e no pool de bancos de dados do Azure Synapse (data warehouse) com a opção upsert.
No entanto, você pode se deparar com cenários em que o seu esquema de banco de dados de destino utilizou a propriedade de identidade de colunas chave. O serviço requer que identifiques as chaves que usas para corresponder aos valores de linha para as atualizações e upserts. Mas se a coluna de destino tiver a propriedade de identidade definida e você estiver usando a política de upsert, o banco de dados de destino não permitirá que você escreva na coluna. Você também pode encontrar erros ao tentar inserir ou atualizar uma coluna de distribuição de uma tabela distribuída.
Aqui estão maneiras de corrigir isso:
Vá para as Configurações de transformação do coletor e defina "Ignorar colunas de chave de escrita". Instrui o serviço a não registrar a coluna que selecionou como valor-chave para o mapeamento.
Se a coluna chave não for a coluna que está causando o problema para colunas de identidade, então poderá usar a opção de pré-processamento SQL da transformação de destino:
SET IDENTITY_INSERT tbl_content ON. Em seguida, desative-o com a propriedade SQL pós-processamento:SET IDENTITY_INSERT tbl_content OFF.Para o caso de identidade e o caso da coluna de distribuição, você pode alternar sua lógica de Upsert para usar uma condição de atualização separada e uma condição de inserção separada usando uma transformação de Divisão Condicional. Dessa forma, podes definir o mapeamento na rota de atualização para ignorar o mapeamento da coluna chave.
Script de fluxo de dados
Sintaxe
<incomingStream>
alterRow(
insertIf(<condition>?),
updateIf(<condition>?),
deleteIf(<condition>?),
upsertIf(<condition>?),
) ~> <alterRowTransformationName>
Exemplo
O exemplo abaixo é uma transformação de linha alter nomeada CleanData que usa um fluxo SpecifyUpsertConditions de entrada e cria três condições de linha de alteração. Na transformação anterior, é calculada uma coluna nomeada alterRowCondition que determina se uma linha é ou não inserida, atualizada ou excluída no banco de dados. Se o valor da coluna tiver um valor de cadeia de caracteres que corresponda à regra de alteração de linha, essa política será aplicada.
Na interface do usuário, essa transformação se parece com a imagem abaixo:
O script de fluxo de dados para essa transformação está no trecho abaixo:
SpecifyUpsertConditions alterRow(insertIf(alterRowCondition == 'insert'),
updateIf(alterRowCondition == 'update'),
deleteIf(alterRowCondition == 'delete')) ~> AlterRow
Conteúdos relacionados
Após a transformação Alter Row, poderá querer transferir seus dados para um armazenamento de dados de destino.