Transformation Exists dans le flux de données de mappage

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Les flux de données sont disponibles à la fois dans les pipelines Azure Data Factory et Azure Synapse. Cet article s’applique aux flux de données de mappage. Si vous débutez dans le domaine des transformations, consultez l’article d’introduction Transformer des données avec un flux de données de mappage.

La transformation Exists est une transformation de filtrage de lignes qui vérifie si vos données existent dans une autre source ou un autre flux. Le flux de sortie comprend toutes les lignes du flux de gauche qui existent ou non dans le flux de droite. La transformation Exists est similaire à SQL WHERE EXISTS et SQL WHERE NOT EXISTS.

Configuration

  1. Choisissez le flux de données dont vous vérifiez l’existence dans la liste déroulante Flux de droite.
  2. Indiquez si vous recherchez les données qui existent ou qui n’existent pas avec le paramètre Type d’existence.
  3. Indiquez si vous souhaitez ou non une expression personnalisée.
  4. Choisissez les colonnes clés que vous souhaitez comparer comme conditions d’existence. Par défaut, le flux de données recherche l’équivalence entre une colonne d’un flux et une colonne de l’autre flux. Pour effectuer une comparaison à l’aide d’une valeur calculée, pointez sur la liste déroulante de la colonne, puis sélectionnez Colonne calculée.

Exists settings

Conditions Exists multiples

Pour comparer plusieurs colonnes de chaque flux, ajoutez une nouvelle condition d’existence en cliquant sur l’icône plus en regard d’une ligne existante. Chaque condition supplémentaire est jointe par une instruction « and ». La comparaison de deux colonnes correspond à l’expression suivante :

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

Expression personnalisée

Pour créer une expression de forme libre qui contient des opérateurs autres que « and » et « equals to », cochez la case Expression personnalisée. Entrez une expression personnalisée par le biais du générateur d’expressions de flux de données en cliquant sur la zone bleue.

Exists custom settings

Si vous générez des modèles dynamiques dans vos flux de données en utilisant la « liaison tardive » de colonnes via la dérive de schéma, vous pouvez utiliser la fonction d’expression byName() pour utiliser la transformation exists sans codage en dur (c’est-à-dire liaison précoce) des noms de colonnes. Exemple : toString(byName('ProductNumber','source1')) == toString(byName('ProductNumber','source2'))

Optimisation de la diffusion

Broadcast Join

Dans les transformations de jointure, de recherche et d’existence, si l’un des flux de données ou les deux tiennent dans la mémoire de nœud Worker, vous pouvez optimiser les performances en activant la diffusion. Par défaut, le moteur Spark détermine automatiquement s’il faut diffuser un côté. Pour choisir manuellement le côté à diffuser, sélectionnez Fixe.

Il n’est pas recommandé de désactiver la diffusion à l’aide de l’option Désactivé à moins que vos jointures ne rencontrent des erreurs de délai d’attente.

Script de flux de données

Syntaxe

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

Exemple

L’exemple ci-dessous illustre une transformation Exists nommée checkForChanges, qui utilise le flux de gauche NameNorm2 et le flux de droite TypeConversions. La condition d’existence est l’expression NameNorm2@EmpID == TypeConversions@EmpID && NameNorm2@Region == DimEmployees@Region qui retourne true si les colonnes EMPID et Region de chaque flux correspondent. Comme nous vérifions l’existence, negate a la valeur false. Par ailleurs, comme nous n’autorisons aucune diffusion dans l’onglet Optimiser, broadcast a la valeur 'none'.

Dans l’interface utilisateur, cette transformation se présente comme sur l’image ci-dessous :

Exists example

Le script de flux de données pour cette transformation se trouve dans l’extrait de code ci-dessous :

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

Les transformations Lookup et Join sont similaires.