Existe transformação no mapeamento do fluxo de dados

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 no Azure Data Factory e no Azure Synapse 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 um fluxo de dados de mapeamento.

A transformação exists é uma transformação de filtragem de linha que verifica se seus dados existem em outra fonte ou fluxo. O fluxo de saída inclui todas as linhas no fluxo esquerdo que existem ou não existem no fluxo direito. A transformação existente é semelhante a SQL WHERE EXISTS e SQL WHERE NOT EXISTS.

Configuração

  1. Escolha qual fluxo de dados você está verificando a existência no menu suspenso Fluxo à direita.
  2. Especifique se você está procurando que os dados existam ou não existam na configuração Tipo de existência .
  3. Selecione se deseja ou não uma expressão personalizada.
  4. Escolha quais colunas-chave você deseja comparar conforme suas condições existentes. Por padrão, o fluxo de dados procura igualdade entre uma coluna em cada fluxo. Para comparar através de um valor calculado, passe o mouse sobre a lista suspensa de colunas e selecione Coluna computada.

Exists settings

Existem várias condições

Para comparar várias colunas de cada fluxo, adicione uma nova condição existente clicando no ícone de adição ao lado de uma linha existente. A cada condição adicional junta-se uma instrução "e". Comparar duas colunas é o mesmo que a seguinte expressão:

source1@column1 == source2@column1 && source1@column2 == source2@column2

Expressão personalizada

Para criar uma expressão de forma livre que contenha operadores diferentes de "e" e "igual a", selecione o campo Expressão personalizada. Insira uma expressão personalizada através do construtor de expressões de fluxo de dados clicando na caixa azul.

Exists custom settings

Se você estiver criando padrões dinâmicos em seus fluxos de dados usando "ligação tardia" de colunas via desvio de esquema, poderá usar a função de expressão para usar a byName() transformação existente sem codificar (ou seja, vincular antecipadamente) os nomes das colunas. Exemplo: toString(byName('ProductNumber','source1')) == toString(byName('ProductNumber','source2'))

Otimização de transmissão

Broadcast Join

Na transformação de junções, pesquisas e existências, se um ou ambos os fluxos de dados se ajustarem à memória do nó de trabalho, você poderá otimizar o desempenho habilitando a Difusão. Por padrão, o mecanismo de ignição decidirá automaticamente se transmite ou não um lado. Para escolher manualmente o lado da transmissão, selecione Fixo.

Não é recomendável desativar a transmissão por meio da opção Desativado, a menos que suas junções estejam enfrentando erros de tempo limite.

Script de fluxo de dados

Sintaxe

<leftStream>, <rightStream>
    exists(
        <conditionalExpression>,
        negate: { true | false },
        broadcast: { 'auto' | 'left' | 'right' | 'both' | 'off' }
    ) ~> <existsTransformationName>

Exemplo

O exemplo abaixo é uma transformação existente chamada checkForChanges que leva fluxo esquerdo e fluxo NameNorm2TypeConversionsdireito. A condição exists é a expressão NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region que retorna true se as colunas e Region em EMPID cada fluxo corresponderem. Como estamos verificando a existência, negate é falso. Não estamos habilitando nenhuma transmissão na guia otimizar, então broadcast tem valor 'none'.

Na experiência da interface do usuário, essa transformação se parece com a imagem abaixo:

Exists example

O script de fluxo de dados para essa transformação está no trecho abaixo:

NameNorm2, TypeConversions
    exists(
        NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region,
	    negate:false,
	    broadcast: 'auto'
    ) ~> checkForChanges

Transformações semelhantes são Pesquisa e Associação.